Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
laravel-mongodb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sinan
laravel-mongodb
Commits
296fac28
Commit
296fac28
authored
Aug 30, 2016
by
Jens Segers
Committed by
GitHub
Aug 30, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #930 from pi0/UnitTests
5.3 UnitTests
parents
8e69e056
fb81b2e8
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
119 additions
and
78 deletions
+119
-78
.travis.yml
.travis.yml
+1
-5
Builder.php
src/Jenssegers/Mongodb/Eloquent/Builder.php
+3
-1
Model.php
src/Jenssegers/Mongodb/Eloquent/Model.php
+12
-0
Builder.php
src/Jenssegers/Mongodb/Query/Builder.php
+11
-15
MongoQueue.php
src/Jenssegers/Mongodb/Queue/MongoQueue.php
+12
-3
BelongsToMany.php
src/Jenssegers/Mongodb/Relations/BelongsToMany.php
+20
-0
Blueprint.php
src/Jenssegers/Mongodb/Schema/Blueprint.php
+13
-7
EmbeddedRelationsTest.php
tests/EmbeddedRelationsTest.php
+35
-35
ModelTest.php
tests/ModelTest.php
+2
-2
QueryBuilderTest.php
tests/QueryBuilderTest.php
+7
-7
QueueTest.php
tests/QueueTest.php
+1
-1
RelationsTest.php
tests/RelationsTest.php
+2
-2
No files found.
.travis.yml
View file @
296fac28
language
:
php
language
:
php
php
:
php
:
-
5.5
-
5.6
-
5.6
-
7
-
7
-
hhvm
matrix
:
matrix
:
fast_finish
:
true
fast_finish
:
true
allow_failures
:
-
php
:
hhvm
sudo
:
false
sudo
:
false
...
@@ -35,4 +31,4 @@ script:
...
@@ -35,4 +31,4 @@ script:
-
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
-
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
after_success
:
after_success
:
-
sh -c '
if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then php vendor/bin/coveralls -v; fi;
'
-
sh -c '
php vendor/bin/coveralls -v
'
src/Jenssegers/Mongodb/Eloquent/Builder.php
View file @
296fac28
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
use
Illuminate\Database\Eloquent\Builder
as
EloquentBuilder
;
use
Illuminate\Database\Eloquent\Builder
as
EloquentBuilder
;
use
Illuminate\Database\Eloquent\Relations\Relation
;
use
Illuminate\Database\Eloquent\Relations\Relation
;
use
Illuminate\Support\Collection
;
use
MongoDB\Driver\Cursor
;
use
MongoDB\Driver\Cursor
;
use
MongoDB\Model\BSONDocument
;
use
MongoDB\Model\BSONDocument
;
...
@@ -167,9 +168,10 @@ class Builder extends EloquentBuilder
...
@@ -167,9 +168,10 @@ class Builder extends EloquentBuilder
$query
=
$hasQuery
->
getQuery
();
$query
=
$hasQuery
->
getQuery
();
// Get the number of related objects for each possible parent.
// Get the number of related objects for each possible parent.
$relations
=
$query
->
pluck
(
$relation
->
getHasCompareKey
());
$relationCount
=
array_count_values
(
array_map
(
function
(
$id
)
{
$relationCount
=
array_count_values
(
array_map
(
function
(
$id
)
{
return
(
string
)
$id
;
// Convert Back ObjectIds to Strings
return
(
string
)
$id
;
// Convert Back ObjectIds to Strings
},
$query
->
pluck
(
$relation
->
getHasCompareKey
()
)));
},
is_array
(
$relations
)
?
$relations
:
$relations
->
toArray
(
)));
// Remove unwanted related objects based on the operator and count.
// Remove unwanted related objects based on the operator and count.
$relationCount
=
array_filter
(
$relationCount
,
function
(
$counted
)
use
(
$count
,
$operator
)
{
$relationCount
=
array_filter
(
$relationCount
,
function
(
$counted
)
use
(
$count
,
$operator
)
{
...
...
src/Jenssegers/Mongodb/Eloquent/Model.php
View file @
296fac28
...
@@ -244,6 +244,18 @@ abstract class Model extends BaseModel
...
@@ -244,6 +244,18 @@ abstract class Model extends BaseModel
// Get the relation results.
// Get the relation results.
return
$this
->
getRelationshipFromMethod
(
$key
,
$camelKey
);
return
$this
->
getRelationshipFromMethod
(
$key
,
$camelKey
);
}
}
if
(
$relations
instanceof
Relation
)
{
// If the key already exists in the relationships array, it just means the
// relationship has already been loaded, so we'll just return it out of
// here because there is no need to query within the relations twice.
if
(
array_key_exists
(
$key
,
$this
->
relations
)
&&
$this
->
relations
[
$key
]
!=
null
)
{
return
$this
->
relations
[
$key
];
}
// Get the relation results.
return
$this
->
getRelationshipFromMethod
(
$key
,
$camelKey
);
}
}
}
}
}
...
...
src/Jenssegers/Mongodb/Query/Builder.php
View file @
296fac28
...
@@ -577,7 +577,16 @@ class Builder extends BaseBuilder
...
@@ -577,7 +577,16 @@ class Builder extends BaseBuilder
{
{
$results
=
$this
->
get
(
is_null
(
$key
)
?
[
$column
]
:
[
$column
,
$key
]);
$results
=
$this
->
get
(
is_null
(
$key
)
?
[
$column
]
:
[
$column
,
$key
]);
return
$this
->
useCollections
?
$results
->
pluck
(
$column
,
$key
)
:
Arr
::
pluck
(
$results
,
$column
,
$key
);
// Convert ObjectID's to strings
if
(
$key
==
'_id'
)
{
$results
=
$results
->
map
(
function
(
$item
)
{
$item
[
'_id'
]
=
(
string
)
$item
[
'_id'
];
return
$item
;
});
}
$p
=
Arr
::
pluck
(
$results
,
$column
,
$key
);
return
$this
->
useCollections
?
new
Collection
(
$p
)
:
$p
;
}
}
/**
/**
...
@@ -632,20 +641,7 @@ class Builder extends BaseBuilder
...
@@ -632,20 +641,7 @@ class Builder extends BaseBuilder
*/
*/
public
function
lists
(
$column
,
$key
=
null
)
public
function
lists
(
$column
,
$key
=
null
)
{
{
if
(
$key
==
'_id'
)
{
return
$this
->
pluck
(
$column
,
$key
);
$results
=
new
Collection
(
$this
->
get
([
$column
,
$key
]));
// Convert ObjectID's to strings so that lists can do its work.
$results
=
$results
->
map
(
function
(
$item
)
{
$item
[
'_id'
]
=
(
string
)
$item
[
'_id'
];
return
$item
;
});
return
$results
->
pluck
(
$column
,
$key
)
->
all
();
}
return
parent
::
pluck
(
$column
,
$key
);
}
}
/**
/**
...
...
src/Jenssegers/Mongodb/Queue/MongoQueue.php
View file @
296fac28
...
@@ -79,12 +79,21 @@ class MongoQueue extends DatabaseQueue
...
@@ -79,12 +79,21 @@ class MongoQueue extends DatabaseQueue
*/
*/
protected
function
releaseJobsThatHaveBeenReservedTooLong
(
$queue
)
protected
function
releaseJobsThatHaveBeenReservedTooLong
(
$queue
)
{
{
$expired
=
Carbon
::
now
()
->
subSeconds
(
$this
->
expire
)
->
getTimestamp
();
$expiration
=
Carbon
::
now
()
->
subSeconds
(
$this
->
expire
)
->
getTimestamp
();
$now
=
time
();
$reserved
=
$this
->
database
->
collection
(
$this
->
table
)
$reserved
=
$this
->
database
->
collection
(
$this
->
table
)
->
where
(
'queue'
,
$this
->
getQueue
(
$queue
))
->
where
(
'queue'
,
$this
->
getQueue
(
$queue
))
->
where
(
'reserved'
,
1
)
->
where
(
function
(
$query
)
use
(
$expiration
,
$now
)
{
->
where
(
'reserved_at'
,
'<='
,
$expired
)
->
get
();
// Check for available jobs
$query
->
where
(
function
(
$query
)
use
(
$now
)
{
$query
->
whereNull
(
'reserved_at'
);
$query
->
where
(
'available_at'
,
'<='
,
$now
);
});
// Check for jobs that are reserved but have expired
$query
->
orWhere
(
'reserved_at'
,
'<='
,
$expiration
);
})
->
get
();
foreach
(
$reserved
as
$job
)
{
foreach
(
$reserved
as
$job
)
{
$attempts
=
$job
[
'attempts'
]
+
1
;
$attempts
=
$job
[
'attempts'
]
+
1
;
...
...
src/Jenssegers/Mongodb/Relations/BelongsToMany.php
View file @
296fac28
...
@@ -286,4 +286,24 @@ class BelongsToMany extends EloquentBelongsToMany
...
@@ -286,4 +286,24 @@ class BelongsToMany extends EloquentBelongsToMany
{
{
return
$this
->
foreignKey
;
return
$this
->
foreignKey
;
}
}
/**
* Format the sync list so that it is keyed by ID. (Legacy Support)
* The original function has been renamed to formatRecordsList since Laravel 5.3
*
* @deprecated
* @param array $records
* @return array
*/
protected
function
formatSyncList
(
array
$records
)
{
$results
=
[];
foreach
(
$records
as
$id
=>
$attributes
)
{
if
(
!
is_array
(
$attributes
))
{
list
(
$id
,
$attributes
)
=
[
$attributes
,
[]];
}
$results
[
$id
]
=
$attributes
;
}
return
$results
;
}
}
}
src/Jenssegers/Mongodb/Schema/Blueprint.php
View file @
296fac28
...
@@ -44,9 +44,11 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
...
@@ -44,9 +44,11 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
*
*
* @param string|array $columns
* @param string|array $columns
* @param array $options
* @param array $options
* @param string $name
* @param string|null $algorithm
* @return Blueprint
* @return Blueprint
*/
*/
public
function
index
(
$columns
=
null
,
$options
=
[])
public
function
index
(
$columns
=
null
,
$
name
=
null
,
$algorithm
=
null
,
$
options
=
[])
{
{
$columns
=
$this
->
fluent
(
$columns
);
$columns
=
$this
->
fluent
(
$columns
);
...
@@ -71,10 +73,12 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
...
@@ -71,10 +73,12 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
* Specify the primary key(s) for the table.
* Specify the primary key(s) for the table.
*
*
* @param string|array $columns
* @param string|array $columns
* @param string $name
* @param string|null $algorithm
* @param array $options
* @param array $options
* @return \Illuminate\Support\Fluent
* @return \Illuminate\Support\Fluent
*/
*/
public
function
primary
(
$columns
=
null
,
$options
=
[])
public
function
primary
(
$columns
=
null
,
$
name
=
null
,
$algorithm
=
null
,
$
options
=
[])
{
{
return
$this
->
unique
(
$columns
,
$options
);
return
$this
->
unique
(
$columns
,
$options
);
}
}
...
@@ -112,16 +116,18 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
...
@@ -112,16 +116,18 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
* Specify a unique index for the collection.
* Specify a unique index for the collection.
*
*
* @param string|array $columns
* @param string|array $columns
* @param string $name
* @param string|null $algorithm
* @param array $options
* @param array $options
* @return Blueprint
* @return Blueprint
*/
*/
public
function
unique
(
$columns
=
null
,
$options
=
[])
public
function
unique
(
$columns
=
null
,
$
name
=
null
,
$algorithm
=
null
,
$
options
=
[])
{
{
$columns
=
$this
->
fluent
(
$columns
);
$columns
=
$this
->
fluent
(
$columns
);
$options
[
'unique'
]
=
true
;
$options
[
'unique'
]
=
true
;
$this
->
index
(
$columns
,
$options
);
$this
->
index
(
$columns
,
null
,
null
,
$options
);
return
$this
;
return
$this
;
}
}
...
@@ -136,7 +142,7 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
...
@@ -136,7 +142,7 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
{
{
$columns
=
$this
->
fluent
(
$columns
);
$columns
=
$this
->
fluent
(
$columns
);
$this
->
index
(
$columns
,
[
'background'
=>
true
]);
$this
->
index
(
$columns
,
null
,
null
,
[
'background'
=>
true
]);
return
$this
;
return
$this
;
}
}
...
@@ -154,7 +160,7 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
...
@@ -154,7 +160,7 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
$options
[
'sparse'
]
=
true
;
$options
[
'sparse'
]
=
true
;
$this
->
index
(
$columns
,
$options
);
$this
->
index
(
$columns
,
null
,
null
,
$options
);
return
$this
;
return
$this
;
}
}
...
@@ -171,7 +177,7 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
...
@@ -171,7 +177,7 @@ class Blueprint extends \Illuminate\Database\Schema\Blueprint
{
{
$columns
=
$this
->
fluent
(
$columns
);
$columns
=
$this
->
fluent
(
$columns
);
$this
->
index
(
$columns
,
[
'expireAfterSeconds'
=>
$seconds
]);
$this
->
index
(
$columns
,
null
,
null
,
[
'expireAfterSeconds'
=>
$seconds
]);
return
$this
;
return
$this
;
}
}
...
...
tests/EmbeddedRelationsTest.php
View file @
296fac28
...
@@ -31,7 +31,7 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -31,7 +31,7 @@ class EmbeddedRelationsTest extends TestCase
$this
->
assertNotNull
(
$user
->
addresses
);
$this
->
assertNotNull
(
$user
->
addresses
);
$this
->
assertInstanceOf
(
'Illuminate\Database\Eloquent\Collection'
,
$user
->
addresses
);
$this
->
assertInstanceOf
(
'Illuminate\Database\Eloquent\Collection'
,
$user
->
addresses
);
$this
->
assertEquals
([
'London'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$this
->
assertInstanceOf
(
'DateTime'
,
$address
->
created_at
);
$this
->
assertInstanceOf
(
'DateTime'
,
$address
->
created_at
);
$this
->
assertInstanceOf
(
'DateTime'
,
$address
->
updated_at
);
$this
->
assertInstanceOf
(
'DateTime'
,
$address
->
updated_at
);
$this
->
assertNotNull
(
$address
->
_id
);
$this
->
assertNotNull
(
$address
->
_id
);
...
@@ -43,7 +43,7 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -43,7 +43,7 @@ class EmbeddedRelationsTest extends TestCase
$address
=
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Paris'
]));
$address
=
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Paris'
]));
$user
=
User
::
find
(
$user
->
_id
);
$user
=
User
::
find
(
$user
->
_id
);
$this
->
assertEquals
([
'London'
,
'Paris'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
,
'Paris'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$address
->
setEventDispatcher
(
$events
=
Mockery
::
mock
(
'Illuminate\Events\Dispatcher'
));
$address
->
setEventDispatcher
(
$events
=
Mockery
::
mock
(
'Illuminate\Events\Dispatcher'
));
$events
->
shouldReceive
(
'until'
)
->
once
()
->
with
(
'eloquent.saving: '
.
get_class
(
$address
),
$address
)
->
andReturn
(
true
);
$events
->
shouldReceive
(
'until'
)
->
once
()
->
with
(
'eloquent.saving: '
.
get_class
(
$address
),
$address
)
->
andReturn
(
true
);
...
@@ -59,10 +59,10 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -59,10 +59,10 @@ class EmbeddedRelationsTest extends TestCase
$this
->
assertEquals
(
2
,
count
(
$user
->
addresses
()
->
get
()));
$this
->
assertEquals
(
2
,
count
(
$user
->
addresses
()
->
get
()));
$this
->
assertEquals
(
2
,
$user
->
addresses
->
count
());
$this
->
assertEquals
(
2
,
$user
->
addresses
->
count
());
$this
->
assertEquals
(
2
,
$user
->
addresses
()
->
count
());
$this
->
assertEquals
(
2
,
$user
->
addresses
()
->
count
());
$this
->
assertEquals
([
'London'
,
'New York'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
,
'New York'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$freshUser
=
User
::
find
(
$user
->
_id
);
$freshUser
=
User
::
find
(
$user
->
_id
);
$this
->
assertEquals
([
'London'
,
'New York'
],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
,
'New York'
],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
$address
=
$user
->
addresses
->
first
();
$address
=
$user
->
addresses
->
first
();
$this
->
assertEquals
(
'London'
,
$address
->
city
);
$this
->
assertEquals
(
'London'
,
$address
->
city
);
...
@@ -73,15 +73,15 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -73,15 +73,15 @@ class EmbeddedRelationsTest extends TestCase
$user
=
User
::
find
(
$user
->
_id
);
$user
=
User
::
find
(
$user
->
_id
);
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Bruxelles'
]));
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Bruxelles'
]));
$this
->
assertEquals
([
'London'
,
'New York'
,
'Bruxelles'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
,
'New York'
,
'Bruxelles'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$address
=
$user
->
addresses
[
1
];
$address
=
$user
->
addresses
[
1
];
$address
->
city
=
"Manhattan"
;
$address
->
city
=
"Manhattan"
;
$user
->
addresses
()
->
save
(
$address
);
$user
->
addresses
()
->
save
(
$address
);
$this
->
assertEquals
([
'London'
,
'Manhattan'
,
'Bruxelles'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
,
'Manhattan'
,
'Bruxelles'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$freshUser
=
User
::
find
(
$user
->
_id
);
$freshUser
=
User
::
find
(
$user
->
_id
);
$this
->
assertEquals
([
'London'
,
'Manhattan'
,
'Bruxelles'
],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
,
'Manhattan'
,
'Bruxelles'
],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
}
}
// public function testEmbedsManySaveModel()
// public function testEmbedsManySaveModel()
...
@@ -123,28 +123,28 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -123,28 +123,28 @@ class EmbeddedRelationsTest extends TestCase
$address
=
new
Address
([
'city'
=>
'London'
]);
$address
=
new
Address
([
'city'
=>
'London'
]);
$user
->
addresses
()
->
associate
(
$address
);
$user
->
addresses
()
->
associate
(
$address
);
$this
->
assertEquals
([
'London'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$this
->
assertNotNull
(
$address
->
_id
);
$this
->
assertNotNull
(
$address
->
_id
);
$freshUser
=
User
::
find
(
$user
->
_id
);
$freshUser
=
User
::
find
(
$user
->
_id
);
$this
->
assertEquals
([],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
$address
->
city
=
'Londinium'
;
$address
->
city
=
'Londinium'
;
$user
->
addresses
()
->
associate
(
$address
);
$user
->
addresses
()
->
associate
(
$address
);
$this
->
assertEquals
([
'Londinium'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Londinium'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$freshUser
=
User
::
find
(
$user
->
_id
);
$freshUser
=
User
::
find
(
$user
->
_id
);
$this
->
assertEquals
([],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
}
}
public
function
testEmbedsManySaveMany
()
public
function
testEmbedsManySaveMany
()
{
{
$user
=
User
::
create
([
'name'
=>
'John Doe'
]);
$user
=
User
::
create
([
'name'
=>
'John Doe'
]);
$user
->
addresses
()
->
saveMany
([
new
Address
([
'city'
=>
'London'
]),
new
Address
([
'city'
=>
'Bristol'
])]);
$user
->
addresses
()
->
saveMany
([
new
Address
([
'city'
=>
'London'
]),
new
Address
([
'city'
=>
'Bristol'
])]);
$this
->
assertEquals
([
'London'
,
'Bristol'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
,
'Bristol'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$freshUser
=
User
::
find
(
$user
->
id
);
$freshUser
=
User
::
find
(
$user
->
id
);
$this
->
assertEquals
([
'London'
,
'Bristol'
],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
,
'Bristol'
],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
}
}
public
function
testEmbedsManyDuplicate
()
public
function
testEmbedsManyDuplicate
()
...
@@ -154,7 +154,7 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -154,7 +154,7 @@ class EmbeddedRelationsTest extends TestCase
$user
->
addresses
()
->
save
(
$address
);
$user
->
addresses
()
->
save
(
$address
);
$user
->
addresses
()
->
save
(
$address
);
$user
->
addresses
()
->
save
(
$address
);
$this
->
assertEquals
(
1
,
$user
->
addresses
->
count
());
$this
->
assertEquals
(
1
,
$user
->
addresses
->
count
());
$this
->
assertEquals
([
'London'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$user
=
User
::
find
(
$user
->
id
);
$user
=
User
::
find
(
$user
->
id
);
$this
->
assertEquals
(
1
,
$user
->
addresses
->
count
());
$this
->
assertEquals
(
1
,
$user
->
addresses
->
count
());
...
@@ -162,11 +162,11 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -162,11 +162,11 @@ class EmbeddedRelationsTest extends TestCase
$address
->
city
=
'Paris'
;
$address
->
city
=
'Paris'
;
$user
->
addresses
()
->
save
(
$address
);
$user
->
addresses
()
->
save
(
$address
);
$this
->
assertEquals
(
1
,
$user
->
addresses
->
count
());
$this
->
assertEquals
(
1
,
$user
->
addresses
->
count
());
$this
->
assertEquals
([
'Paris'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Paris'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$user
->
addresses
()
->
create
([
'_id'
=>
$address
->
_id
,
'city'
=>
'Bruxelles'
]);
$user
->
addresses
()
->
create
([
'_id'
=>
$address
->
_id
,
'city'
=>
'Bruxelles'
]);
$this
->
assertEquals
(
1
,
$user
->
addresses
->
count
());
$this
->
assertEquals
(
1
,
$user
->
addresses
->
count
());
$this
->
assertEquals
([
'Bruxelles'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruxelles'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
}
}
public
function
testEmbedsManyCreate
()
public
function
testEmbedsManyCreate
()
...
@@ -175,13 +175,13 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -175,13 +175,13 @@ class EmbeddedRelationsTest extends TestCase
$address
=
$user
->
addresses
()
->
create
([
'city'
=>
'Bruxelles'
]);
$address
=
$user
->
addresses
()
->
create
([
'city'
=>
'Bruxelles'
]);
$this
->
assertInstanceOf
(
'Address'
,
$address
);
$this
->
assertInstanceOf
(
'Address'
,
$address
);
$this
->
assertTrue
(
is_string
(
$address
->
_id
));
$this
->
assertTrue
(
is_string
(
$address
->
_id
));
$this
->
assertEquals
([
'Bruxelles'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruxelles'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$raw
=
$address
->
getAttributes
();
$raw
=
$address
->
getAttributes
();
$this
->
assertInstanceOf
(
'MongoDB\BSON\ObjectID'
,
$raw
[
'_id'
]);
$this
->
assertInstanceOf
(
'MongoDB\BSON\ObjectID'
,
$raw
[
'_id'
]);
$freshUser
=
User
::
find
(
$user
->
id
);
$freshUser
=
User
::
find
(
$user
->
id
);
$this
->
assertEquals
([
'Bruxelles'
],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruxelles'
],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
$user
=
User
::
create
([]);
$user
=
User
::
create
([]);
$address
=
$user
->
addresses
()
->
create
([
'_id'
=>
''
,
'city'
=>
'Bruxelles'
]);
$address
=
$user
->
addresses
()
->
create
([
'_id'
=>
''
,
'city'
=>
'Bruxelles'
]);
...
@@ -197,10 +197,10 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -197,10 +197,10 @@ class EmbeddedRelationsTest extends TestCase
list
(
$bruxelles
,
$paris
)
=
$user
->
addresses
()
->
createMany
([[
'city'
=>
'Bruxelles'
],
[
'city'
=>
'Paris'
]]);
list
(
$bruxelles
,
$paris
)
=
$user
->
addresses
()
->
createMany
([[
'city'
=>
'Bruxelles'
],
[
'city'
=>
'Paris'
]]);
$this
->
assertInstanceOf
(
'Address'
,
$bruxelles
);
$this
->
assertInstanceOf
(
'Address'
,
$bruxelles
);
$this
->
assertEquals
(
'Bruxelles'
,
$bruxelles
->
city
);
$this
->
assertEquals
(
'Bruxelles'
,
$bruxelles
->
city
);
$this
->
assertEquals
([
'Bruxelles'
,
'Paris'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruxelles'
,
'Paris'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$freshUser
=
User
::
find
(
$user
->
id
);
$freshUser
=
User
::
find
(
$user
->
id
);
$this
->
assertEquals
([
'Bruxelles'
,
'Paris'
],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruxelles'
,
'Paris'
],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
}
}
public
function
testEmbedsManyDestroy
()
public
function
testEmbedsManyDestroy
()
...
@@ -215,30 +215,30 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -215,30 +215,30 @@ class EmbeddedRelationsTest extends TestCase
$events
->
shouldReceive
(
'fire'
)
->
once
()
->
with
(
'eloquent.deleted: '
.
get_class
(
$address
),
Mockery
::
type
(
'Address'
));
$events
->
shouldReceive
(
'fire'
)
->
once
()
->
with
(
'eloquent.deleted: '
.
get_class
(
$address
),
Mockery
::
type
(
'Address'
));
$user
->
addresses
()
->
destroy
(
$address
->
_id
);
$user
->
addresses
()
->
destroy
(
$address
->
_id
);
$this
->
assertEquals
([
'Bristol'
,
'Bruxelles'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bristol'
,
'Bruxelles'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$address
->
unsetEventDispatcher
();
$address
->
unsetEventDispatcher
();
$address
=
$user
->
addresses
->
first
();
$address
=
$user
->
addresses
->
first
();
$user
->
addresses
()
->
destroy
(
$address
);
$user
->
addresses
()
->
destroy
(
$address
);
$this
->
assertEquals
([
'Bruxelles'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruxelles'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$user
->
addresses
()
->
create
([
'city'
=>
'Paris'
]);
$user
->
addresses
()
->
create
([
'city'
=>
'Paris'
]);
$user
->
addresses
()
->
create
([
'city'
=>
'San Francisco'
]);
$user
->
addresses
()
->
create
([
'city'
=>
'San Francisco'
]);
$freshUser
=
User
::
find
(
$user
->
id
);
$freshUser
=
User
::
find
(
$user
->
id
);
$this
->
assertEquals
([
'Bruxelles'
,
'Paris'
,
'San Francisco'
],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruxelles'
,
'Paris'
,
'San Francisco'
],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
$ids
=
$user
->
addresses
->
lists
(
'_id'
);
$ids
=
$user
->
addresses
->
pluck
(
'_id'
);
$user
->
addresses
()
->
destroy
(
$ids
);
$user
->
addresses
()
->
destroy
(
$ids
);
$this
->
assertEquals
([],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$freshUser
=
User
::
find
(
$user
->
id
);
$freshUser
=
User
::
find
(
$user
->
id
);
$this
->
assertEquals
([],
$freshUser
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([],
$freshUser
->
addresses
->
pluck
(
'city'
)
->
all
());
list
(
$london
,
$bristol
,
$bruxelles
)
=
$user
->
addresses
()
->
saveMany
([
new
Address
([
'city'
=>
'London'
]),
new
Address
([
'city'
=>
'Bristol'
]),
new
Address
([
'city'
=>
'Bruxelles'
])]);
list
(
$london
,
$bristol
,
$bruxelles
)
=
$user
->
addresses
()
->
saveMany
([
new
Address
([
'city'
=>
'London'
]),
new
Address
([
'city'
=>
'Bristol'
]),
new
Address
([
'city'
=>
'Bruxelles'
])]);
$user
->
addresses
()
->
destroy
([
$london
,
$bruxelles
]);
$user
->
addresses
()
->
destroy
([
$london
,
$bruxelles
]);
$this
->
assertEquals
([
'Bristol'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bristol'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
}
}
public
function
testEmbedsManyDelete
()
public
function
testEmbedsManyDelete
()
...
@@ -285,10 +285,10 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -285,10 +285,10 @@ class EmbeddedRelationsTest extends TestCase
$address
=
new
Address
([
'city'
=>
'London'
]);
$address
=
new
Address
([
'city'
=>
'London'
]);
$address
=
$user
->
addresses
()
->
attach
(
$address
);
$address
=
$user
->
addresses
()
->
attach
(
$address
);
$this
->
assertEquals
([
'London'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'London'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$user
->
addresses
()
->
detach
(
$address
);
$user
->
addresses
()
->
detach
(
$address
);
$this
->
assertEquals
([],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
}
}
public
function
testEmbedsManyCreatingEventReturnsFalse
()
public
function
testEmbedsManyCreatingEventReturnsFalse
()
...
@@ -344,7 +344,7 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -344,7 +344,7 @@ class EmbeddedRelationsTest extends TestCase
$events
->
shouldReceive
(
'until'
)
->
once
()
->
with
(
'eloquent.deleting: '
.
get_class
(
$address
),
Mockery
::
mustBe
(
$address
))
->
andReturn
(
false
);
$events
->
shouldReceive
(
'until'
)
->
once
()
->
with
(
'eloquent.deleting: '
.
get_class
(
$address
),
Mockery
::
mustBe
(
$address
))
->
andReturn
(
false
);
$this
->
assertEquals
(
0
,
$user
->
addresses
()
->
destroy
(
$address
));
$this
->
assertEquals
(
0
,
$user
->
addresses
()
->
destroy
(
$address
));
$this
->
assertEquals
([
'New York'
],
$user
->
addresses
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'New York'
],
$user
->
addresses
->
pluck
(
'city'
)
->
all
());
$address
->
unsetEventDispatcher
();
$address
->
unsetEventDispatcher
();
}
}
...
@@ -421,11 +421,11 @@ class EmbeddedRelationsTest extends TestCase
...
@@ -421,11 +421,11 @@ class EmbeddedRelationsTest extends TestCase
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Brussels'
,
'country'
=>
'Belgium'
,
'visited'
=>
2
,
'created_at'
=>
new
DateTime
(
'4 days ago'
)]));
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Brussels'
,
'country'
=>
'Belgium'
,
'visited'
=>
2
,
'created_at'
=>
new
DateTime
(
'4 days ago'
)]));
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Ghent'
,
'country'
=>
'Belgium'
,
'visited'
=>
13
,
'created_at'
=>
new
DateTime
(
'2 days ago'
)]));
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Ghent'
,
'country'
=>
'Belgium'
,
'visited'
=>
13
,
'created_at'
=>
new
DateTime
(
'2 days ago'
)]));
$this
->
assertEquals
([
'Paris'
,
'Bruges'
,
'Brussels'
,
'Ghent'
],
$user
->
addresses
()
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Paris'
,
'Bruges'
,
'Brussels'
,
'Ghent'
],
$user
->
addresses
()
->
pluck
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruges'
,
'Brussels'
,
'Ghent'
,
'Paris'
],
$user
->
addresses
()
->
sortBy
(
'city'
)
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruges'
,
'Brussels'
,
'Ghent'
,
'Paris'
],
$user
->
addresses
()
->
sortBy
(
'city'
)
->
pluck
(
'city'
)
->
all
());
$this
->
assertEquals
([],
$user
->
addresses
()
->
where
(
'city'
,
'New York'
)
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([],
$user
->
addresses
()
->
where
(
'city'
,
'New York'
)
->
pluck
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruges'
,
'Brussels'
,
'Ghent'
],
$user
->
addresses
()
->
where
(
'country'
,
'Belgium'
)
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruges'
,
'Brussels'
,
'Ghent'
],
$user
->
addresses
()
->
where
(
'country'
,
'Belgium'
)
->
pluck
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruges'
,
'Brussels'
,
'Ghent'
],
$user
->
addresses
()
->
where
(
'country'
,
'Belgium'
)
->
sortBy
(
'city'
)
->
lists
(
'city'
)
->
all
());
$this
->
assertEquals
([
'Bruges'
,
'Brussels'
,
'Ghent'
],
$user
->
addresses
()
->
where
(
'country'
,
'Belgium'
)
->
sortBy
(
'city'
)
->
pluck
(
'city'
)
->
all
());
$results
=
$user
->
addresses
->
first
();
$results
=
$user
->
addresses
->
first
();
$this
->
assertInstanceOf
(
'Address'
,
$results
);
$this
->
assertInstanceOf
(
'Address'
,
$results
);
...
...
tests/ModelTest.php
View file @
296fac28
...
@@ -156,8 +156,8 @@ class ModelTest extends TestCase
...
@@ -156,8 +156,8 @@ class ModelTest extends TestCase
$all
=
User
::
all
();
$all
=
User
::
all
();
$this
->
assertEquals
(
2
,
count
(
$all
));
$this
->
assertEquals
(
2
,
count
(
$all
));
$this
->
assertContains
(
'John Doe'
,
$all
->
lists
(
'name'
));
$this
->
assertContains
(
'John Doe'
,
$all
->
pluck
(
'name'
));
$this
->
assertContains
(
'Jane Doe'
,
$all
->
lists
(
'name'
));
$this
->
assertContains
(
'Jane Doe'
,
$all
->
pluck
(
'name'
));
}
}
public
function
testFind
()
public
function
testFind
()
...
...
tests/QueryBuilderTest.php
View file @
296fac28
...
@@ -29,7 +29,7 @@ class QueryBuilderTest extends TestCase
...
@@ -29,7 +29,7 @@ class QueryBuilderTest extends TestCase
public
function
testNoDocument
()
public
function
testNoDocument
()
{
{
$items
=
DB
::
collection
(
'items'
)
->
where
(
'name'
,
'nothing'
)
->
get
();
$items
=
DB
::
collection
(
'items'
)
->
where
(
'name'
,
'nothing'
)
->
get
()
->
toArray
()
;
$this
->
assertEquals
([],
$items
);
$this
->
assertEquals
([],
$items
);
$item
=
DB
::
collection
(
'items'
)
->
where
(
'name'
,
'nothing'
)
->
first
();
$item
=
DB
::
collection
(
'items'
)
->
where
(
'name'
,
'nothing'
)
->
first
();
...
@@ -288,12 +288,12 @@ class QueryBuilderTest extends TestCase
...
@@ -288,12 +288,12 @@ class QueryBuilderTest extends TestCase
[
'name'
=>
'spoon'
,
'type'
=>
'round'
],
[
'name'
=>
'spoon'
,
'type'
=>
'round'
],
]);
]);
$items
=
DB
::
collection
(
'items'
)
->
distinct
(
'name'
)
->
get
();
$items
=
DB
::
collection
(
'items'
)
->
distinct
(
'name'
)
->
get
()
->
toArray
()
;
sort
(
$items
);
sort
(
$items
);
$this
->
assertEquals
(
3
,
count
(
$items
));
$this
->
assertEquals
(
3
,
count
(
$items
));
$this
->
assertEquals
([
'fork'
,
'knife'
,
'spoon'
],
$items
);
$this
->
assertEquals
([
'fork'
,
'knife'
,
'spoon'
],
$items
);
$types
=
DB
::
collection
(
'items'
)
->
distinct
(
'type'
)
->
get
();
$types
=
DB
::
collection
(
'items'
)
->
distinct
(
'type'
)
->
get
()
->
toArray
()
;
sort
(
$types
);
sort
(
$types
);
$this
->
assertEquals
(
2
,
count
(
$types
));
$this
->
assertEquals
(
2
,
count
(
$types
));
$this
->
assertEquals
([
'round'
,
'sharp'
],
$types
);
$this
->
assertEquals
([
'round'
,
'sharp'
],
$types
);
...
@@ -357,7 +357,7 @@ class QueryBuilderTest extends TestCase
...
@@ -357,7 +357,7 @@ class QueryBuilderTest extends TestCase
[
'name'
=>
'John Doe'
,
'age'
=>
25
],
[
'name'
=>
'John Doe'
,
'age'
=>
25
],
]);
]);
$age
=
DB
::
collection
(
'users'
)
->
where
(
'name'
,
'John Doe'
)
->
pluck
(
'age'
);
$age
=
DB
::
collection
(
'users'
)
->
where
(
'name'
,
'John Doe'
)
->
pluck
(
'age'
)
->
toArray
()
;
$this
->
assertEquals
([
25
],
$age
);
$this
->
assertEquals
([
25
],
$age
);
}
}
...
@@ -370,16 +370,16 @@ class QueryBuilderTest extends TestCase
...
@@ -370,16 +370,16 @@ class QueryBuilderTest extends TestCase
[
'name'
=>
'spoon'
,
'type'
=>
'round'
,
'amount'
=>
14
],
[
'name'
=>
'spoon'
,
'type'
=>
'round'
,
'amount'
=>
14
],
]);
]);
$list
=
DB
::
collection
(
'items'
)
->
lists
(
'name'
);
$list
=
DB
::
collection
(
'items'
)
->
pluck
(
'name'
)
->
toArray
(
);
sort
(
$list
);
sort
(
$list
);
$this
->
assertEquals
(
4
,
count
(
$list
));
$this
->
assertEquals
(
4
,
count
(
$list
));
$this
->
assertEquals
([
'fork'
,
'knife'
,
'spoon'
,
'spoon'
],
$list
);
$this
->
assertEquals
([
'fork'
,
'knife'
,
'spoon'
,
'spoon'
],
$list
);
$list
=
DB
::
collection
(
'items'
)
->
lists
(
'type'
,
'name'
);
$list
=
DB
::
collection
(
'items'
)
->
pluck
(
'type'
,
'name'
)
->
toArray
(
);
$this
->
assertEquals
(
3
,
count
(
$list
));
$this
->
assertEquals
(
3
,
count
(
$list
));
$this
->
assertEquals
([
'knife'
=>
'sharp'
,
'fork'
=>
'sharp'
,
'spoon'
=>
'round'
],
$list
);
$this
->
assertEquals
([
'knife'
=>
'sharp'
,
'fork'
=>
'sharp'
,
'spoon'
=>
'round'
],
$list
);
$list
=
DB
::
collection
(
'items'
)
->
lists
(
'name'
,
'_id'
);
$list
=
DB
::
collection
(
'items'
)
->
pluck
(
'name'
,
'_id'
)
->
toArray
(
);
$this
->
assertEquals
(
4
,
count
(
$list
));
$this
->
assertEquals
(
4
,
count
(
$list
));
$this
->
assertEquals
(
24
,
strlen
(
key
(
$list
)));
$this
->
assertEquals
(
24
,
strlen
(
key
(
$list
)));
}
}
...
...
tests/QueueTest.php
View file @
296fac28
...
@@ -38,7 +38,7 @@ class QueueTest extends TestCase
...
@@ -38,7 +38,7 @@ class QueueTest extends TestCase
// Expect an attempted older job in the queue
// Expect an attempted older job in the queue
$job
=
Queue
::
pop
(
'test'
);
$job
=
Queue
::
pop
(
'test'
);
$this
->
assertEquals
(
2
,
$job
->
getDatabaseJob
()
->
attempts
);
$this
->
assertEquals
(
1
,
$job
->
getDatabaseJob
()
->
attempts
);
$this
->
assertGreaterThan
(
$expiry
,
$job
->
getDatabaseJob
()
->
reserved_at
);
$this
->
assertGreaterThan
(
$expiry
,
$job
->
getDatabaseJob
()
->
reserved_at
);
$job
->
delete
();
$job
->
delete
();
...
...
tests/RelationsTest.php
View file @
296fac28
...
@@ -322,8 +322,8 @@ class RelationsTest extends TestCase
...
@@ -322,8 +322,8 @@ class RelationsTest extends TestCase
$this
->
assertTrue
(
array_key_exists
(
'groups'
,
$user
->
getAttributes
()));
$this
->
assertTrue
(
array_key_exists
(
'groups'
,
$user
->
getAttributes
()));
// Assert they are attached
// Assert they are attached
$this
->
assertTrue
(
in_array
(
$group
->
_id
,
$user
->
groups
));
$this
->
assertTrue
(
in_array
(
$group
->
_id
,
$user
->
groups
->
pluck
(
'_id'
)
->
toArray
()
));
$this
->
assertTrue
(
in_array
(
$user
->
_id
,
$group
->
users
));
$this
->
assertTrue
(
in_array
(
$user
->
_id
,
$group
->
users
->
pluck
(
'_id'
)
->
toArray
()
));
$this
->
assertEquals
(
$group
->
_id
,
$user
->
groups
()
->
first
()
->
_id
);
$this
->
assertEquals
(
$group
->
_id
,
$user
->
groups
()
->
first
()
->
_id
);
$this
->
assertEquals
(
$user
->
_id
,
$group
->
users
()
->
first
()
->
_id
);
$this
->
assertEquals
(
$user
->
_id
,
$group
->
users
()
->
first
()
->
_id
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment