/**
* test query builder interface without proxy, dynamic
*
* @return void
*/
public function testWithDynamicAndProxy()
{
$params = ['some' => 'some'];
$processor = m::mock('Illuminate\\Database\\Query\\Processors\\Processor');
$processor->shouldReceive('processSelect')->andReturn([['id' => 1]]);
$processor->shouldReceive('processInsertGetId')->andReturn(1);
$grammar = m::mock('Illuminate\\Database\\Query\\Grammars\\Grammar');
$grammar->shouldReceive('compileInsert')->andReturn('insert into table');
$grammar->shouldReceive('compileInsertGetId')->andReturn('insert into table');
$grammar->shouldReceive('compileUpdate')->andReturn('update table set');
$grammar->shouldReceive('compileDelete')->andReturn('delete from table');
$grammar->shouldReceive('compileSelect')->andReturn('select * from table');
$schemaBuilder = m::mock('Illuminate\\Database\\Schema\\Builder');
$schemaBuilder->shouldReceive('getColumnListing')->andReturn(['some']);
$connection = m::mock('Illuminate\\Database\\Connection');
$connection->shouldReceive('getPostProcessor')->andReturn($processor);
$connection->shouldReceive('getQueryGrammar')->andReturn($grammar);
$connection->shouldReceive('getSchemaBuilder')->andReturn($schemaBuilder);
$proxyManager = m::mock('Xpressengine\\Database\\ProxyManager');
$proxyManager->shouldReceive('set');
$proxyManager->shouldReceive('insert');
$proxyManager->shouldReceive('update');
$proxyManager->shouldReceive('delete');
$proxyManager->shouldReceive('wheres');
$proxyManager->shouldReceive('orders');
$connector = m::mock('Xpressengine\\Database\\VirtualConnection');
$connector->shouldReceive('getDefaultConnection')->andReturn($connection);
$connector->shouldReceive('getSchemaBuilder')->andReturn($schemaBuilder);
$connector->shouldReceive('getProxyManager')->andReturn($proxyManager);
$connector->shouldReceive('insert')->andReturn(true);
$connector->shouldReceive('insertGetId')->andReturn(1);
$connector->shouldReceive('update')->andReturn(1);
$connector->shouldReceive('delete')->andReturn(1);
$connector->shouldReceive('select')->andReturn(1);
$connector->shouldReceive('getSchema')->andReturn($params);
/** @var \Xpressengine\Database\VirtualConnection $connector */
$query = new DynamicQuery($connector, $grammar, $processor);
$query->useProxy(true);
$this->assertEquals(true, $query->insert($params));
$this->assertEquals(1, $query->insertGetId($params));
$this->assertEquals(true, $query->update($params));
$this->assertEquals(true, $query->delete($params));
$this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $query->where([]));
$proxyManager->shouldReceive('get');
$proxyManager->shouldReceive('first');
$this->assertEquals([['id' => 1]], $query->get());
$this->assertEquals(['id' => 1], $query->first());
}