Commit b32d35e3 authored by Jens Segers's avatar Jens Segers

Tweak unittests and added validation test for #174

parent 5b7f335a
......@@ -16,8 +16,7 @@
"illuminate/events": "4.1.x"
},
"require-dev": {
"illuminate/cache": "4.1.x",
"illuminate/auth": "4.1.x",
"orchestra/testbench": "2.1.*",
"mockery/mockery": "*"
},
"autoload": {
......
......@@ -39,5 +39,8 @@
<directory>tests/RelationsTest.php</directory>
<directory>tests/MysqlRelationsTest.php</directory>
</testsuite>
<testsuite name="validation">
<directory>tests/ValidationTest.php</directory>
</testsuite>
</testsuites>
</phpunit>
<?php
use Illuminate\Support\Facades\DB;
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'));
}
class CacheTest extends TestCase {
public function tearDown()
{
User::truncate();
$this->cache->forget('db.users');
Cache::forget('db.users');
}
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();
$this->assertEquals(3, count($users));
......@@ -33,7 +23,7 @@ class CacheTest extends PHPUnit_Framework_TestCase {
$users = User::where('age', '>', 10)->remember(10, 'db.users')->get();
$this->assertEquals(3, count($users));
$users = $this->cache->get('db.users');
$users = Cache::get('db.users');
$this->assertEquals(3, count($users));
}
......
<?php
use Illuminate\Support\Facades\DB;
use Jenssegers\Mongodb\Connection;
class ConnectionTest extends PHPUnit_Framework_TestCase {
public function setUp() {}
public function tearDown() {}
class ConnectionTest extends TestCase {
public function testConnection()
{
......@@ -15,11 +9,11 @@ class ConnectionTest extends PHPUnit_Framework_TestCase {
$c1 = 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');
$c2 = DB::reconnect('mongodb');
$this->assertNotEquals($c1, $c2);
$this->assertNotEquals(spl_object_hash($c1), spl_object_hash($c2));
}
public function testDb()
......
<?php
class ModelTest extends PHPUnit_Framework_TestCase {
public function setUp() {}
class ModelTest extends TestCase {
public function tearDown()
{
......
<?php
class MysqlRelationsTest extends PHPUnit_Framework_TestCase {
class MysqlRelationsTest extends TestCase {
public function setUp()
{
parent::setUp();
MysqlUser::executeSchema();
MysqlBook::executeSchema();
MysqlRole::executeSchema();
......
<?php
use Illuminate\Support\Facades\DB;
class QueryBuilderTest extends PHPUnit_Framework_TestCase {
public function setUp() {}
class QueryBuilderTest extends TestCase {
public function tearDown()
{
......
<?php
class QueryTest extends PHPUnit_Framework_TestCase {
class QueryTest extends TestCase {
protected static $started = false;
public function setUp()
{
parent::setUp();
// only run this stuff once
if (self::$started) return;
User::create(array('name' => 'John Doe', 'age' => 35, 'title' => 'admin'));
......
<?php
use Illuminate\Database\Eloquent\Collection;
class RelationsTest extends PHPUnit_Framework_TestCase {
public function setUp() {
}
class RelationsTest extends TestCase {
public function tearDown()
{
......@@ -148,8 +143,8 @@ class RelationsTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(array_key_exists('user_ids', $client->getAttributes()));
$this->assertTrue(array_key_exists('client_ids', $user->getAttributes()));
$users = $client->getRelation('users');
$clients = $user->getRelation('clients');
$users = $client->getRelation('users');
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $users);
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $clients);
......
<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class SchemaTest extends PHPUnit_Framework_TestCase {
public function setUp() {}
class SchemaTest extends TestCase {
public function tearDown()
{
......
<?php
use Illuminate\Support\Facades\DB;
class SeederTest extends PHPUnit_Framework_TestCase {
public function setUp() {}
class SeederTest extends TestCase {
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
$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
$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']);
$loader = require 'vendor/autoload.php';
# Extend database manager with reflection hack
$reflection = new ReflectionClass('Jenssegers\Mongodb\Connection');
$app['db']->extend('mongodb', array($reflection, 'newInstance'));
// Could not figure out how to add this to the loader
require 'TestCase.php';
# Static setup
\Jenssegers\Mongodb\Model::setConnectionResolver($app['db']);
\Jenssegers\Eloquent\Model::setConnectionResolver($app['db']);
DB::setFacadeApplication($app);
// Add stuff to autoload
$loader->add('', 'tests/models');
$loader->add('', 'tests/seeds');
......@@ -2,10 +2,8 @@
return array(
'fetch' => PDO::FETCH_CLASS,
'default' => 'mongodb',
'connections' => array(
'mongodb' => array(
'name' => '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