Commit 8a2c3a26 authored by Jens Segers's avatar Jens Segers

Fixed soft deletion and date bugs

parent 6d9ca96f
...@@ -461,8 +461,7 @@ class Builder extends \Illuminate\Database\Query\Builder { ...@@ -461,8 +461,7 @@ class Builder extends \Illuminate\Database\Query\Builder {
*/ */
public function newQuery() public function newQuery()
{ {
$connection = $this->getConnection(); return new Builder($this->connection);
return new Builder($connection);
} }
} }
<?php namespace Jenssegers\Mongodb; <?php namespace Jenssegers\Mongodb;
use Jenssegers\Mongodb\DatabaseManager as Resolver;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Jenssegers\Mongodb\DatabaseManager as Resolver;
use Jenssegers\Mongodb\Builder as QueryBuilder; use Jenssegers\Mongodb\Builder as QueryBuilder;
use DateTime; use DateTime;
...@@ -67,6 +67,26 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model { ...@@ -67,6 +67,26 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model {
return new DateTime($value); return new DateTime($value);
} }
/**
* Get a fresh timestamp for the model.
*
* @return DateTime
*/
public function freshTimestamp()
{
return new MongoDate;
}
/**
* Get the fully qualified "deleted at" column.
*
* @return string
*/
public function getQualifiedDeletedAtColumn()
{
return $this->getDeletedAtColumn();
}
/** /**
* Get the table associated with the model. * Get the table associated with the model.
* *
...@@ -86,8 +106,7 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model { ...@@ -86,8 +106,7 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model {
*/ */
protected function newBaseQueryBuilder() protected function newBaseQueryBuilder()
{ {
$connection = $this->getConnection(); return new QueryBuilder($this->getConnection());
return new QueryBuilder($connection);
} }
} }
\ No newline at end of file
<?php <?php
require_once('vendor/autoload.php'); require_once('vendor/autoload.php');
require_once('models/User.php'); require_once('models/User.php');
require_once('models/Soft.php');
use Jenssegers\Mongodb\Connection; use Jenssegers\Mongodb\Connection;
use Jenssegers\Mongodb\Model; use Jenssegers\Mongodb\Model;
...@@ -17,11 +18,12 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -17,11 +18,12 @@ class ModelTest extends PHPUnit_Framework_TestCase {
public function tearDown() public function tearDown()
{ {
User::truncate(); User::truncate();
Soft::truncate();
} }
public function testNewModel() public function testNewModel()
{ {
$user = new User(); $user = new User;
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $user); $this->assertInstanceOf('Jenssegers\Mongodb\Model', $user);
$this->assertEquals(false, $user->exists); $this->assertEquals(false, $user->exists);
$this->assertEquals('users', $user->getTable()); $this->assertEquals('users', $user->getTable());
...@@ -31,7 +33,7 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -31,7 +33,7 @@ class ModelTest extends PHPUnit_Framework_TestCase {
public function testInsert() public function testInsert()
{ {
$user = new User(); $user = new User;
$user->name = "John Doe"; $user->name = "John Doe";
$user->title = "admin"; $user->title = "admin";
$user->age = 35; $user->age = 35;
...@@ -43,6 +45,7 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -43,6 +45,7 @@ class ModelTest extends PHPUnit_Framework_TestCase {
$this->assertInstanceOf('MongoId', $user->_id); $this->assertInstanceOf('MongoId', $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('DateTime', $user->created_at);
$this->assertEquals("John Doe", $user->name); $this->assertEquals("John Doe", $user->name);
$this->assertEquals(35, $user->age); $this->assertEquals(35, $user->age);
...@@ -50,7 +53,7 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -50,7 +53,7 @@ class ModelTest extends PHPUnit_Framework_TestCase {
public function testUpdate() public function testUpdate()
{ {
$user = new User(); $user = new User;
$user->name = "John Doe"; $user->name = "John Doe";
$user->title = "admin"; $user->title = "admin";
$user->age = 35; $user->age = 35;
...@@ -62,6 +65,8 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -62,6 +65,8 @@ class ModelTest extends PHPUnit_Framework_TestCase {
$check->save(); $check->save();
$this->assertEquals(true, $check->exists); $this->assertEquals(true, $check->exists);
$this->assertInstanceOf('DateTime', $user->created_at);
$this->assertInstanceOf('DateTime', $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);
...@@ -70,7 +75,7 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -70,7 +75,7 @@ class ModelTest extends PHPUnit_Framework_TestCase {
public function testDelete() public function testDelete()
{ {
$user = new User(); $user = new User;
$user->name = "John Doe"; $user->name = "John Doe";
$user->title = "admin"; $user->title = "admin";
$user->age = 35; $user->age = 35;
...@@ -86,13 +91,13 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -86,13 +91,13 @@ class ModelTest extends PHPUnit_Framework_TestCase {
public function testAll() public function testAll()
{ {
$user = new User(); $user = new User;
$user->name = "John Doe"; $user->name = "John Doe";
$user->title = "admin"; $user->title = "admin";
$user->age = 35; $user->age = 35;
$user->save(); $user->save();
$user = new User(); $user = new User;
$user->name = "Jane Doe"; $user->name = "Jane Doe";
$user->title = "user"; $user->title = "user";
$user->age = 32; $user->age = 32;
...@@ -107,7 +112,7 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -107,7 +112,7 @@ class ModelTest extends PHPUnit_Framework_TestCase {
public function testFind() public function testFind()
{ {
$user = new User(); $user = new User;
$user->name = "John Doe"; $user->name = "John Doe";
$user->title = "admin"; $user->title = "admin";
$user->age = 35; $user->age = 35;
...@@ -117,6 +122,7 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -117,6 +122,7 @@ class ModelTest extends PHPUnit_Framework_TestCase {
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $check); $this->assertInstanceOf('Jenssegers\Mongodb\Model', $check);
$this->assertEquals(true, $check->exists); $this->assertEquals(true, $check->exists);
$this->assertEquals($user->_id, $check->_id);
$this->assertEquals("John Doe", $check->name); $this->assertEquals("John Doe", $check->name);
$this->assertEquals(35, $check->age); $this->assertEquals(35, $check->age);
...@@ -142,7 +148,7 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -142,7 +148,7 @@ class ModelTest extends PHPUnit_Framework_TestCase {
public function testDestroy() public function testDestroy()
{ {
$user = new User(); $user = new User;
$user->name = "John Doe"; $user->name = "John Doe";
$user->title = "admin"; $user->title = "admin";
$user->age = 35; $user->age = 35;
...@@ -155,7 +161,7 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -155,7 +161,7 @@ class ModelTest extends PHPUnit_Framework_TestCase {
public function testTouch() public function testTouch()
{ {
$user = new User(); $user = new User;
$user->name = "John Doe"; $user->name = "John Doe";
$user->title = "admin"; $user->title = "admin";
$user->age = 35; $user->age = 35;
...@@ -164,11 +170,30 @@ class ModelTest extends PHPUnit_Framework_TestCase { ...@@ -164,11 +170,30 @@ class ModelTest extends PHPUnit_Framework_TestCase {
$old = $user->updated_at; $old = $user->updated_at;
sleep(1); sleep(1);
$user->touch(); $user->touch();
$check = User::find($user->_id); $check = User::find($user->_id);
$this->assertNotEquals($old, $check->updated_at); $this->assertNotEquals($old, $check->updated_at);
} }
public function testSoftDelete()
{
$user = new Soft;
$user->name = "Softy";
$user->save();
$this->assertEquals(true, $user->exists);
$user->delete();
$this->assertEquals(false, $user->exists);
$check = Soft::find($user->_id);
$this->assertEquals(null, $check);
$all = Soft::get();
$this->assertEquals(0, $all->count());
$all = Soft::withTrashed()->get();
$this->assertEquals(1, $all->count());
}
} }
\ No newline at end of file
...@@ -50,6 +50,9 @@ class QueryTest extends PHPUnit_Framework_TestCase { ...@@ -50,6 +50,9 @@ class QueryTest extends PHPUnit_Framework_TestCase {
$users = User::where('age', 35)->get(); $users = User::where('age', 35)->get();
$this->assertEquals(3, count($users)); $this->assertEquals(3, count($users));
$users = User::where('age', '=', 35)->get();
$this->assertEquals(3, count($users));
$users = User::where('age', '>=', 35)->get(); $users = User::where('age', '>=', 35)->get();
$this->assertEquals(4, count($users)); $this->assertEquals(4, count($users));
......
<?php
use Jenssegers\Mongodb\Model as Eloquent;
class Soft extends Eloquent {
protected $collection = 'soft';
protected $softDelete = true;
}
\ No newline at end of file
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