public static function createProductCategoryByName($name, $parentCategory = null)
 {
     $productCategory = new ProductCategory();
     $productCategory->name = $name;
     $productCatalog = new ProductCatalog();
     $productCatalog->name = ProductCatalog::DEFAULT_NAME;
     $productCatalog->save();
     $productCategory->productCatalogs->add($productCatalog);
     $saved = $productCategory->save();
     if ($parentCategory != null) {
         $productCategory->productCategories->add($parentCategory);
     }
     assert('$saved');
     return $productCategory;
 }
 public function testCreateAndGetProductCategoryById()
 {
     $user = UserTestHelper::createBasicUser('Steven');
     $productCategory = new ProductCategory();
     $productCategory->name = "My Test Category";
     $productCatalog = new ProductCatalog();
     $productCatalog->name = ProductCatalog::DEFAULT_NAME;
     $productCatalog->save();
     $productCategory->productCatalogs->add($productCatalog);
     $this->assertTrue($productCategory->save());
     $id = $productCategory->id;
     $productCategory->forget();
     unset($productCategory);
     $productCategory = ProductCategory::getById($id);
     $this->assertEquals('My Test Category', $productCategory->name);
     $this->assertEquals(ProductCatalog::DEFAULT_NAME, $productCategory->productCatalogs[0]->name);
 }
 /**
  * @param string $name
  * @return string
  */
 public static function resolveAndGetByName($name)
 {
     assert('is_string($name)');
     assert('$name != ""');
     try {
         $catalog = self::getByName($name);
     } catch (NotFoundException $e) {
         if ($name == self::DEFAULT_NAME) {
             $catalog = new ProductCatalog();
             $catalog->name = self::DEFAULT_NAME;
             $saved = $catalog->save();
             assert('$saved');
         } else {
             throw new NotFoundException();
         }
     }
     return $catalog;
 }