public function setUp()
 {
     parent::setUp();
     Artisan::call('migrate');
     SubProduct::boot();
     $this->eloquent_sub_product = $this->app->make('Giftertipster\\Entity\\Eloquent\\SubProduct');
 }
 public function setUp()
 {
     parent::setUp();
     Artisan::call('migrate');
     Product::boot();
     Description::boot();
     SubProduct::boot();
     Image::boot();
     Feature::boot();
     Variation::boot();
     KeywordProfile::boot();
     Add::boot();
     //es client and index repo for testing integration with index
     $this->es_client = $this->app->make('Elasticsearch\\Client');
     $this->index_repo = $this->app->make('Giftertipster\\Repository\\ProductsIndex\\Product\\ESProductsIndexProductRepository');
     $this->config = \Config::get('index.index_products_type_product');
     $this->index = $this->config['setup']['index'];
     $this->type = $this->config['setup']['type'];
     //seed user id 1 & 2 for tests
     Factory::create('Giftertipster\\Entity\\Eloquent\\User', ['permissions' => []]);
     Factory::create('Giftertipster\\Entity\\Eloquent\\User', ['permissions' => []]);
     //seed add type id 1 for tests
     Factory::create('Giftertipster\\Entity\\Eloquent\\AddType');
     $this->createStubCategories();
     //mock prod suite validator (validates suite attributes keys)
     //may be overriden in individual tests
     $suite_validator = \Mockery::mock('Giftertipster\\Service\\Validate\\ProductSuite\\ProductSuiteValidationInterface');
     $suite_validator->shouldReceive('validateSuiteAttributesForCreate')->andReturn(true);
     $suite_validator->shouldReceive('validateSuiteAttributesForUpdate')->andReturn(true);
     $this->app->instance('Giftertipster\\Service\\Validate\\ProductSuite\\ProductSuiteValidationInterface', $suite_validator);
 }