Commit b32d35e3 authored by Jens Segers's avatar Jens Segers

Tweak unittests and added validation test for #174

parent 5b7f335a
...@@ -16,8 +16,7 @@ ...@@ -16,8 +16,7 @@
"illuminate/events": "4.1.x" "illuminate/events": "4.1.x"
}, },
"require-dev": { "require-dev": {
"illuminate/cache": "4.1.x", "orchestra/testbench": "2.1.*",
"illuminate/auth": "4.1.x",
"mockery/mockery": "*" "mockery/mockery": "*"
}, },
"autoload": { "autoload": {
......
...@@ -39,5 +39,8 @@ ...@@ -39,5 +39,8 @@
<directory>tests/RelationsTest.php</directory> <directory>tests/RelationsTest.php</directory>
<directory>tests/MysqlRelationsTest.php</directory> <directory>tests/MysqlRelationsTest.php</directory>
</testsuite> </testsuite>
<testsuite name="validation">
<directory>tests/ValidationTest.php</directory>
</testsuite>
</testsuites> </testsuites>
</phpunit> </phpunit>
<?php <?php
use Illuminate\Support\Facades\DB; class CacheTest extends TestCase {
class CacheTest extends PHPUnit_Framework_TestCase {
protected $cache;
public function setUp()
{
global $app;
$this->cache = $app['cache'];
User::create(array('name' => 'John Doe', 'age' => 35, 'title' => 'admin'));
User::create(array('name' => 'Jane Doe', 'age' => 33, 'title' => 'admin'));
User::create(array('name' => 'Harry Hoe', 'age' => 13, 'title' => 'user'));
}
public function tearDown() public function tearDown()
{ {
User::truncate(); User::truncate();
$this->cache->forget('db.users'); Cache::forget('db.users');
} }
public function testCache() public function testCache()
{ {
User::create(array('name' => 'John Doe', 'age' => 35, 'title' => 'admin'));
User::create(array('name' => 'Jane Doe', 'age' => 33, 'title' => 'admin'));
User::create(array('name' => 'Harry Hoe', 'age' => 13, 'title' => 'user'));
$users = DB::collection('users')->where('age', '>', 10)->remember(10)->get(); $users = DB::collection('users')->where('age', '>', 10)->remember(10)->get();
$this->assertEquals(3, count($users)); $this->assertEquals(3, count($users));
...@@ -33,7 +23,7 @@ class CacheTest extends PHPUnit_Framework_TestCase { ...@@ -33,7 +23,7 @@ class CacheTest extends PHPUnit_Framework_TestCase {
$users = User::where('age', '>', 10)->remember(10, 'db.users')->get(); $users = User::where('age', '>', 10)->remember(10, 'db.users')->get();
$this->assertEquals(3, count($users)); $this->assertEquals(3, count($users));
$users = $this->cache->get('db.users'); $users = Cache::get('db.users');
$this->assertEquals(3, count($users)); $this->assertEquals(3, count($users));
} }
......
<?php <?php
use Illuminate\Support\Facades\DB;
use Jenssegers\Mongodb\Connection;
class ConnectionTest extends PHPUnit_Framework_TestCase { class ConnectionTest extends TestCase {
public function setUp() {}
public function tearDown() {}
public function testConnection() public function testConnection()
{ {
...@@ -15,11 +9,11 @@ class ConnectionTest extends PHPUnit_Framework_TestCase { ...@@ -15,11 +9,11 @@ class ConnectionTest extends PHPUnit_Framework_TestCase {
$c1 = DB::connection('mongodb'); $c1 = DB::connection('mongodb');
$c2 = DB::connection('mongodb'); $c2 = DB::connection('mongodb');
$this->assertEquals($c1, $c2); $this->assertEquals(spl_object_hash($c1), spl_object_hash($c2));
$c1 = DB::connection('mongodb'); $c1 = DB::connection('mongodb');
$c2 = DB::reconnect('mongodb'); $c2 = DB::reconnect('mongodb');
$this->assertNotEquals($c1, $c2); $this->assertNotEquals(spl_object_hash($c1), spl_object_hash($c2));
} }
public function testDb() public function testDb()
......
<?php <?php
class ModelTest extends PHPUnit_Framework_TestCase { class ModelTest extends TestCase {
public function setUp() {}
public function tearDown() public function tearDown()
{ {
......
<?php <?php
class MysqlRelationsTest extends PHPUnit_Framework_TestCase { class MysqlRelationsTest extends TestCase {
public function setUp() public function setUp()
{ {
parent::setUp();
MysqlUser::executeSchema(); MysqlUser::executeSchema();
MysqlBook::executeSchema(); MysqlBook::executeSchema();
MysqlRole::executeSchema(); MysqlRole::executeSchema();
......
<?php <?php
use Illuminate\Support\Facades\DB; class QueryBuilderTest extends TestCase {
class QueryBuilderTest extends PHPUnit_Framework_TestCase {
public function setUp() {}
public function tearDown() public function tearDown()
{ {
......
<?php <?php
class QueryTest extends PHPUnit_Framework_TestCase { class QueryTest extends TestCase {
protected static $started = false; protected static $started = false;
public function setUp() public function setUp()
{ {
parent::setUp();
// only run this stuff once
if (self::$started) return; if (self::$started) return;
User::create(array('name' => 'John Doe', 'age' => 35, 'title' => 'admin')); User::create(array('name' => 'John Doe', 'age' => 35, 'title' => 'admin'));
......
<?php <?php
use Illuminate\Database\Eloquent\Collection; class RelationsTest extends TestCase {
class RelationsTest extends PHPUnit_Framework_TestCase {
public function setUp() {
}
public function tearDown() public function tearDown()
{ {
...@@ -148,8 +143,8 @@ class RelationsTest extends PHPUnit_Framework_TestCase { ...@@ -148,8 +143,8 @@ class RelationsTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(array_key_exists('user_ids', $client->getAttributes())); $this->assertTrue(array_key_exists('user_ids', $client->getAttributes()));
$this->assertTrue(array_key_exists('client_ids', $user->getAttributes())); $this->assertTrue(array_key_exists('client_ids', $user->getAttributes()));
$users = $client->getRelation('users');
$clients = $user->getRelation('clients'); $clients = $user->getRelation('clients');
$users = $client->getRelation('users');
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $users); $this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $users);
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $clients); $this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $clients);
......
<?php <?php
use Illuminate\Support\Facades\DB; class SchemaTest extends TestCase {
use Illuminate\Support\Facades\Schema;
class SchemaTest extends PHPUnit_Framework_TestCase {
public function setUp() {}
public function tearDown() public function tearDown()
{ {
......
<?php <?php
use Illuminate\Support\Facades\DB; class SeederTest extends TestCase {
class SeederTest extends PHPUnit_Framework_TestCase {
public function setUp() {}
public function tearDown() public function tearDown()
{ {
......
<?php
class TestCase extends Orchestra\Testbench\TestCase {
/**
* Get package providers.
*
* @return array
*/
protected function getPackageProviders()
{
return array('Jenssegers\Mongodb\MongodbServiceProvider');
}
/**
* Define environment setup.
*
* @param Illuminate\Foundation\Application $app
* @return void
*/
protected function getEnvironmentSetUp($app)
{
// reset base path to point to our package's src directory
//$app['path.base'] = __DIR__ . '/../src';
// load custom config
$config = require 'config/database.php';
// set mongodb as default connection
$app['config']->set('database.default', 'mongodb');
// overwrite database configuration
$app['config']->set('database.connections.mysql', $config['connections']['mysql']);
$app['config']->set('database.connections.mongodb', $config['connections']['mongodb']);
}
}
<?php
class ValidationTest extends TestCase {
public function tearDown()
{
User::truncate();
}
public function testUnique()
{
$validator = Validator::make(
array('name' => 'John Doe'),
array('name' => 'required|unique:users')
);
$this->assertFalse($validator->fails());
User::create(array('name' => 'John Doe'));
$validator = Validator::make(
array('name' => 'John Doe'),
array('name' => 'required|unique:users')
);
$this->assertTrue($validator->fails());
}
}
<?php <?php
$loader = require 'vendor/autoload.php';
$loader->add('', 'tests/models');
$loader->add('', 'tests/seeds');
use Jenssegers\Mongodb\Model;
use Illuminate\Support\Facades\DB;
use Illuminate\Container\Container;
use Illuminate\Database\DatabaseManager;
use Illuminate\Database\Connectors\ConnectionFactory;
use Illuminate\Events\Dispatcher;
use Illuminate\Cache\CacheManager;
# Fake app class
class App extends ArrayObject {
function bound() {}
}
# Fake app
$app = new App;
# Load database configuration $loader = require 'vendor/autoload.php';
$config = require 'config/database.php';
foreach ($config as $key => $value)
{
$app['config']["database.$key"] = $value;
}
# Event dispatcher
$app['events'] = new Dispatcher;
# Cache driver
$app['config']['cache.driver'] = 'array';
$app['cache'] = new CacheManager($app);
# Initialize database manager
$app['db.factory'] = new ConnectionFactory(new Container);
$app['db'] = new DatabaseManager($app, $app['db.factory']);
# Extend database manager with reflection hack // Could not figure out how to add this to the loader
$reflection = new ReflectionClass('Jenssegers\Mongodb\Connection'); require 'TestCase.php';
$app['db']->extend('mongodb', array($reflection, 'newInstance'));
# Static setup // Add stuff to autoload
\Jenssegers\Mongodb\Model::setConnectionResolver($app['db']); $loader->add('', 'tests/models');
\Jenssegers\Eloquent\Model::setConnectionResolver($app['db']); $loader->add('', 'tests/seeds');
DB::setFacadeApplication($app);
...@@ -2,10 +2,8 @@ ...@@ -2,10 +2,8 @@
return array( return array(
'fetch' => PDO::FETCH_CLASS,
'default' => 'mongodb',
'connections' => array( 'connections' => array(
'mongodb' => array( 'mongodb' => array(
'name' => 'mongodb', 'name' => 'mongodb',
'driver' => 'mongodb', 'driver' => 'mongodb',
......
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