/** * Register the service provider. * * @return void */ public function register() { DynamicModel::clearBootedModels(); $this->app->singleton('xe.db.proxy', function ($app) { return ProxyManager::instance($app['xe.register']); }); $this->app->singleton(['xe.db' => DatabaseHandler::class], function ($app) { $coupler = DatabaseCoupler::instance($app['db'], TransactionHandler::instance(), $app['xe.db.proxy'], new LaravelCache($app['cache']->driver('schema'))); $proxyClass = $app['xe.interception']->proxy(DatabaseHandler::class, 'XeDB'); return new $proxyClass($coupler, $app['config']->get('xe.database')); }); }
/** * test proxy interface * * @return void */ public function testProxyInterface() { $register = $this->register; $proxyManager = ProxyManager::instance($register); $connector = m::mock('Xpressengine\\Database\\VirtualConnectionInterface'); $proxyInstance = $this->getProxyInstance(); $proxyInstance->shouldReceive('set'); $proxyInstance->shouldReceive('insert'); $proxyInstance->shouldReceive('update'); $proxyInstance->shouldReceive('delete'); $register->shouldReceive('get')->andReturn([$proxyInstance]); $proxyManager->set($connector, []); $proxyManager->insert([]); $proxyManager->update([], []); $proxyManager->delete([]); $query = m::mock('Xpressengine\\Database\\DynamicQuery'); $proxyInstance->shouldReceive('get')->andReturn($query); $proxyInstance->shouldReceive('first')->andReturn($query); $proxyInstance->shouldReceive('wheres')->andReturn($query); $proxyInstance->shouldReceive('orders')->andReturn($query); $this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $proxyManager->get($query)); $this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $proxyManager->first($query)); $this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $proxyManager->wheres($query, [])); $this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $proxyManager->orders($query, [])); }