/** * Assert that products cannot be found by name and sku on product grid. * * @param InjectableFixture[] $products * @param CatalogProduct $productGrid * @param AssertProductNotInGrid $assertProductNotInGrid * @return void */ public function processAssert(array $products, CatalogProduct $productGrid, AssertProductNotInGrid $assertProductNotInGrid) { $productGrid->open(); foreach ($products as $product) { $assertProductNotInGrid->assert($product, $productGrid); } }
/** * Assert that duplicated product can be found in grid by type, template, status and stock status. * * @param InjectableFixture $product * @param CatalogProduct $productGrid * @return void */ public function processAssert(InjectableFixture $product, CatalogProduct $productGrid) { $config = $product->getDataConfig(); $filter = ['name' => $product->getName(), 'visibility' => $product->getVisibility(), 'status' => 'Disabled', 'type' => ucfirst($config['create_url_params']['type']) . ' Product', 'price_to' => number_format($product->getPrice(), 2)]; $productGrid->open()->getProductGrid()->search($filter); \PHPUnit_Framework_Assert::assertTrue($productGrid->getProductGrid()->isRowVisible($filter, false, false), 'Product duplicate is absent in Products grid.'); }
/** * Check whether the attribute is mandatory. * * @param CatalogProduct $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param InjectableFixture $product * @return void */ public function processAssert(CatalogProduct $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['general'][$attribute->getFrontendLabel()]; \PHPUnit_Framework_Assert::assertEquals(self::REQUIRE_MESSAGE, $actualMessage, 'JS error notice on product edit page is not equal to expected.'); }
/** * Assert that configurable options available on configurable product Edit form on backend. * * @param CatalogProduct $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param InjectableFixture $product * @return void */ public function processAssert(CatalogProduct $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, InjectableFixture $product) { $options = $attribute->getOptions(); $attributeOptionsFromFixture = []; foreach ($options as $option) { $attributeOptionsFromFixture[] = $option['admin']; } $catalogProductIndex->open()->getProductGrid()->searchAndOpen(['sku' => $product->getSku()]); $productForm = $catalogProductEdit->getProductForm(); $attributeOptions = $productForm->getAttributeElement($attribute)->getValues(); \PHPUnit_Framework_Assert::assertEquals($attributeOptionsFromFixture, $attributeOptions); }
/** * Assert form data equals fixture data. * * @param InjectableFixture $product * @param CatalogProduct $productGrid * @param CatalogProductEdit $productPage * @param string $urlKeyFormat [optional] * @return void */ public function processAssert(InjectableFixture $product, CatalogProduct $productGrid, CatalogProductEdit $productPage, $urlKeyFormat = '%s') { $this->product = $product; $this->urlKeyFormat = $urlKeyFormat; $this->catalogProductEdit = $productPage; $filter = ['name' => $product->getName(), 'status' => 'Disabled']; $productGrid->open()->getProductGrid()->searchAndOpen($filter); $formData = $productPage->getProductForm()->getData($product); $fixtureData = $this->prepareFixtureData($product->getData()); $errors = $this->verifyData($fixtureData, $formData); \PHPUnit_Framework_Assert::assertEmpty($errors, $errors); }
/** * Assert form data equals fixture data. * * @param InjectableFixture $product * @param CatalogProduct $productGrid * @param CatalogProductEdit $productPage * @return void */ public function processAssert(InjectableFixture $product, CatalogProduct $productGrid, CatalogProductEdit $productPage) { $this->catalogProductEdit = $productPage; $filter = ['sku' => $product->getSku()]; $productGrid->open(); $productGrid->getProductGrid()->searchAndOpen($filter); $productData = $product->getData(); $fixtureData = $this->prepareFixtureData($productData, $this->sortFields); $formData = $this->prepareFormData($productPage->getProductForm()->getData($product), $this->sortFields); $error = $this->verifyData($fixtureData, $formData); \PHPUnit_Framework_Assert::assertTrue(empty($error), $error); }
/** * Assert that created product template: * 1. Displays in product template suggest container dropdown * 2. Can be used for new created product. * * @param FixtureFactory $fixtureFactory * @param CatalogProductEdit $productEdit * @param CatalogProduct $productGrid * @param CatalogAttributeSet $attributeSet * @param CatalogAttributeSet $attributeSetOriginal * @param CatalogProductNew $newProductPage * @param CatalogProductAttribute $productAttribute * @return void */ public function processAssert(FixtureFactory $fixtureFactory, CatalogProductEdit $productEdit, CatalogProduct $productGrid, CatalogAttributeSet $attributeSet, CatalogProductNew $newProductPage, CatalogProductAttribute $productAttribute, CatalogAttributeSet $attributeSetOriginal = null) { $productGrid->open(); $productGrid->getGridPageActionBlock()->addNew(); /**@var CatalogProductSimple $productSimple */ $productSimple = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'default', 'data' => ['attribute_set_id' => ['attribute_set' => $attributeSet]]]); $newProductPage->getProductForm()->fill($productSimple); $newProductPage->getFormPageActions()->saveAndContinue(); $attributeSetName = $attributeSet->getAttributeSetName(); \PHPUnit_Framework_Assert::assertTrue($productEdit->getProductForm()->checkAttributeSet($attributeSetName), "Product isn't in '{$attributeSetName}' Attribute Set."); if ($attributeSetOriginal === null) { $productEdit->getProductForm()->openTab('general'); \PHPUnit_Framework_Assert::assertTrue($productEdit->getProductForm()->checkAttributeLabel($productAttribute), "Product Attribute is absent on Product form."); } }
/** * Create and save product. * * @param InjectableFixture $product * @return void */ protected function createAndSaveProduct(InjectableFixture $product) { $this->catalogProductIndex->open(); $this->catalogProductIndex->getGridPageActionBlock()->addNew(); $this->catalogProductNew->getProductForm()->fill($product); $this->catalogProductNew->getFormPageActions()->save(); }
/** * Create Gift Card product entity. * * @param GiftCardProduct $product * @param CatalogCategory $category * @return void */ public function test(GiftCardProduct $product, CatalogCategory $category) { $this->catalogProductIndex->open(); $this->catalogProductIndex->getGridPageActionBlock()->addNew(); $this->catalogProductNew->getProductForm()->fill($product, null, $category); $this->catalogProductNew->getFormPageActions()->save(); }
/** * Test create catalog Configurable product run. * * @param ConfigurableProduct $product * @param CatalogCategory $category * @return array */ public function test(ConfigurableProduct $product, CatalogCategory $category) { // Steps $this->productIndex->open(); $this->productIndex->getGridPageActionBlock()->addNew(); $this->productNew->getProductForm()->fill($product, null, $category); $this->productNew->getFormPageActions()->save(); }
/** * Run create product virtual entity test. * * @param CatalogProductVirtual $product * @param CatalogCategory $category * @return void */ public function test(CatalogProductVirtual $product, CatalogCategory $category) { // Steps $this->productGrid->open(); $this->productGrid->getGridPageActionBlock()->addNew(); $this->newProductPage->getProductForm()->fill($product, null, $category); $this->newProductPage->getFormPageActions()->save(); }
/** * Run delete product test. * * @param string $products * @return array */ public function test($products) { //Preconditions $products = $this->createProducts($products); $deleteProducts = $this->prepareFilter($products); //Steps $this->catalogProductIndex->open(); $this->catalogProductIndex->getProductGrid()->massaction($deleteProducts, 'Delete', true); return ['products' => $products]; }
/** * Run create product simple entity test. * * @param CatalogProductSimple $product * @param CatalogCategory $category * @param string $configData * @return void */ public function test(CatalogProductSimple $product, CatalogCategory $category, $configData) { // Preconditions $this->objectManager->create('Mage\\Core\\Test\\TestStep\\SetupConfigurationStep', ['configData' => $configData])->run(); // Steps $this->productGrid->open(); $this->productGrid->getGridPageActionBlock()->addNew(); $this->newProductPage->getProductForm()->fill($product, null, $category); $this->newProductPage->getFormPageActions()->save(); }
/** * Run test duplicate product entity. * * @param string $productType * @return array */ public function test($productType) { // Precondition $product = $this->createProduct($productType); // Steps $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen(['sku' => $product->getSku()]); $this->editProductPage->getFormPageActions()->duplicate(); return ['product' => $product]; }
/** * Run update product simple entity test. * * @param CatalogProductSimple $initialProduct * @param CatalogProductSimple $product * @return array */ public function test(CatalogProductSimple $initialProduct, CatalogProductSimple $product) { // Preconditions $initialProduct->persist(); // Steps $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen(['sku' => $initialProduct->getSku()]); $this->editProductPage->getProductForm()->fill($product); $this->editProductPage->getFormPageActions()->save(); return ['category' => $this->getCategory($initialProduct, $product)]; }
/** * Add appurtenant products and save product. * * @param InjectableFixture $product * @param array $appurtenantData * @return void */ protected function addAppurtenantProducts(InjectableFixture $product, array $appurtenantData) { $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen(['sku' => $product->getSku()]); $form = $this->editProductPage->getProductForm(); $form->openTab($this->tabName); $appurtenantTab = $form->getTabElement($this->tabName); $appurtenantData[$this->appurtenantType['formIndex']]['value'] = $this->prepareData($appurtenantData[$this->appurtenantType['formIndex']]['value']); $appurtenantTab->fillFormTab($appurtenantData); $this->editProductPage->getFormPageActions()->save(); }
/** * Assert that created attribute is displayed on product form. * * @param InjectableFixture $product * @param CatalogProduct $productGrid * @param CatalogProductEdit $productEdit * @param CatalogProductAttribute $attribute * @return void */ public function processAssert(InjectableFixture $product, CatalogProduct $productGrid, CatalogProductEdit $productEdit, CatalogProductAttribute $attribute) { $productGrid->open(); $productGrid->getProductGrid()->searchAndOpen(['sku' => $product->getSku()]); \PHPUnit_Framework_Assert::assertTrue($productEdit->getProductForm()->checkAttributeLabel($attribute->getData()), "Product Attribute is absent on Product form."); }
/** * Check product on product grid. * * @param InjectableFixture $product * @param CatalogProduct $productGrid * @return void */ public function assert(InjectableFixture $product, CatalogProduct $productGrid) { $filter = ['sku' => $product->getSku(), 'name' => $product->getName()]; \PHPUnit_Framework_Assert::assertFalse($productGrid->getProductGrid()->isRowVisible($filter), "Product with sku {$filter['sku']} and name {$filter['name']} is present in Products grid."); }
/** * Open products on backend. * * @return void */ public function run() { $this->catalogProductIndex->open(); $this->catalogProductIndex->getProductGrid()->searchAndOpen(['sku' => $this->product->getSku()]); }
/** * Assert that after deleting product success message is present. * * @param InjectableFixture[] $products * @param CatalogProduct $productPage * @return void */ public function processAssert(array $products, CatalogProduct $productPage) { \PHPUnit_Framework_Assert::assertEquals(sprintf(self::SUCCESS_DELETE_MESSAGE, count($products)), $productPage->getMessagesBlock()->getSuccessMessages()); }
/** * Assert that product is present in products grid and can be found by sku, type, status and attribute set. * * @param InjectableFixture $product * @param CatalogProduct $productGrid * @return void */ public function processAssert(InjectableFixture $product, CatalogProduct $productGrid) { $this->product = $product; $productGrid->open(); \PHPUnit_Framework_Assert::assertTrue($productGrid->getProductGrid()->isRowVisible($this->prepareFilter()), 'Product \'' . $this->product->getName() . '\' is absent in Products grid.'); }
/** * Assert that success message is displayed after product save. * * @param CatalogProduct $productPage * @return void */ public function processAssert(CatalogProduct $productPage) { $actualMessages = $productPage->getMessagesBlock()->getSuccessMessages(); $actualMessages = is_array($actualMessages) ? $actualMessages : [$actualMessages]; \PHPUnit_Framework_Assert::assertContains(self::SUCCESS_MESSAGE, $actualMessages, 'Wrong success message is displayed.' . "\nExpected: " . self::SUCCESS_MESSAGE . "\nActual:\n" . implode("\n - ", $actualMessages)); }