/** * Test update grouped product. * * @param GroupedProduct $product * @param GroupedProduct $originalProduct * @return void */ public function test(GroupedProduct $product, GroupedProduct $originalProduct) { // Precondition $originalProduct->persist(); // Steps $this->catalogProductIndex->open(); $this->catalogProductIndex->getProductGrid()->searchAndOpen(['sku' => $originalProduct->getSku()]); $this->catalogProductEdit->getProductForm()->fill($product); $this->catalogProductEdit->getFormPageActions()->save(); }
/** * Test update bundle product * * @param BundleProduct $product * @param BundleProduct $originalProduct * @return array */ public function test(BundleProduct $product, BundleProduct $originalProduct) { // Preconditions $originalProduct->persist(); $originalCategory = $originalProduct->hasData('category_ids') ? $originalProduct->getDataFieldConfig('category_ids')['source']->getCategories() : null; $category = $product->hasData('category_ids') ? $product->getDataFieldConfig('category_ids')['source']->getCategories() : $originalCategory; // Steps $filter = ['sku' => $originalProduct->getSku()]; $this->catalogProductIndex->open(); $this->catalogProductIndex->getProductGrid()->searchAndOpen($filter); $this->catalogProductEdit->getProductForm()->fill($product); $this->catalogProductEdit->getFormPageActions()->save(); return ['category' => $category]; }
/** * Run update product simple entity test * * @param CatalogProductSimple $initialProduct * @param CatalogProductSimple $product * @return array */ public function test(CatalogProductSimple $initialProduct, CatalogProductSimple $product) { // Preconditions $initialProduct->persist(); $initialCategory = $initialProduct->hasData('category_ids') ? $initialProduct->getDataFieldConfig('category_ids')['source']->getCategories()[0] : null; $category = $product->hasData('category_ids') && $product->getCategoryIds()[0] ? $product->getDataFieldConfig('category_ids')['source']->getCategories()[0] : $initialCategory; // Steps $filter = ['sku' => $initialProduct->getSku()]; $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen($filter); $this->editProductPage->getProductForm()->fill($product); $this->editProductPage->getFormPageActions()->save(); return ['category' => $category]; }
/** * Run update product simple entity test * * @param CatalogProductSimple $product * @return void */ public function testUpdate(CatalogProductSimple $product) { $filter = ['sku' => $this->product->getSku()]; $this->productGrid->open()->getProductGrid()->searchAndOpen($filter); $this->editProductPage->getProductForm()->fill($product); $this->editProductPage->getFormPageActions()->save(); }
/** * Test update downloadable product * * @param DownloadableProductInjectable $product * @param CatalogCategory $category * @return void */ public function testUpdateDownloadableProduct(DownloadableProductInjectable $product, CatalogCategory $category) { $filter = ['sku' => $this->product->getSku()]; $this->catalogProductIndex->open()->getProductGrid()->searchAndOpen($filter); $productBlockForm = $this->catalogProductEdit->getProductForm(); $productBlockForm->fill($product, null, $category); $this->catalogProductEdit->getFormPageActions()->save(); }
/** * Run update product virtual entity test * * @param CatalogProductVirtual $product * @return void */ public function test(CatalogProductVirtual $product) { // Steps $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen(['sku' => $this->product->getSku()]); $this->editProductPage->getProductForm()->fill($product); $this->editProductPage->getFormPageActions()->save(); }
/** * Test update bundle product * * @param CatalogProductBundle $product * @param CatalogProductBundle $originalProduct * @return void */ public function test(CatalogProductBundle $product, CatalogProductBundle $originalProduct) { $originalProduct->persist(); $this->catalogProductIndex->open(); $filter = ['sku' => $originalProduct->getSku()]; $this->catalogProductIndex->getProductGrid()->searchAndOpen($filter); $this->catalogProductEdit->getProductForm()->fill($product); $this->catalogProductEdit->getFormPageActions()->save(); }
/** * Check whether the attribute is mandatory. * * @param CatalogProductIndex $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param InjectableFixture $product * @return void */ public function processAssert(CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, InjectableFixture $product) { $catalogProductIndex->open()->getProductGrid()->searchAndOpen(['sku' => $product->getSku()]); $productForm = $catalogProductEdit->getProductForm(); $productForm->getAttributeElement($attribute)->setValue(''); $catalogProductEdit->getFormPageActions()->save(); $failedAttributes = $productForm->getRequireNoticeAttributes($product); $actualMessage = $failedAttributes['product-details'][$attribute->getFrontendLabel()]; \PHPUnit_Framework_Assert::assertEquals(self::REQUIRE_MESSAGE, $actualMessage, 'JS error notice on product edit page is not equal to expected.'); }
/** * Run test duplicate product entity. * * @param string $productType * @return array */ public function test($productType) { // Precondition $product = $this->createProduct($productType); // Steps $filter = ['sku' => $product->getSku()]; $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen($filter); $this->editProductPage->getFormPageActions()->saveAndDuplicate(); return ['product' => $product]; }
/** * Check whether the attribute is unique. * * @param CatalogProductIndex $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param CatalogProductSimple $product, * @param FixtureFactory $fixtureFactory * @throws \Exception * @return void */ public function processAssert(CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, CatalogProductSimple $product, FixtureFactory $fixtureFactory) { $simpleProduct = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'product_with_category_with_anchor', 'data' => ['attribute_set_id' => ['attribute_set' => $product->getDataFieldConfig('attribute_set_id')['source']->getAttributeSet()], 'custom_attribute' => $attribute]]); $catalogProductIndex->open()->getGridPageActionBlock()->addProduct('simple'); $productForm = $catalogProductEdit->getProductForm(); $productForm->fill($simpleProduct); $catalogProductEdit->getFormPageActions()->save(); $failedAttributes = $productForm->getRequireNoticeAttributes($simpleProduct); $actualMessage = isset($failedAttributes['product-details'][$attribute->getFrontendLabel()]) ? $failedAttributes['product-details'][$attribute->getFrontendLabel()] : null; \PHPUnit_Framework_Assert::assertEquals(sprintf(self::UNIQUE_MESSAGE, $attribute->getFrontendLabel()), $actualMessage, 'JS error notice on product edit page is not equal to expected.'); }
/** * Check whether the attribute is unique. * * @param CatalogProductIndex $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param CatalogProductSimple $product , * @param FixtureFactory $fixtureFactory * @throws \Exception * @return void */ public function processAssert(CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, CatalogProductSimple $product, FixtureFactory $fixtureFactory) { $this->fixtureFactory = $fixtureFactory; $simpleProduct = $this->createSimpleProductFixture($product, $attribute); $catalogProductIndex->open()->getGridPageActionBlock()->addProduct('simple'); $productForm = $catalogProductEdit->getProductForm(); $productForm->fill($simpleProduct); $catalogProductEdit->getFormPageActions()->save(); $actualErrorMessage = $catalogProductEdit->getMessagesBlock()->getErrorMessage(); $attributeLabel = $attribute->getFrontendLabel(); \PHPUnit_Framework_Assert::assertEquals(sprintf(self::UNIQUE_MESSAGE, $attributeLabel), $actualErrorMessage, 'JS error notice on product edit page is not equal to expected.'); }
/** * Check whether the attribute is mandatory. * * @param CatalogProductIndex $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param InjectableFixture $product * @param string $sectionName * @return void */ public function processAssert(CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, InjectableFixture $product, $sectionName) { $catalogProductIndex->open()->getProductGrid()->searchAndOpen(['sku' => $product->getSku()]); $productForm = $catalogProductEdit->getProductForm(); if (!$productForm->checkAttributeLabel($attribute)) { $productForm->openSection($sectionName); } $productForm->getAttributeElement($attribute)->setValue(''); $catalogProductEdit->getFormPageActions()->save(); $validationErrors = $productForm->getSection($sectionName)->getValidationErrors(); $actualMessage = isset($validationErrors[$attribute->getFrontendLabel()]) ? $validationErrors[$attribute->getFrontendLabel()] : ''; \PHPUnit_Framework_Assert::assertEquals(self::REQUIRE_MESSAGE, $actualMessage, 'JS error notice on product edit page is not equal to expected.'); }
/** * Create a new product with the given attribute set * * @return array */ public function run() { // Create product with attribute set mentioned above: $customAttribute = $this->attribute; if ($this->attributeValue !== null) { $customAttribute = ['value' => $this->attributeValue, 'attribute' => $customAttribute]; } $product = $this->fixtureFactory->createByCode('catalogProductSimple', ['dataset' => 'product_with_category_with_anchor', 'data' => ['attribute_set_id' => ['attribute_set' => $this->attributeSet], 'custom_attribute' => $customAttribute]]); $this->catalogProductIndex->open()->getGridPageActionBlock()->addProduct('simple'); $productForm = $this->catalogProductEdit->getProductForm(); $productForm->fill($product); $this->catalogProductEdit->getFormPageActions()->save(); return ['product' => $product]; }
/** * Move attribute To attribute set. * * @return array */ public function run() { $filterAttribute = ['set_name' => $this->attributeSet->getAttributeSetName()]; $this->catalogProductSetIndex->open()->getGrid()->searchAndOpen($filterAttribute); $this->catalogProductSetEdit->getAttributeSetEditBlock()->moveAttribute($this->attribute->getData()); $this->catalogProductSetEdit->getPageActions()->save(); // Create product with attribute set mentioned above: $product = $this->fixtureFactory->createByCode('catalogProductSimple', ['dataset' => 'product_with_category_with_anchor', 'data' => ['attribute_set_id' => ['attribute_set' => $this->attributeSet], 'custom_attribute' => $this->attribute]]); $this->catalogProductIndex->open()->getGridPageActionBlock()->addProduct('simple'); $productForm = $this->catalogProductEdit->getProductForm(); $productForm->fill($product); $this->catalogProductEdit->getFormPageActions()->save(); return ['product' => $product]; }
/** * Run product type switching on updating test. * * @param string $productOrigin * @param string $product * @param string $actionName * @return array */ public function test($productOrigin, $product, $actionName) { // Preconditions list($fixtureClass, $dataset) = explode('::', $productOrigin); $productOrigin = $this->fixtureFactory->createByCode(trim($fixtureClass), ['dataset' => trim($dataset)]); $productOrigin->persist(); list($fixtureClass, $dataset) = explode('::', $product); $product = $this->fixtureFactory->createByCode(trim($fixtureClass), ['dataset' => trim($dataset)]); // Steps $this->catalogProductIndex->open(); $this->catalogProductIndex->getProductGrid()->searchAndOpen(['sku' => $productOrigin->getSku()]); $this->performAction($actionName); $this->catalogProductEdit->getProductForm()->fill($product); $this->catalogProductEdit->getFormPageActions()->save($product); return ['product' => $product]; }
/** * Run update product simple entity test. * * @param CatalogProductSimple $initialProduct * @param CatalogProductSimple $product * @param string $configData * @return array */ public function test(CatalogProductSimple $initialProduct, CatalogProductSimple $product, $configData = '') { $this->configData = $configData; // Preconditions $initialProduct->persist(); $initialCategory = $initialProduct->hasData('category_ids') ? $initialProduct->getDataFieldConfig('category_ids')['source']->getCategories()[0] : null; $category = $product->hasData('category_ids') && $product->getCategoryIds()[0] ? $product->getDataFieldConfig('category_ids')['source']->getCategories()[0] : $initialCategory; $this->objectManager->create('Magento\\Config\\Test\\TestStep\\SetupConfigurationStep', ['configData' => $configData])->run(); // Steps $filter = ['sku' => $initialProduct->getSku()]; $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen($filter); $this->editProductPage->getProductForm()->fill($product); $this->editProductPage->getFormPageActions()->save(); return ['category' => $category]; }
/** * Assign promoted products. * * @param string $promotedProducts * @param string $type * @return void */ protected function assignPromotedProducts($promotedProducts, $type) { $promotedProducts = $this->parsePromotedProducts($promotedProducts); foreach ($promotedProducts as $productName => $assignedNames) { $initialProduct = $this->products[$productName]; $filter = ['sku' => $initialProduct->getSku()]; $assignedProducts = []; foreach ($assignedNames as $assignedName) { $assignedProducts[] = $this->products[$assignedName]; } $product = $this->fixtureFactory->create(get_class($initialProduct), ['data' => [$type => ['products' => $assignedProducts]]]); $this->catalogProductIndex->open(); $this->catalogProductIndex->getProductGrid()->searchAndOpen($filter); $this->catalogProductEdit->getProductForm()->fill($product); $this->catalogProductEdit->getFormPageActions()->save(); $this->catalogProductEdit->getMessagesBlock()->waitSuccessMessage(); } }
/** * Add custom attribute to product. * * @return void */ public function run() { $productForm = $this->catalogProductEdit->getFormPageActions(); $productForm->addNewAttribute(); $this->catalogProductEdit->getAddAttributeModal()->createNewAttribute(); }
/** * Save product. * * @return void */ public function run() { $this->catalogProductEdit->getFormPageActions()->save($this->product); }