/**
  * 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));
 }