public function testResolveProductTemplateHasManyProductCategoriesFromPost()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $category1 = ProductCategoryTestHelper::createProductCategoryByName('Test Product Category');
     $category2 = ProductCategoryTestHelper::createProductCategoryByName('Test Product Category2');
     $productTemplate = ProductTemplateTestHelper::createProductTemplateByName('PT1');
     $postData = array('categoryIds' => $category1->id . ',' . $category2->id);
     // Not Coding Standard
     $id = $productTemplate->id;
     $productTemplate->forget();
     unset($productTemplate);
     $productTemplate = ProductTemplate::getById($id);
     $categories = ProductTemplateProductCategoriesUtil::resolveProductTemplateHasManyProductCategoriesFromPost($productTemplate, $postData);
     $this->assertEquals(count($categories), 2);
     $this->assertEquals($categories[$category1->id]->id, $category1->id);
 }
 public function testSuperUserDeleteAction()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     Yii::app()->user->userModel = $super;
     $productCategory = ProductCategoryTestHelper::createProductCategoryByName("My New Category");
     //Delete a product template
     $this->setGetArray(array('id' => $productCategory->id));
     $this->resetPostArray();
     $productCategories = ProductCategory::getAll();
     $this->assertEquals(14, count($productCategories));
     $this->runControllerWithRedirectExceptionAndGetContent('productTemplates/category/delete');
     $productCategories = ProductCategory::getAll();
     $this->assertEquals(13, count($productCategories));
     try {
         ProductCategory::getById($productCategory->id);
         $this->fail();
     } catch (NotFoundException $e) {
         //success
     }
 }
 public function testProductTemplateCategories()
 {
     $user = UserTestHelper::createBasicUser('Steven 2');
     $product = ProductTestHelper::createProductByNameForOwner('Product 1', $user);
     $productTemplate = ProductTemplateTestHelper::createProductTemplateByVariables($product, ProductTemplate::PRICE_FREQUENCY_ONE_TIME, ProductTemplate::TYPE_PRODUCT, ProductTemplate::STATUS_ACTIVE, SellPriceFormula::TYPE_EDITABLE);
     $productCategory = ProductCategoryTestHelper::createProductCategoryByName("Test Category");
     $productCategoryII = ProductCategoryTestHelper::createProductCategoryByName("Test CategoryII");
     $productTemplate->productCategories->add($productCategory);
     $productTemplate->productCategories->add($productCategoryII);
     $this->assertTrue($productTemplate->save());
     $id = $productTemplate->id;
     $productTemplate->forget();
     unset($productTemplate);
     $productTemplate = ProductTemplate::getById($id);
     $this->assertEquals($productCategory, $productTemplate->productCategories[0]);
     $this->assertEquals($productCategoryII, $productTemplate->productCategories[1]);
 }
 public function testSuperUserCreateProductFromProductTemplateControllerAction()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $products = Product::getAll();
     $this->assertEquals(1, count($products));
     $superProductTemplateId = self::getModelIdByModelNameAndName('ProductTemplate', 'My Product Template');
     $productTemplate = ProductTemplate::getById($superProductTemplateId);
     $productCategory = ProductCategoryTestHelper::createProductCategoryByName("Test Category");
     $productCategoryII = ProductCategoryTestHelper::createProductCategoryByName("Test CategoryII");
     $productTemplate->productCategories->add($productCategory);
     $productTemplate->productCategories->add($productCategoryII);
     $productTemplate->save();
     $superProductTemplateId = $productTemplate->id;
     $productTemplate->forget();
     unset($productTemplate);
     $accountId = self::getModelIdByModelNameAndName('Account', 'superAccount');
     $this->setGetArray(array('relationModuleId' => 'accounts', 'portletId' => '1', 'uniqueLayoutId' => 'AccountDetailsAndRelationsView_1', 'id' => $superProductTemplateId, 'relationModelId' => $accountId, 'relationAttributeName' => 'account', 'relationModelClassName' => 'Account', 'redirect' => '0'));
     $this->runControllerWithNoExceptionsAndGetContent('products/default/createProductFromProductTemplate', true);
     $products = Product::getAll();
     $this->assertEquals(2, count($products));
     $latestProduct = $products[1];
     $productSavedCategory = $latestProduct->productCategories[0];
     $productSavedCategoryII = $latestProduct->productCategories[1];
     $this->assertEquals('Test Category', $productSavedCategory->name);
     $this->assertEquals('Test CategoryII', $productSavedCategoryII->name);
     $this->assertEquals('My Product Template', $latestProduct->name);
     $this->assertEquals(500.54, $latestProduct->sellPrice->value);
     //When created from contact should copy the contact account to product
     $contactId = self::getModelIdByModelNameAndName('Contact', 'superContact superContactson');
     $this->setGetArray(array('relationModuleId' => 'accounts', 'portletId' => '1', 'uniqueLayoutId' => 'ContactDetailsAndRelationsView_1', 'id' => $superProductTemplateId, 'relationModelId' => $contactId, 'relationAttributeName' => 'contact', 'relationModelClassName' => 'Contact', 'redirect' => '0'));
     $this->runControllerWithNoExceptionsAndGetContent('products/default/createProductFromProductTemplate', true);
     $products = Product::getAll();
     $this->assertEquals(3, count($products));
     $latestProduct = $products[2];
     $this->assertEquals($accountId, $latestProduct->account->id);
 }