public function setUp()
 {
     parent::setUp();
     //Test parameters
     $this->params = ['_fields' => 'title,description,comments.title,user.first_name', 'title-lk' => 'Example Title|Another Title', 'title' => 'Example Title', 'title-not-lk' => 'Example Title', 'title-not' => 'Example Title|Another Title', 'id-min' => 5, 'id-max' => 6, 'id-gt' => 7, 'id-st' => 8, 'id-in' => '1,2', 'id-not-in' => '3,4', '_limit' => 5, '_offset' => 10, '_with' => 'comments.user', '_sort' => '-title,first_name,comments.created_at', '_config' => 'mode-default,meta-filter-count,meta-total-count'];
     $this->fulltextSelectExpression = new Expression('MATCH(title,description) AGAINST("Something to search" IN BOOLEAN MODE) as `_score`');
     //Test data
     $this->data = [['foo' => 'A1', 'bar' => 'B1'], ['foo' => 'A2', 'bar' => 'B2']];
     //Mock the application
     $app = m::mock('AppMock');
     $app->shouldReceive('instance')->once()->andReturn($app);
     Illuminate\Support\Facades\Facade::setFacadeApplication($app);
     //Mock the config
     $config = m::mock('ConfigMock');
     $config->shouldReceive('get')->once()->with('apihandler.prefix')->andReturn('_');
     $config->shouldReceive('get')->once()->with('apihandler.envelope')->andReturn(false);
     $config->shouldReceive('get')->once()->with('apihandler.fulltext')->andReturn('default');
     $config->shouldReceive('get')->once()->with('apihandler.fulltext')->andReturn('native');
     $config->shouldReceive('get')->once()->with('apihandler.fulltext_score_column')->andReturn('_score');
     Config::swap($config);
     $app->shouldReceive('make')->once()->andReturn($config);
     //Mock the input
     $input = m::mock('InputMock');
     $input->shouldReceive('get')->once()->with()->andReturn($this->params);
     Input::swap($input);
     //Mock the response
     $response = m::mock('ResponseMock');
     $response->shouldReceive('json')->once()->andReturn(new JsonResponse(['meta' => [], 'data' => new Collection()]));
     Response::swap($response);
     //Mock pdo
     $pdo = m::mock('PdoMock');
     $pdo->shouldReceive('quote')->once()->with('Something to search')->andReturn('Something to search');
     //Mock the connection the same way as laravel does:
     //tests/Database/DatabaseEloquentBuilderTest.php#L408-L418 (mockConnectionForModel($model, $database))
     $grammar = new Illuminate\Database\Query\Grammars\MySqlGrammar();
     $processor = new Illuminate\Database\Query\Processors\MySqlProcessor();
     $connection = m::mock('Illuminate\\Database\\ConnectionInterface', ['getQueryGrammar' => $grammar, 'getPostProcessor' => $processor]);
     $connection->shouldReceive('select')->once()->with('select * from `posts`', [])->andReturn($this->data);
     $connection->shouldReceive('select')->once()->with('select * from `posts`', [], true)->andReturn($this->data);
     $connection->shouldReceive('raw')->once()->with('MATCH(title,description) AGAINST("Something to search" IN BOOLEAN MODE) as `_score`')->andReturn($this->fulltextSelectExpression);
     $connection->shouldReceive('getPdo')->once()->andReturn($pdo);
     $resolver = m::mock('Illuminate\\Database\\ConnectionResolverInterface', ['connection' => $connection]);
     Post::setConnectionResolver($resolver);
     $this->apiHandler = new ApiHandler();
 }