Skip to content

Commit 8a2c3a2

Browse files
committed
Fixed soft deletion and date bugs
1 parent 6d9ca96 commit 8a2c3a2

File tree

5 files changed

+71
-15
lines changed

5 files changed

+71
-15
lines changed

src/Jenssegers/Mongodb/Builder.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -461,8 +461,7 @@ private function compileWherebetween($where)
461461
*/
462462
public function newQuery()
463463
{
464-
$connection = $this->getConnection();
465-
return new Builder($connection);
464+
return new Builder($this->connection);
466465
}
467466

468467
}

src/Jenssegers/Mongodb/Model.php

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php namespace Jenssegers\Mongodb;
22

3-
use Jenssegers\Mongodb\DatabaseManager as Resolver;
43
use Illuminate\Database\Eloquent\Collection;
4+
use Jenssegers\Mongodb\DatabaseManager as Resolver;
55
use Jenssegers\Mongodb\Builder as QueryBuilder;
66

77
use DateTime;
@@ -67,6 +67,26 @@ protected function asDateTime($value)
6767
return new DateTime($value);
6868
}
6969

70+
/**
71+
* Get a fresh timestamp for the model.
72+
*
73+
* @return DateTime
74+
*/
75+
public function freshTimestamp()
76+
{
77+
return new MongoDate;
78+
}
79+
80+
/**
81+
* Get the fully qualified "deleted at" column.
82+
*
83+
* @return string
84+
*/
85+
public function getQualifiedDeletedAtColumn()
86+
{
87+
return $this->getDeletedAtColumn();
88+
}
89+
7090
/**
7191
* Get the table associated with the model.
7292
*
@@ -86,8 +106,7 @@ public function getTable()
86106
*/
87107
protected function newBaseQueryBuilder()
88108
{
89-
$connection = $this->getConnection();
90-
return new QueryBuilder($connection);
109+
return new QueryBuilder($this->getConnection());
91110
}
92111

93112
}

tests/ModelTest.php

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22
require_once('vendor/autoload.php');
33
require_once('models/User.php');
4+
require_once('models/Soft.php');
45

56
use Jenssegers\Mongodb\Connection;
67
use Jenssegers\Mongodb\Model;
@@ -17,11 +18,12 @@ public function setUp()
1718
public function tearDown()
1819
{
1920
User::truncate();
21+
Soft::truncate();
2022
}
2123

2224
public function testNewModel()
2325
{
24-
$user = new User();
26+
$user = new User;
2527
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $user);
2628
$this->assertEquals(false, $user->exists);
2729
$this->assertEquals('users', $user->getTable());
@@ -31,7 +33,7 @@ public function testNewModel()
3133

3234
public function testInsert()
3335
{
34-
$user = new User();
36+
$user = new User;
3537
$user->name = "John Doe";
3638
$user->title = "admin";
3739
$user->age = 35;
@@ -43,14 +45,15 @@ public function testInsert()
4345
$this->assertInstanceOf('MongoId', $user->_id);
4446
$this->assertNotEquals('', (string) $user->_id);
4547
$this->assertNotEquals(0, strlen((string) $user->_id));
48+
$this->assertInstanceOf('DateTime', $user->created_at);
4649

4750
$this->assertEquals("John Doe", $user->name);
4851
$this->assertEquals(35, $user->age);
4952
}
5053

5154
public function testUpdate()
5255
{
53-
$user = new User();
56+
$user = new User;
5457
$user->name = "John Doe";
5558
$user->title = "admin";
5659
$user->age = 35;
@@ -62,6 +65,8 @@ public function testUpdate()
6265
$check->save();
6366

6467
$this->assertEquals(true, $check->exists);
68+
$this->assertInstanceOf('DateTime', $user->created_at);
69+
$this->assertInstanceOf('DateTime', $check->updated_at);
6570
$this->assertEquals(1, User::count());
6671

6772
$this->assertEquals("John Doe", $check->name);
@@ -70,7 +75,7 @@ public function testUpdate()
7075

7176
public function testDelete()
7277
{
73-
$user = new User();
78+
$user = new User;
7479
$user->name = "John Doe";
7580
$user->title = "admin";
7681
$user->age = 35;
@@ -86,13 +91,13 @@ public function testDelete()
8691

8792
public function testAll()
8893
{
89-
$user = new User();
94+
$user = new User;
9095
$user->name = "John Doe";
9196
$user->title = "admin";
9297
$user->age = 35;
9398
$user->save();
9499

95-
$user = new User();
100+
$user = new User;
96101
$user->name = "Jane Doe";
97102
$user->title = "user";
98103
$user->age = 32;
@@ -107,7 +112,7 @@ public function testAll()
107112

108113
public function testFind()
109114
{
110-
$user = new User();
115+
$user = new User;
111116
$user->name = "John Doe";
112117
$user->title = "admin";
113118
$user->age = 35;
@@ -117,6 +122,7 @@ public function testFind()
117122

118123
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $check);
119124
$this->assertEquals(true, $check->exists);
125+
$this->assertEquals($user->_id, $check->_id);
120126

121127
$this->assertEquals("John Doe", $check->name);
122128
$this->assertEquals(35, $check->age);
@@ -142,7 +148,7 @@ public function testCreate()
142148

143149
public function testDestroy()
144150
{
145-
$user = new User();
151+
$user = new User;
146152
$user->name = "John Doe";
147153
$user->title = "admin";
148154
$user->age = 35;
@@ -155,7 +161,7 @@ public function testDestroy()
155161

156162
public function testTouch()
157163
{
158-
$user = new User();
164+
$user = new User;
159165
$user->name = "John Doe";
160166
$user->title = "admin";
161167
$user->age = 35;
@@ -164,11 +170,30 @@ public function testTouch()
164170
$old = $user->updated_at;
165171

166172
sleep(1);
167-
168173
$user->touch();
169174
$check = User::find($user->_id);
170175

171176
$this->assertNotEquals($old, $check->updated_at);
172177
}
173178

179+
public function testSoftDelete()
180+
{
181+
$user = new Soft;
182+
$user->name = "Softy";
183+
$user->save();
184+
$this->assertEquals(true, $user->exists);
185+
186+
$user->delete();
187+
$this->assertEquals(false, $user->exists);
188+
189+
$check = Soft::find($user->_id);
190+
$this->assertEquals(null, $check);
191+
192+
$all = Soft::get();
193+
$this->assertEquals(0, $all->count());
194+
195+
$all = Soft::withTrashed()->get();
196+
$this->assertEquals(1, $all->count());
197+
}
198+
174199
}

tests/QueryTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ public function testWhere()
5050
$users = User::where('age', 35)->get();
5151
$this->assertEquals(3, count($users));
5252

53+
$users = User::where('age', '=', 35)->get();
54+
$this->assertEquals(3, count($users));
55+
5356
$users = User::where('age', '>=', 35)->get();
5457
$this->assertEquals(4, count($users));
5558

tests/models/Soft.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
use Jenssegers\Mongodb\Model as Eloquent;
4+
5+
class Soft extends Eloquent {
6+
7+
protected $collection = 'soft';
8+
protected $softDelete = true;
9+
10+
}

0 commit comments

Comments
 (0)