/**
  * Find products by category
  *
  * @param  Category $category
  * @param  array    $options
  * @return array
  */
 public static function browseByCategory($category, $options = [])
 {
     $model = new Product();
     $find = $category->products();
     $fillable = $model->fillable;
     if (!empty($options['filters'])) {
         $inFilters = array_intersect($fillable, array_keys($options['filters']));
         foreach ($inFilters as $key) {
             $find = $find->where("shop_products.{$key}", 'LIKE', $options['filters'][$key]);
         }
     }
     $total = $find->count();
     if (!empty($options['order'])) {
         foreach ($options['order'] as $field => $direction) {
             $find = $find->orderBy($field, $direction);
         }
     }
     if (!empty($options['offset'])) {
         $find = $find->skip($options['offset']);
     }
     if (!empty($options['limit'])) {
         $find = $find->take($options['limit']);
     }
     if (!empty($options['cursor'])) {
         $find = $find->where('shop_products.id', '<', $options['cursor']);
     }
     return ['total' => $total, 'offset' => empty($options['offset']) ? 0 : $options['offset'], 'limit' => empty($options['limit']) ? 0 : $options['limit'], 'data' => $find->get()];
 }
 public function testDeleteSuccess()
 {
     $category = factory(Category::class)->create();
     $user = factory(App\User::class)->make(['hasRole' => true]);
     Auth::login($user);
     $res = $this->call('DELETE', "/categories/{$category->id}");
     $this->assertEquals(204, $res->getStatusCode());
     $exists = Category::find($category->id);
     $this->assertNull($exists);
 }