Commit 163f7260 authored by Jens Segers's avatar Jens Segers

Add tests for #1131

parent f400b853
<?php <?php
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Jenssegers\Mongodb\Eloquent\Model;
use MongoDB\BSON\ObjectID;
use MongoDB\BSON\UTCDateTime;
class ModelTest extends TestCase class ModelTest extends TestCase
{ {
public function tearDown() public function tearDown()
...@@ -13,7 +19,7 @@ class ModelTest extends TestCase ...@@ -13,7 +19,7 @@ class ModelTest extends TestCase
public function testNewModel() public function testNewModel()
{ {
$user = new User; $user = new User;
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $user); $this->assertInstanceOf(Model::class, $user);
$this->assertInstanceOf('Jenssegers\Mongodb\Connection', $user->getConnection()); $this->assertInstanceOf('Jenssegers\Mongodb\Connection', $user->getConnection());
$this->assertEquals(false, $user->exists); $this->assertEquals(false, $user->exists);
$this->assertEquals('users', $user->getTable()); $this->assertEquals('users', $user->getTable());
...@@ -36,10 +42,10 @@ class ModelTest extends TestCase ...@@ -36,10 +42,10 @@ class ModelTest extends TestCase
$this->assertTrue(is_string($user->_id)); $this->assertTrue(is_string($user->_id));
$this->assertNotEquals('', (string) $user->_id); $this->assertNotEquals('', (string) $user->_id);
$this->assertNotEquals(0, strlen((string) $user->_id)); $this->assertNotEquals(0, strlen((string) $user->_id));
$this->assertInstanceOf('Carbon\Carbon', $user->created_at); $this->assertInstanceOf(Carbon::class, $user->created_at);
$raw = $user->getAttributes(); $raw = $user->getAttributes();
$this->assertInstanceOf('MongoDB\BSON\ObjectID', $raw['_id']); $this->assertInstanceOf(ObjectID::class, $raw['_id']);
$this->assertEquals('John Doe', $user->name); $this->assertEquals('John Doe', $user->name);
$this->assertEquals(35, $user->age); $this->assertEquals(35, $user->age);
...@@ -54,7 +60,7 @@ class ModelTest extends TestCase ...@@ -54,7 +60,7 @@ class ModelTest extends TestCase
$user->save(); $user->save();
$raw = $user->getAttributes(); $raw = $user->getAttributes();
$this->assertInstanceOf('MongoDB\BSON\ObjectID', $raw['_id']); $this->assertInstanceOf(ObjectID::class, $raw['_id']);
$check = User::find($user->_id); $check = User::find($user->_id);
...@@ -62,8 +68,8 @@ class ModelTest extends TestCase ...@@ -62,8 +68,8 @@ class ModelTest extends TestCase
$check->save(); $check->save();
$this->assertEquals(true, $check->exists); $this->assertEquals(true, $check->exists);
$this->assertInstanceOf('Carbon\Carbon', $check->created_at); $this->assertInstanceOf(Carbon::class, $check->created_at);
$this->assertInstanceOf('Carbon\Carbon', $check->updated_at); $this->assertInstanceOf(Carbon::class, $check->updated_at);
$this->assertEquals(1, User::count()); $this->assertEquals(1, User::count());
$this->assertEquals('John Doe', $check->name); $this->assertEquals('John Doe', $check->name);
...@@ -72,7 +78,7 @@ class ModelTest extends TestCase ...@@ -72,7 +78,7 @@ class ModelTest extends TestCase
$user->update(['age' => 20]); $user->update(['age' => 20]);
$raw = $user->getAttributes(); $raw = $user->getAttributes();
$this->assertInstanceOf('MongoDB\BSON\ObjectID', $raw['_id']); $this->assertInstanceOf(ObjectID::class, $raw['_id']);
$check = User::find($user->_id); $check = User::find($user->_id);
$this->assertEquals(20, $check->age); $this->assertEquals(20, $check->age);
...@@ -91,7 +97,7 @@ class ModelTest extends TestCase ...@@ -91,7 +97,7 @@ class ModelTest extends TestCase
$this->assertEquals('4af9f23d8ead0e1d32000000', $user->_id); $this->assertEquals('4af9f23d8ead0e1d32000000', $user->_id);
$raw = $user->getAttributes(); $raw = $user->getAttributes();
$this->assertInstanceOf('MongoDB\BSON\ObjectID', $raw['_id']); $this->assertInstanceOf(ObjectID::class, $raw['_id']);
$user = new User; $user = new User;
$user->_id = 'customId'; $user->_id = 'customId';
...@@ -170,7 +176,7 @@ class ModelTest extends TestCase ...@@ -170,7 +176,7 @@ class ModelTest extends TestCase
$check = User::find($user->_id); $check = User::find($user->_id);
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $check); $this->assertInstanceOf(Model::class, $check);
$this->assertEquals(true, $check->exists); $this->assertEquals(true, $check->exists);
$this->assertEquals($user->_id, $check->_id); $this->assertEquals($user->_id, $check->_id);
...@@ -187,8 +193,8 @@ class ModelTest extends TestCase ...@@ -187,8 +193,8 @@ class ModelTest extends TestCase
$users = User::get(); $users = User::get();
$this->assertEquals(2, count($users)); $this->assertEquals(2, count($users));
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $users); $this->assertInstanceOf(Collection::class, $users);
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $users[0]); $this->assertInstanceOf(Model::class, $users[0]);
} }
public function testFirst() public function testFirst()
...@@ -199,14 +205,14 @@ class ModelTest extends TestCase ...@@ -199,14 +205,14 @@ class ModelTest extends TestCase
]); ]);
$user = User::first(); $user = User::first();
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $user); $this->assertInstanceOf(Model::class, $user);
$this->assertEquals('John Doe', $user->name); $this->assertEquals('John Doe', $user->name);
} }
public function testNoDocument() public function testNoDocument()
{ {
$items = Item::where('name', 'nothing')->get(); $items = Item::where('name', 'nothing')->get();
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $items); $this->assertInstanceOf(Collection::class, $items);
$this->assertEquals(0, $items->count()); $this->assertEquals(0, $items->count());
$item = Item::where('name', 'nothing')->first(); $item = Item::where('name', 'nothing')->first();
...@@ -218,7 +224,7 @@ class ModelTest extends TestCase ...@@ -218,7 +224,7 @@ class ModelTest extends TestCase
public function testFindOrfail() public function testFindOrfail()
{ {
$this->expectException('Illuminate\Database\Eloquent\ModelNotFoundException'); $this->expectException(Illuminate\Database\Eloquent\ModelNotFoundException::class);
User::findOrfail('51c33d8981fec6813e00000a'); User::findOrfail('51c33d8981fec6813e00000a');
} }
...@@ -226,7 +232,7 @@ class ModelTest extends TestCase ...@@ -226,7 +232,7 @@ class ModelTest extends TestCase
{ {
$user = User::create(['name' => 'Jane Poe']); $user = User::create(['name' => 'Jane Poe']);
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $user); $this->assertInstanceOf(Model::class, $user);
$this->assertEquals(true, $user->exists); $this->assertEquals(true, $user->exists);
$this->assertEquals('Jane Poe', $user->name); $this->assertEquals('Jane Poe', $user->name);
...@@ -288,7 +294,7 @@ class ModelTest extends TestCase ...@@ -288,7 +294,7 @@ class ModelTest extends TestCase
$user = Soft::withTrashed()->where('name', 'John Doe')->first(); $user = Soft::withTrashed()->where('name', 'John Doe')->first();
$this->assertNotNull($user); $this->assertNotNull($user);
$this->assertInstanceOf('Carbon\Carbon', $user->deleted_at); $this->assertInstanceOf(Carbon::class, $user->deleted_at);
$this->assertEquals(true, $user->trashed()); $this->assertEquals(true, $user->trashed());
$user->restore(); $user->restore();
...@@ -370,10 +376,10 @@ class ModelTest extends TestCase ...@@ -370,10 +376,10 @@ class ModelTest extends TestCase
{ {
$birthday = new DateTime('1980/1/1'); $birthday = new DateTime('1980/1/1');
$user = User::create(['name' => 'John Doe', 'birthday' => $birthday]); $user = User::create(['name' => 'John Doe', 'birthday' => $birthday]);
$this->assertInstanceOf('Carbon\Carbon', $user->birthday); $this->assertInstanceOf(Carbon::class, $user->birthday);
$check = User::find($user->_id); $check = User::find($user->_id);
$this->assertInstanceOf('Carbon\Carbon', $check->birthday); $this->assertInstanceOf(Carbon::class, $check->birthday);
$this->assertEquals($user->birthday, $check->birthday); $this->assertEquals($user->birthday, $check->birthday);
$user = User::where('birthday', '>', new DateTime('1975/1/1'))->first(); $user = User::where('birthday', '>', new DateTime('1975/1/1'))->first();
...@@ -384,28 +390,36 @@ class ModelTest extends TestCase ...@@ -384,28 +390,36 @@ class ModelTest extends TestCase
$this->assertEquals($user->birthday->format('l jS \of F Y h:i:s A'), $json['birthday']); $this->assertEquals($user->birthday->format('l jS \of F Y h:i:s A'), $json['birthday']);
$this->assertEquals($user->created_at->format('l jS \of F Y h:i:s A'), $json['created_at']); $this->assertEquals($user->created_at->format('l jS \of F Y h:i:s A'), $json['created_at']);
// test created_at
$item = Item::create(['name' => 'sword']);
$this->assertInstanceOf(UTCDateTime::class, $item->getOriginal('created_at'));
$this->assertEquals($item->getOriginal('created_at')
->toDateTime()
->getTimestamp(), $item->created_at->getTimestamp());
$this->assertTrue(abs(time() - $item->created_at->getTimestamp()) < 2);
// test default date format for json output // test default date format for json output
$item = Item::create(['name' => 'sword']); $item = Item::create(['name' => 'sword']);
$json = $item->toArray(); $json = $item->toArray();
$this->assertEquals($item->created_at->format('Y-m-d H:i:s'), $json['created_at']); $this->assertEquals($item->created_at->format('Y-m-d H:i:s'), $json['created_at']);
$user = User::create(['name' => 'Jane Doe', 'birthday' => time()]); $user = User::create(['name' => 'Jane Doe', 'birthday' => time()]);
$this->assertInstanceOf('Carbon\Carbon', $user->birthday); $this->assertInstanceOf(Carbon::class, $user->birthday);
$user = User::create(['name' => 'Jane Doe', 'birthday' => 'Monday 8th of August 2005 03:12:46 PM']); $user = User::create(['name' => 'Jane Doe', 'birthday' => 'Monday 8th of August 2005 03:12:46 PM']);
$this->assertInstanceOf('Carbon\Carbon', $user->birthday); $this->assertInstanceOf(Carbon::class, $user->birthday);
$user = User::create(['name' => 'Jane Doe', 'birthday' => '2005-08-08']); $user = User::create(['name' => 'Jane Doe', 'birthday' => '2005-08-08']);
$this->assertInstanceOf('Carbon\Carbon', $user->birthday); $this->assertInstanceOf(Carbon::class, $user->birthday);
$user = User::create(['name' => 'Jane Doe', 'entry' => ['date' => '2005-08-08']]); $user = User::create(['name' => 'Jane Doe', 'entry' => ['date' => '2005-08-08']]);
$this->assertInstanceOf('Carbon\Carbon', $user->getAttribute('entry.date')); $this->assertInstanceOf(Carbon::class, $user->getAttribute('entry.date'));
$user->setAttribute('entry.date', new DateTime); $user->setAttribute('entry.date', new DateTime);
$this->assertInstanceOf('Carbon\Carbon', $user->getAttribute('entry.date')); $this->assertInstanceOf(Carbon::class, $user->getAttribute('entry.date'));
$data = $user->toArray(); $data = $user->toArray();
$this->assertNotInstanceOf('MongoDB\BSON\UTCDateTime', $data['entry']['date']); $this->assertNotInstanceOf(UTCDateTime::class, $data['entry']['date']);
$this->assertEquals((string) $user->getAttribute('entry.date')->format('Y-m-d H:i:s'), $data['entry']['date']); $this->assertEquals((string) $user->getAttribute('entry.date')->format('Y-m-d H:i:s'), $data['entry']['date']);
} }
...@@ -453,14 +467,14 @@ class ModelTest extends TestCase ...@@ -453,14 +467,14 @@ class ModelTest extends TestCase
$users = User::raw(function ($collection) { $users = User::raw(function ($collection) {
return $collection->find(['age' => 35]); return $collection->find(['age' => 35]);
}); });
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $users); $this->assertInstanceOf(Collection::class, $users);
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $users[0]); $this->assertInstanceOf(Model::class, $users[0]);
$user = User::raw(function ($collection) { $user = User::raw(function ($collection) {
return $collection->findOne(['age' => 35]); return $collection->findOne(['age' => 35]);
}); });
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $user); $this->assertInstanceOf(Model::class, $user);
$count = User::raw(function ($collection) { $count = User::raw(function ($collection) {
return $collection->count(); return $collection->count();
...@@ -476,9 +490,9 @@ class ModelTest extends TestCase ...@@ -476,9 +490,9 @@ class ModelTest extends TestCase
public function testDotNotation() public function testDotNotation()
{ {
$user = User::create([ $user = User::create([
'name' => 'John Doe', 'name' => 'John Doe',
'address' => [ 'address' => [
'city' => 'Paris', 'city' => 'Paris',
'country' => 'France', 'country' => 'France',
], ],
]); ]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment