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 populateModelData(&$model, $counter, $name)
 {
     assert('$model instanceof Product');
     parent::populateModel($model);
     $productTemplateName = self::getProductTemplateForProduct($name);
     $allTemplates = ProductTemplate::getAll();
     foreach ($allTemplates as $template) {
         if ($template->name == $productTemplateName) {
             $templateId = $template->id;
         }
     }
     $productTemplate = ProductTemplate::getById($templateId);
     $model->name = $name;
     $model->quantity = mt_rand(1, 95);
     $model->productTemplate = $productTemplate;
     $model->stage->value = 'Open';
     $model->priceFrequency = $productTemplate->priceFrequency;
     $model->sellPrice->value = $productTemplate->sellPrice->value;
     $model->type = $productTemplate->type;
 }
 /**
  * @depends testEditOfTheProductTemplateForTheTagCloudFieldAfterRemovingAllTagsPlacedForProductTemplatesModule
  */
 public function testEditOfTheProductTemplateForTheCustomFieldsPlacedForProductTemplatesModule()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     //Set the date and datetime variable values here.
     $date = Yii::app()->dateFormatter->format(DateTimeUtil::getLocaleDateFormatForInput(), time());
     $dateAssert = date('Y-m-d');
     $datetime = Yii::app()->dateFormatter->format(DateTimeUtil::getLocaleDateTimeFormatForInput(), time());
     $datetimeAssert = date('Y-m-d H:i:') . "00";
     $baseCurrency = Currency::getByCode(Yii::app()->currencyHelper->getBaseCode());
     //Retrieve the account id, the super user id and opportunity Id.
     $superUserId = $super->id;
     $productTemplate = ProductTemplate::getByName('myEditProductTemplate');
     $productTemplateId = $productTemplate[0]->id;
     //Edit a new ProductTemplate based on the custom fields.
     $this->setGetArray(array('id' => $productTemplateId));
     $this->setPostArray(array('ProductTemplate' => array('name' => 'myEditProductTemplate', 'type' => ProductTemplate::TYPE_PRODUCT, 'description' => 'Test Description', 'sellPrice' => array('currency' => array('id' => $baseCurrency->id), 'value' => 200), 'cost' => array('currency' => array('id' => $baseCurrency->id), 'value' => 200), 'listPrice' => array('currency' => array('id' => $baseCurrency->id), 'value' => 200), 'priceFrequency' => 2, 'status' => ProductTemplate::STATUS_ACTIVE, 'sellPriceFormula' => array('type' => SellPriceFormula::TYPE_EDITABLE), 'checkboxCstm' => '0', 'currencyCstm' => array('value' => 40, 'currency' => array('id' => $baseCurrency->id)), 'decimalCstm' => '12', 'dateCstm' => $date, 'datetimeCstm' => $datetime, 'picklistCstm' => array('value' => 'b'), 'multiselectCstm' => array('values' => array('gg', 'hh')), 'tagcloudCstm' => array('values' => array('reading', 'surfing')), 'countrylistCstm' => array('value' => 'aaaa'), 'statelistCstm' => array('value' => 'aaa1'), 'citylistCstm' => array('value' => 'ab1'), 'integerCstm' => '11', 'phoneCstm' => '259-784-2069', 'radioCstm' => array('value' => 'e'), 'textCstm' => 'This is a test Edit Text', 'textareaCstm' => 'This is a test Edit TextArea', 'urlCstm' => 'http://wwww.abc-edit.com')));
     $this->runControllerWithRedirectExceptionAndGetUrl('productTemplates/default/edit');
     //Check the details if they are saved properly for the custom fields.
     $productTemplateId = self::getModelIdByModelNameAndName('ProductTemplate', 'myEditProductTemplate');
     $productTemplate = ProductTemplate::getById($productTemplateId);
     $this->assertEquals($productTemplate->name, 'myEditProductTemplate');
     $this->assertEquals($productTemplate->sellPrice->value, 200.0);
     $this->assertEquals($productTemplate->cost->value, 200.0);
     $this->assertEquals($productTemplate->listPrice->value, 200.0);
     $this->assertEquals($productTemplate->description, 'Test Description');
     $this->assertEquals($productTemplate->type, ProductTemplate::TYPE_PRODUCT);
     $this->assertEquals($productTemplate->status, ProductTemplate::STATUS_ACTIVE);
     $this->assertEquals($productTemplate->priceFrequency, 2);
     $this->assertEquals($productTemplate->sellPriceFormula->type, SellPriceFormula::TYPE_EDITABLE);
     $this->assertEquals($productTemplate->checkboxCstm, '0');
     $this->assertEquals($productTemplate->currencyCstm->value, 40);
     $this->assertEquals($productTemplate->currencyCstm->currency->id, $baseCurrency->id);
     $this->assertEquals($productTemplate->dateCstm, $dateAssert);
     $this->assertEquals($productTemplate->datetimeCstm, $datetimeAssert);
     $this->assertEquals($productTemplate->decimalCstm, '12');
     $this->assertEquals($productTemplate->picklistCstm->value, 'b');
     $this->assertEquals($productTemplate->integerCstm, 11);
     $this->assertEquals($productTemplate->phoneCstm, '259-784-2069');
     $this->assertEquals($productTemplate->radioCstm->value, 'e');
     $this->assertEquals($productTemplate->textCstm, 'This is a test Edit Text');
     $this->assertEquals($productTemplate->textareaCstm, 'This is a test Edit TextArea');
     $this->assertEquals($productTemplate->urlCstm, 'http://wwww.abc-edit.com');
     $this->assertEquals($productTemplate->dateCstm, $dateAssert);
     $this->assertEquals($productTemplate->datetimeCstm, $datetimeAssert);
     $this->assertEquals($productTemplate->countrylistCstm->value, 'aaaa');
     $this->assertEquals($productTemplate->statelistCstm->value, 'aaa1');
     $this->assertEquals($productTemplate->citylistCstm->value, 'ab1');
     $this->assertContains('gg', $productTemplate->multiselectCstm->values);
     $this->assertContains('hh', $productTemplate->multiselectCstm->values);
     $this->assertContains('reading', $productTemplate->tagcloudCstm->values);
     $this->assertContains('surfing', $productTemplate->tagcloudCstm->values);
     $metadata = CalculatedDerivedAttributeMetadata::getByNameAndModelClassName('calcnumber', 'ProductTemplate');
     $testCalculatedValue = CalculatedNumberUtil::calculateByFormulaAndModelAndResolveFormat($metadata->getFormula(), $productTemplate);
     $this->assertEquals(132, intval(str_replace(',', "", $testCalculatedValue)));
     // Not Coding Standard
 }
 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]);
 }
示例#5
0
 /**
  * Copies the product template
  * @param int $id
  */
 public function actionCopy($id)
 {
     $copyToProductTemplate = new ProductTemplate();
     $postVariableName = get_class($copyToProductTemplate);
     if (!isset($_POST[$postVariableName])) {
         $productTemplate = ProductTemplate::getById((int) $id);
         ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($productTemplate);
         ProductZurmoCopyModelUtil::copy($productTemplate, $copyToProductTemplate);
     }
     $this->processEdit($copyToProductTemplate);
 }
 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);
 }
 /**
  * @deletes selected product templates.
  */
 public function testMassDeleteActionsForSelectedIds()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $productTemplates = ProductTemplate::getAll();
     $this->assertEquals(13, count($productTemplates));
     $superTemplateId = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 1');
     $superTemplateId2 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 2');
     $superTemplateId3 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 3');
     $superTemplateId4 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 4');
     $superTemplateId5 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 5');
     $superTemplateId6 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 6');
     $superTemplateId7 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 7');
     $superTemplateId8 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 8');
     $superTemplateId9 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 9');
     $superTemplateId10 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 10');
     $superTemplateId11 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 11');
     $superTemplateId12 = self::getModelIdByModelNameAndName('ProductTemplate', 'My Catalog Item 12');
     //Load Model MassDelete Views.
     //MassDelete view for single selected ids
     $this->setGetArray(array('selectedIds' => '5,6,7,8,9', 'selectAll' => ''));
     // Not Coding Standard
     $this->resetPostArray();
     $content = $this->runControllerWithNoExceptionsAndGetContent('productTemplates/default/massDelete');
     $this->assertFalse(strpos($content, '<strong>5</strong>&#160;Catalog Items selected for removal') === false);
     //MassDelete view for all result selected ids
     $this->setGetArray(array('selectAll' => '1'));
     $this->resetPostArray();
     $content = $this->runControllerWithNoExceptionsAndGetContent('productTemplates/default/massDelete');
     $this->assertFalse(strpos($content, '<strong>13</strong>&#160;Catalog Items selected for removal') === false);
     //MassDelete for selected Record Count
     $productTemplates = ProductTemplate::getAll();
     $this->assertEquals(13, count($productTemplates));
     //MassDelete for selected ids for paged scenario
     $superTemplate1 = ProductTemplate::getById($superTemplateId);
     $superTemplate2 = ProductTemplate::getById($superTemplateId2);
     $superTemplate3 = ProductTemplate::getById($superTemplateId3);
     $superTemplate4 = ProductTemplate::getById($superTemplateId4);
     $superTemplate5 = ProductTemplate::getById($superTemplateId5);
     $superTemplate6 = ProductTemplate::getById($superTemplateId6);
     $superTemplate7 = ProductTemplate::getById($superTemplateId7);
     $pageSize = Yii::app()->pagination->getForCurrentUserByType('massDeleteProgressPageSize');
     $this->assertEquals(5, $pageSize);
     //MassDelete for selected ids for page 1
     $this->setGetArray(array('selectedIds' => $superTemplateId . ',' . $superTemplateId2 . ',' . $superTemplateId3 . ',' . $superTemplateId4 . ',' . $superTemplateId5 . ',' . $superTemplateId6 . ',' . $superTemplateId7, 'selectAll' => '', 'massDelete' => '', 'ProductTemplate_page' => 1));
     $this->setPostArray(array('selectedRecordCount' => 7));
     $this->runControllerWithExitExceptionAndGetContent('productTemplates/default/massDelete');
     //MassDelete for selected Record Count
     $productTemplates = ProductTemplate::getAll();
     $this->assertEquals(8, count($productTemplates));
     //MassDelete for selected ids for page 2
     $this->setGetArray(array('selectedIds' => $superTemplateId . ',' . $superTemplateId2 . ',' . $superTemplateId3 . ',' . $superTemplateId4 . ',' . $superTemplateId5 . ',' . $superTemplateId6 . ',' . $superTemplateId7, 'selectAll' => '', 'massDelete' => '', 'ProductTemplate_page' => 2));
     $this->setPostArray(array('selectedRecordCount' => 7));
     $this->runControllerWithNoExceptionsAndGetContent('productTemplates/default/massDeleteProgress');
     //MassDelete for selected Record Count
     $productTemplates = ProductTemplate::getAll();
     $this->assertEquals(6, count($productTemplates));
 }