Added Database class as a replacement for Db, fixed naming
This commit is contained in:
parent
d36de2d26f
commit
edeab5e75f
|
@ -0,0 +1,98 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Engelsystem\Database;
|
||||||
|
|
||||||
|
use Illuminate\Database\Connection as DatabaseConnection;
|
||||||
|
use PDO;
|
||||||
|
|
||||||
|
class Database
|
||||||
|
{
|
||||||
|
/** @var DatabaseConnection */
|
||||||
|
protected $connection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param DatabaseConnection $connection
|
||||||
|
*/
|
||||||
|
public function __construct(DatabaseConnection $connection)
|
||||||
|
{
|
||||||
|
$this->connection = $connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run a select query
|
||||||
|
*
|
||||||
|
* @param string $query
|
||||||
|
* @param array $bindings
|
||||||
|
* @return object[]
|
||||||
|
*/
|
||||||
|
public function select($query, array $bindings = [])
|
||||||
|
{
|
||||||
|
return $this->connection->select($query, $bindings);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run a select query and return only the first result or null if no result is found.
|
||||||
|
*
|
||||||
|
* @param string $query
|
||||||
|
* @param array $bindings
|
||||||
|
* @return object|null
|
||||||
|
*/
|
||||||
|
public function selectOne($query, array $bindings = [])
|
||||||
|
{
|
||||||
|
return $this->connection->selectOne($query, $bindings);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run an insert query
|
||||||
|
*
|
||||||
|
* @param string $query
|
||||||
|
* @param array $bindings
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function insert($query, array $bindings = [])
|
||||||
|
{
|
||||||
|
return $this->connection->insert($query, $bindings);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run an update query
|
||||||
|
*
|
||||||
|
* @param string $query
|
||||||
|
* @param array $bindings
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function update($query, array $bindings = [])
|
||||||
|
{
|
||||||
|
return $this->connection->update($query, $bindings);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run a delete query
|
||||||
|
*
|
||||||
|
* @param string $query
|
||||||
|
* @param array $bindings
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function delete($query, array $bindings = [])
|
||||||
|
{
|
||||||
|
return $this->connection->delete($query, $bindings);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the PDO instance
|
||||||
|
*
|
||||||
|
* @return PDO
|
||||||
|
*/
|
||||||
|
public function getPdo()
|
||||||
|
{
|
||||||
|
return $this->connection->getPdo();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return DatabaseConnection
|
||||||
|
*/
|
||||||
|
public function getConnection()
|
||||||
|
{
|
||||||
|
return $this->connection;
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ namespace Engelsystem\Database;
|
||||||
use Engelsystem\Container\ServiceProvider;
|
use Engelsystem\Container\ServiceProvider;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Database\Capsule\Manager as CapsuleManager;
|
use Illuminate\Database\Capsule\Manager as CapsuleManager;
|
||||||
|
use Illuminate\Database\Connection as DatabaseConnection;
|
||||||
use PDOException;
|
use PDOException;
|
||||||
|
|
||||||
class DatabaseServiceProvider extends ServiceProvider
|
class DatabaseServiceProvider extends ServiceProvider
|
||||||
|
@ -36,8 +37,18 @@ class DatabaseServiceProvider extends ServiceProvider
|
||||||
$this->exitOnError();
|
$this->exitOnError();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->app->instance('db', $capsule);
|
$this->app->instance(CapsuleManager::class, $capsule);
|
||||||
|
$this->app->instance(Db::class, $capsule);
|
||||||
Db::setDbManager($capsule);
|
Db::setDbManager($capsule);
|
||||||
|
|
||||||
|
$connection = $capsule->getConnection();
|
||||||
|
$this->app->instance(DatabaseConnection::class, $connection);
|
||||||
|
|
||||||
|
$database = $this->app->make(Database::class);
|
||||||
|
$this->app->instance(Database::class, $database);
|
||||||
|
$this->app->instance('db', $database);
|
||||||
|
$this->app->instance('db.pdo', $pdo);
|
||||||
|
$this->app->instance('db.connection', $connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,6 +6,7 @@ use Illuminate\Database\Capsule\Manager as CapsuleManager;
|
||||||
use Illuminate\Database\Connection as DatabaseConnection;
|
use Illuminate\Database\Connection as DatabaseConnection;
|
||||||
use PDO;
|
use PDO;
|
||||||
|
|
||||||
|
/** @deprecated */
|
||||||
class Db
|
class Db
|
||||||
{
|
{
|
||||||
/** @var CapsuleManager */
|
/** @var CapsuleManager */
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Migrate
|
||||||
protected $app;
|
protected $app;
|
||||||
|
|
||||||
/** @var SchemaBuilder */
|
/** @var SchemaBuilder */
|
||||||
protected $scheme;
|
protected $schema;
|
||||||
|
|
||||||
/** @var callable */
|
/** @var callable */
|
||||||
protected $output;
|
protected $output;
|
||||||
|
@ -29,13 +29,13 @@ class Migrate
|
||||||
/**
|
/**
|
||||||
* Migrate constructor
|
* Migrate constructor
|
||||||
*
|
*
|
||||||
* @param SchemaBuilder $scheme
|
* @param SchemaBuilder $schema
|
||||||
* @param Application $app
|
* @param Application $app
|
||||||
*/
|
*/
|
||||||
public function __construct(SchemaBuilder $scheme, Application $app)
|
public function __construct(SchemaBuilder $schema, Application $app)
|
||||||
{
|
{
|
||||||
$this->app = $app;
|
$this->app = $app;
|
||||||
$this->scheme = $scheme;
|
$this->schema = $schema;
|
||||||
$this->output = function () { };
|
$this->output = function () { };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,11 +160,11 @@ class Migrate
|
||||||
*/
|
*/
|
||||||
protected function initMigration()
|
protected function initMigration()
|
||||||
{
|
{
|
||||||
if ($this->scheme->hasTable($this->table)) {
|
if ($this->schema->hasTable($this->table)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->scheme->create($this->table, function (Blueprint $table) {
|
$this->schema->create($this->table, function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->string('migration');
|
$table->string('migration');
|
||||||
});
|
});
|
||||||
|
@ -177,7 +177,7 @@ class Migrate
|
||||||
*/
|
*/
|
||||||
protected function getTableQuery()
|
protected function getTableQuery()
|
||||||
{
|
{
|
||||||
return $this->scheme->getConnection()->table($this->table);
|
return $this->schema->getConnection()->table($this->table);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3,16 +3,19 @@
|
||||||
namespace Engelsystem\Database\Migration;
|
namespace Engelsystem\Database\Migration;
|
||||||
|
|
||||||
use Engelsystem\Container\ServiceProvider;
|
use Engelsystem\Container\ServiceProvider;
|
||||||
use Engelsystem\Database\Db;
|
use Engelsystem\Database\Database;
|
||||||
use Illuminate\Database\Schema\Builder as SchemaBuilder;
|
use Illuminate\Database\Schema\Builder as SchemaBuilder;
|
||||||
|
|
||||||
class MigrationServiceProvider extends ServiceProvider
|
class MigrationServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
public function register()
|
public function register()
|
||||||
{
|
{
|
||||||
$schema = Db::connection()->getSchemaBuilder();
|
/** @var Database $database */
|
||||||
$this->app->instance('db.scheme', $schema);
|
$database = $this->app->get(Database::class);
|
||||||
$this->app->bind(SchemaBuilder::class, 'db.scheme');
|
$schema = $database->getConnection()->getSchemaBuilder();
|
||||||
|
|
||||||
|
$this->app->instance('db.schema', $schema);
|
||||||
|
$this->app->bind(SchemaBuilder::class, 'db.schema');
|
||||||
|
|
||||||
$migration = $this->app->make(Migrate::class);
|
$migration = $this->app->make(Migrate::class);
|
||||||
$this->app->instance('db.migration', $migration);
|
$this->app->instance('db.migration', $migration);
|
||||||
|
|
|
@ -3,7 +3,9 @@
|
||||||
namespace Engelsystem\Test\Unit\Database;
|
namespace Engelsystem\Test\Unit\Database;
|
||||||
|
|
||||||
use Engelsystem\Config\Config;
|
use Engelsystem\Config\Config;
|
||||||
|
use Engelsystem\Database\Database;
|
||||||
use Engelsystem\Database\DatabaseServiceProvider;
|
use Engelsystem\Database\DatabaseServiceProvider;
|
||||||
|
use Engelsystem\Database\Db;
|
||||||
use Engelsystem\Test\Unit\ServiceProviderTest;
|
use Engelsystem\Test\Unit\ServiceProviderTest;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Database\Capsule\Manager as CapsuleManager;
|
use Illuminate\Database\Capsule\Manager as CapsuleManager;
|
||||||
|
@ -18,9 +20,29 @@ class DatabaseServiceProviderTest extends ServiceProviderTest
|
||||||
*/
|
*/
|
||||||
public function testRegister()
|
public function testRegister()
|
||||||
{
|
{
|
||||||
list($app, $dbManager) = $this->prepare(['driver' => 'sqlite', 'database' => ':memory:']);
|
/** @var Application|MockObject $app */
|
||||||
|
/** @var CapsuleManager|MockObject $dbManager */
|
||||||
|
/** @var PDO|MockObject $pdo */
|
||||||
|
/** @var Database|MockObject $database */
|
||||||
|
/** @var Connection|MockObject $connection */
|
||||||
|
list($app, $dbManager, $pdo, $database, $connection) = $this->prepare(
|
||||||
|
[
|
||||||
|
'driver' => 'sqlite',
|
||||||
|
'database' => ':memory:'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
$this->setExpects($app, 'instance', ['db', $dbManager]);
|
$app->expects($this->exactly(7))
|
||||||
|
->method('instance')
|
||||||
|
->withConsecutive(
|
||||||
|
[CapsuleManager::class, $dbManager],
|
||||||
|
[Db::class, $dbManager],
|
||||||
|
[Connection::class, $connection],
|
||||||
|
[Database::class, $database],
|
||||||
|
['db', $database],
|
||||||
|
['db.pdo', $pdo],
|
||||||
|
['db.connection', $connection]
|
||||||
|
);
|
||||||
|
|
||||||
$serviceProvider = new DatabaseServiceProvider($app);
|
$serviceProvider = new DatabaseServiceProvider($app);
|
||||||
$serviceProvider->register();
|
$serviceProvider->register();
|
||||||
|
@ -64,13 +86,31 @@ class DatabaseServiceProviderTest extends ServiceProviderTest
|
||||||
$connection = $this->getMockBuilder(Connection::class)
|
$connection = $this->getMockBuilder(Connection::class)
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
|
/** @var PDO|MockObject $pdo */
|
||||||
|
$pdo = $this->getMockBuilder(PDO::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
/** @var Database|MockObject $database */
|
||||||
|
$database = $this->getMockBuilder(Database::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
$app = $this->getApp(['get', 'make', 'instance']);
|
$app = $this->getApp(['get', 'make', 'instance']);
|
||||||
|
|
||||||
$this->setExpects($app, 'get', ['config'], $config);
|
$this->setExpects($app, 'get', ['config'], $config);
|
||||||
$this->setExpects($app, 'make', [CapsuleManager::class], $dbManager);
|
|
||||||
$this->setExpects($config, 'get', ['database'], $dbConfigData, $this->atLeastOnce());
|
$this->setExpects($config, 'get', ['database'], $dbConfigData, $this->atLeastOnce());
|
||||||
|
|
||||||
|
$app->expects($this->atLeastOnce())
|
||||||
|
->method('make')
|
||||||
|
->withConsecutive(
|
||||||
|
[CapsuleManager::class],
|
||||||
|
[Database::class]
|
||||||
|
)
|
||||||
|
->willReturn(
|
||||||
|
$dbManager,
|
||||||
|
$database
|
||||||
|
);
|
||||||
|
|
||||||
$this->setExpects($dbManager, 'setAsGlobal');
|
$this->setExpects($dbManager, 'setAsGlobal');
|
||||||
$this->setExpects($dbManager, 'bootEloquent');
|
$this->setExpects($dbManager, 'bootEloquent');
|
||||||
|
|
||||||
|
@ -86,6 +126,6 @@ class DatabaseServiceProviderTest extends ServiceProviderTest
|
||||||
});
|
});
|
||||||
$this->setExpects($dbManager, 'getConnection', [], $connection, $this->atLeastOnce());
|
$this->setExpects($dbManager, 'getConnection', [], $connection, $this->atLeastOnce());
|
||||||
|
|
||||||
return [$app, $dbManager];
|
return [$app, $dbManager, $pdo, $database, $connection];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,146 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Engelsystem\Test\Unit\Database;
|
||||||
|
|
||||||
|
use Engelsystem\Database\Database;
|
||||||
|
use Illuminate\Database\Capsule\Manager as CapsuleManager;
|
||||||
|
use Illuminate\Database\Connection as DatabaseConnection;
|
||||||
|
use PDO;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use PHPUnit_Framework_MockObject_MockObject as MockObject;
|
||||||
|
|
||||||
|
class DatabaseTest extends TestCase
|
||||||
|
{
|
||||||
|
/** @var DatabaseConnection */
|
||||||
|
protected $connection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \Engelsystem\Database\Database::__construct()
|
||||||
|
* @covers \Engelsystem\Database\Database::getPdo()
|
||||||
|
* @covers \Engelsystem\Database\Database::getConnection()
|
||||||
|
*/
|
||||||
|
public function testInit()
|
||||||
|
{
|
||||||
|
/** @var Pdo|MockObject $pdo */
|
||||||
|
$pdo = $this->getMockBuilder(Pdo::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
/** @var DatabaseConnection|MockObject $databaseConnection */
|
||||||
|
$databaseConnection = $this->getMockBuilder(DatabaseConnection::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$databaseConnection->expects($this->atLeastOnce())
|
||||||
|
->method('getPdo')
|
||||||
|
->willReturn($pdo);
|
||||||
|
|
||||||
|
$db = new Database($databaseConnection);
|
||||||
|
|
||||||
|
$this->assertEquals($databaseConnection, $db->getConnection());
|
||||||
|
$this->assertEquals($pdo, $db->getPdo());
|
||||||
|
$this->assertInstanceOf(PDO::class, $db->getPdo());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \Engelsystem\Database\Database::select()
|
||||||
|
*/
|
||||||
|
public function testSelect()
|
||||||
|
{
|
||||||
|
$db = new Database($this->connection);
|
||||||
|
|
||||||
|
$return = $db->select('SELECT * FROM test_data');
|
||||||
|
$this->assertTrue(count($return) > 3);
|
||||||
|
|
||||||
|
$return = $db->select('SELECT * FROM test_data WHERE id = ?', [2]);
|
||||||
|
$this->assertCount(1, $return);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \Engelsystem\Database\Database::selectOne()
|
||||||
|
*/
|
||||||
|
public function testSelectOne()
|
||||||
|
{
|
||||||
|
$db = new Database($this->connection);
|
||||||
|
|
||||||
|
$return = $db->selectOne('SELECT * FROM test_data');
|
||||||
|
$this->assertEquals('Foo', $return->data);
|
||||||
|
|
||||||
|
$return = $db->selectOne('SELECT * FROM test_data WHERE id = -1');
|
||||||
|
$this->assertEmpty($return);
|
||||||
|
|
||||||
|
$return = $db->selectOne('SELECT * FROM test_data WHERE id = ?', [3]);
|
||||||
|
$this->assertTrue(!is_array($return));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \Engelsystem\Database\Database::insert()
|
||||||
|
*/
|
||||||
|
public function testInsert()
|
||||||
|
{
|
||||||
|
$db = new Database($this->connection);
|
||||||
|
|
||||||
|
$result = $db->insert("INSERT INTO test_data (id, data) VALUES (5, 'Some random text'), (6, 'another text')");
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \Engelsystem\Database\Database::update()
|
||||||
|
*/
|
||||||
|
public function testUpdate()
|
||||||
|
{
|
||||||
|
$db = new Database($this->connection);
|
||||||
|
|
||||||
|
$count = $db->update("UPDATE test_data SET data='NOPE' WHERE data LIKE '%Replaceme%'");
|
||||||
|
$this->assertEquals(3, $count);
|
||||||
|
|
||||||
|
$count = $db->update("UPDATE test_data SET data=? WHERE data LIKE '%NOPE%'", ['Some random text!']);
|
||||||
|
$this->assertEquals(3, $count);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \Engelsystem\Database\Database::delete()
|
||||||
|
*/
|
||||||
|
public function testDelete()
|
||||||
|
{
|
||||||
|
$db = new Database($this->connection);
|
||||||
|
|
||||||
|
$count = $db->delete('DELETE FROM test_data WHERE id=1');
|
||||||
|
$this->assertEquals(1, $count);
|
||||||
|
|
||||||
|
$count = $db->delete('DELETE FROM test_data WHERE data LIKE ?', ['%Replaceme%']);
|
||||||
|
$this->assertEquals(3, $count);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup in memory database
|
||||||
|
*/
|
||||||
|
protected function setUp()
|
||||||
|
{
|
||||||
|
$dbManager = new CapsuleManager();
|
||||||
|
$dbManager->addConnection(['driver' => 'sqlite', 'database' => ':memory:']);
|
||||||
|
|
||||||
|
$connection = $dbManager->getConnection();
|
||||||
|
$this->connection = $connection;
|
||||||
|
|
||||||
|
$connection->getPdo()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
|
$connection->statement(
|
||||||
|
'
|
||||||
|
CREATE TABLE test_data(
|
||||||
|
id INT PRIMARY KEY NOT NULL,
|
||||||
|
data TEXT NOT NULL
|
||||||
|
);
|
||||||
|
');
|
||||||
|
$connection->statement('CREATE UNIQUE INDEX test_data_id_uindex ON test_data (id);');
|
||||||
|
$connection->insert("
|
||||||
|
INSERT INTO test_data (id, data)
|
||||||
|
VALUES
|
||||||
|
(1, 'Foo'),
|
||||||
|
(2, 'Bar'),
|
||||||
|
(3, 'Batz'),
|
||||||
|
(4, 'Lorem ipsum dolor sit'),
|
||||||
|
(10, 'Replaceme ipsum dolor sit amet'),
|
||||||
|
(11, 'Lorem Replaceme dolor sit amet'),
|
||||||
|
(12, 'Lorem ipsum Replaceme sit amet')
|
||||||
|
;");
|
||||||
|
}
|
||||||
|
}
|
|
@ -120,12 +120,12 @@ class MigrateTest extends TestCase
|
||||||
$dbManager->bootEloquent();
|
$dbManager->bootEloquent();
|
||||||
$db = $dbManager->getConnection();
|
$db = $dbManager->getConnection();
|
||||||
$db->useDefaultSchemaGrammar();
|
$db->useDefaultSchemaGrammar();
|
||||||
$scheme = $db->getSchemaBuilder();
|
$schema = $db->getSchemaBuilder();
|
||||||
|
|
||||||
$app->instance('scheme', $scheme);
|
$app->instance('schema', $schema);
|
||||||
$app->bind(SchemaBuilder::class, 'scheme');
|
$app->bind(SchemaBuilder::class, 'schema');
|
||||||
|
|
||||||
$migration = new Migrate($scheme, $app);
|
$migration = new Migrate($schema, $app);
|
||||||
|
|
||||||
$messages = [];
|
$messages = [];
|
||||||
$migration->setOutput(function ($msg) use (&$messages) {
|
$migration->setOutput(function ($msg) use (&$messages) {
|
||||||
|
@ -134,7 +134,7 @@ class MigrateTest extends TestCase
|
||||||
|
|
||||||
$migration->run(__DIR__ . '/Stub', Migrate::UP);
|
$migration->run(__DIR__ . '/Stub', Migrate::UP);
|
||||||
|
|
||||||
$this->assertTrue($scheme->hasTable('migrations'));
|
$this->assertTrue($schema->hasTable('migrations'));
|
||||||
|
|
||||||
$migrations = $db->table('migrations')->get();
|
$migrations = $db->table('migrations')->get();
|
||||||
$this->assertCount(3, $migrations);
|
$this->assertCount(3, $migrations);
|
||||||
|
@ -143,7 +143,7 @@ class MigrateTest extends TestCase
|
||||||
$this->assertTrue($migrations->contains('migration', '2017_12_24_053300_another_stuff'));
|
$this->assertTrue($migrations->contains('migration', '2017_12_24_053300_another_stuff'));
|
||||||
$this->assertTrue($migrations->contains('migration', '2022_12_22_221222_add_some_feature'));
|
$this->assertTrue($migrations->contains('migration', '2022_12_22_221222_add_some_feature'));
|
||||||
|
|
||||||
$this->assertTrue($scheme->hasTable('lorem_ipsum'));
|
$this->assertTrue($schema->hasTable('lorem_ipsum'));
|
||||||
|
|
||||||
$migration->run(__DIR__ . '/Stub', Migrate::DOWN, true);
|
$migration->run(__DIR__ . '/Stub', Migrate::DOWN, true);
|
||||||
|
|
||||||
|
@ -155,6 +155,6 @@ class MigrateTest extends TestCase
|
||||||
$migrations = $db->table('migrations')->get();
|
$migrations = $db->table('migrations')->get();
|
||||||
$this->assertCount(0, $migrations);
|
$this->assertCount(0, $migrations);
|
||||||
|
|
||||||
$this->assertFalse($scheme->hasTable('lorem_ipsum'));
|
$this->assertFalse($schema->hasTable('lorem_ipsum'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,10 @@
|
||||||
|
|
||||||
namespace Engelsystem\Test\Unit\Database\Migration;
|
namespace Engelsystem\Test\Unit\Database\Migration;
|
||||||
|
|
||||||
use Engelsystem\Database\Db;
|
use Engelsystem\Database\Database;
|
||||||
use Engelsystem\Database\Migration\Migrate;
|
use Engelsystem\Database\Migration\Migrate;
|
||||||
use Engelsystem\Database\Migration\MigrationServiceProvider;
|
use Engelsystem\Database\Migration\MigrationServiceProvider;
|
||||||
use Engelsystem\Test\Unit\ServiceProviderTest;
|
use Engelsystem\Test\Unit\ServiceProviderTest;
|
||||||
use Illuminate\Database\Capsule\Manager as CapsuleManager;
|
|
||||||
use Illuminate\Database\Connection;
|
use Illuminate\Database\Connection;
|
||||||
use Illuminate\Database\Schema\Builder as SchemaBuilder;
|
use Illuminate\Database\Schema\Builder as SchemaBuilder;
|
||||||
use PHPUnit_Framework_MockObject_MockObject as MockObject;
|
use PHPUnit_Framework_MockObject_MockObject as MockObject;
|
||||||
|
@ -22,8 +21,8 @@ class MigrationServiceProviderTest extends ServiceProviderTest
|
||||||
$migration = $this->getMockBuilder(Migrate::class)
|
$migration = $this->getMockBuilder(Migrate::class)
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
/** @var MockObject|CapsuleManager $dbManager */
|
/** @var Database|MockObject $database */
|
||||||
$dbManager = $this->getMockBuilder(CapsuleManager::class)
|
$database = $this->getMockBuilder(Database::class)
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
/** @var MockObject|Connection $dbConnection */
|
/** @var MockObject|Connection $dbConnection */
|
||||||
|
@ -35,19 +34,19 @@ class MigrationServiceProviderTest extends ServiceProviderTest
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
$app = $this->getApp(['make', 'instance', 'bind']);
|
$app = $this->getApp(['make', 'instance', 'bind', 'get']);
|
||||||
|
|
||||||
$app->expects($this->atLeastOnce())
|
$app->expects($this->atLeastOnce())
|
||||||
->method('instance')
|
->method('instance')
|
||||||
->withConsecutive(['db.scheme'], ['db.migration'])
|
->withConsecutive(['db.schema'], ['db.migration'])
|
||||||
->willReturnOnConsecutiveCalls($schemaBuilder, $migration);
|
->willReturnOnConsecutiveCalls($schemaBuilder, $migration);
|
||||||
|
|
||||||
$this->setExpects($app, 'bind', [SchemaBuilder::class, 'db.scheme']);
|
$this->setExpects($app, 'bind', [SchemaBuilder::class, 'db.schema']);
|
||||||
$this->setExpects($app, 'make', [Migrate::class], $migration);
|
$this->setExpects($app, 'make', [Migrate::class], $migration);
|
||||||
|
$this->setExpects($app, 'get', [Database::class], $database);
|
||||||
|
|
||||||
$this->setExpects($dbConnection, 'getSchemaBuilder', null, $schemaBuilder);
|
$this->setExpects($dbConnection, 'getSchemaBuilder', null, $schemaBuilder);
|
||||||
$this->setExpects($dbManager, 'getConnection', null, $dbConnection);
|
$this->setExpects($database, 'getConnection', null, $dbConnection);
|
||||||
Db::setDbManager($dbManager);
|
|
||||||
|
|
||||||
$serviceProvider = new MigrationServiceProvider($app);
|
$serviceProvider = new MigrationServiceProvider($app);
|
||||||
$serviceProvider->register();
|
$serviceProvider->register();
|
||||||
|
|
Loading…
Reference in New Issue