/**
  * Prepare filter for product grid.
  *
  * @return array
  */
 protected function prepareFilter()
 {
     $productStatus = $this->product->getStatus() === null || $this->product->getStatus() === 'Product online' ? 'Enabled' : 'Disabled';
     $filter = ['type' => $this->getProductType(), 'sku' => $this->product->getSku(), 'status' => $productStatus];
     if ($this->product->hasData('attribute_set_id')) {
         $filter['set_name'] = $this->product->getAttributeSetId();
     }
     return $filter;
 }
 /**
  * Assert that duplicated product is found by sku and has correct product type, product template,
  * product status disabled and out of stock
  *
  * @param FixtureInterface $product
  * @param CatalogProductIndex $productGrid
  * @return void
  */
 public function processAssert(FixtureInterface $product, CatalogProductIndex $productGrid)
 {
     $config = $product->getDataConfig();
     $filter = ['name' => $product->getName(), 'visibility' => $product->getVisibility(), 'status' => 'Disabled', 'sku' => $product->getSku() . '-1', 'type' => ucfirst($config['create_url_params']['type']) . ' Product', 'price_to' => number_format($product->getPrice(), 2)];
     $productGrid->open()->getProductGrid()->search($filter);
     $filter['price_to'] = '$' . $filter['price_to'];
     \PHPUnit_Framework_Assert::assertTrue($productGrid->getProductGrid()->isRowVisible($filter, false), 'Product duplicate is absent in Products grid.');
 }
 /**
  * Assert form data equals fixture data.
  *
  * @param FixtureInterface $product
  * @param CatalogProductIndex $productGrid
  * @param CatalogProductEdit $productPage
  * @return void
  */
 public function processAssert(FixtureInterface $product, CatalogProductIndex $productGrid, CatalogProductEdit $productPage)
 {
     $filter = ['sku' => $product->getSku() . '-1'];
     $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);
 }
Beispiel #4
0
 /**
  * Verify displayed product sku on product page(front-end) equals passed from fixture
  *
  * @return string|null
  */
 protected function verifySku()
 {
     $fixtureProductSku = $this->product->getSku();
     $formProductSku = $this->productView->getProductSku();
     if ($fixtureProductSku === null || $fixtureProductSku == $formProductSku) {
         return null;
     }
     return "Displayed product sku on product page(front-end) not equals passed from fixture. " . "Actual: {$formProductSku}, expected: {$fixtureProductSku}.";
 }
 /**
  * Assert form data equals fixture data
  *
  * @param FixtureInterface $product
  * @param CatalogProductIndex $productGrid
  * @param CatalogProductEdit $productPage
  * @return void
  */
 public function processAssert(FixtureInterface $product, CatalogProductIndex $productGrid, CatalogProductEdit $productPage)
 {
     $filter = ['sku' => $product->getSku()];
     $productGrid->open()->getProductGrid()->searchAndOpen($filter);
     $fieldsForm = $productPage->getProductForm()->getData($product);
     $fieldsFixture = $this->prepareFixtureData($product->getData());
     $fieldsFixture['associated'] = $this->prepareGroupedOptions($fieldsFixture['associated']);
     $errors = $this->verifyData($fieldsFixture, $fieldsForm);
     \PHPUnit_Framework_Assert::assertEmpty($errors, $errors);
 }
Beispiel #6
0
 /**
  * Find cart item blocks for associated products.
  *
  * @param FixtureInterface $product
  * @return array
  */
 protected function findCartItems(FixtureInterface $product)
 {
     $cartItems = [];
     /** @var GroupedProduct $product */
     $associatedProducts = $product->getAssociated()['products'];
     foreach ($associatedProducts as $product) {
         $cartItems[$product->getSku()] = parent::getCartItem($product);
     }
     return $cartItems;
 }
 /**
  * Assert form data equals fixture data
  *
  * @param FixtureInterface $product
  * @param CatalogProductIndex $productGrid
  * @param CatalogProductEdit $productPage
  * @return void
  */
 public function processAssert(FixtureInterface $product, CatalogProductIndex $productGrid, CatalogProductEdit $productPage)
 {
     $filter = ['sku' => $product->getSku()];
     $productGrid->open();
     $productGrid->getProductGrid()->searchAndOpen($filter);
     $productData = $product->getData();
     if ($product->hasData('custom_options')) {
         $customOptionsSource = $product->getDataFieldConfig('custom_options')['source'];
         $productData['custom_options'] = $customOptionsSource->getCustomOptions();
     }
     $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 product can be searched via Quick Search using searchable product attributes (Search by SKU)
  *
  * @param CatalogsearchResult $catalogSearchResult
  * @param CmsIndex $cmsIndex
  * @param FixtureInterface $product
  * @return void
  *
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function processAssert(CatalogsearchResult $catalogSearchResult, CmsIndex $cmsIndex, FixtureInterface $product)
 {
     $cmsIndex->open();
     $sku = $product->hasData('sku') !== false ? $product->getSku() : $product->getName();
     $cmsIndex->getSearchBlock()->search($sku);
     $quantityAndStockStatus = $product->getQuantityAndStockStatus();
     $stockStatus = isset($quantityAndStockStatus['is_in_stock']) ? $quantityAndStockStatus['is_in_stock'] : null;
     $isVisible = $catalogSearchResult->getListProductBlock()->getProductItem($product)->isVisible();
     while (!$isVisible && $catalogSearchResult->getBottomToolbar()->nextPage()) {
         $isVisible = $catalogSearchResult->getListProductBlock()->getProductItem($product)->isVisible();
     }
     if ($product->getVisibility() === 'Catalog' || $stockStatus === 'Out of Stock') {
         $isVisible = !$isVisible;
         list($this->errorMessage, $this->successfulMessage) = [$this->successfulMessage, $this->errorMessage];
     }
     \PHPUnit_Framework_Assert::assertTrue($isVisible, $this->errorMessage);
 }
 /**
  * Assert form data equals duplicate product configurable data.
  *
  * @param FixtureInterface $product
  * @param CatalogProductIndex $productGrid
  * @param CatalogProductEdit $productPage
  * @return void
  */
 public function processAssert(FixtureInterface $product, CatalogProductIndex $productGrid, CatalogProductEdit $productPage)
 {
     $duplicateProductSku = $product->getSku() . '-1';
     $filter = ['sku' => $duplicateProductSku];
     $productGrid->open();
     $productGrid->getProductGrid()->searchAndOpen($filter);
     $productData = $product->getData();
     $productData['sku'] = $duplicateProductSku;
     $productData['status'] = 'Product offline';
     if (isset($compareData['quantity_and_stock_status']['qty'])) {
         $compareData['quantity_and_stock_status']['qty'] = '';
         $compareData['quantity_and_stock_status']['is_in_stock'] = 'Out of Stock';
     }
     $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);
 }
Beispiel #10
0
 /**
  * @constructor
  * @param FixtureInterface $product
  */
 public function __construct(FixtureInterface $product)
 {
     /** @var GroupedProduct $product */
     $checkoutData = $product->getCheckoutData();
     $this->data = isset($checkoutData['cartItem']) ? $checkoutData['cartItem'] : [];
     $products = $product->getDataFieldConfig('associated')['source']->getProducts();
     $cartItem = [];
     $associatedProducts = [];
     foreach ($products as $key => $product) {
         $key = 'product_key_' . $key;
         $associatedProducts[$key] = $product;
     }
     // Replace key in checkout data
     foreach ($this->data as $fieldName => $fieldValues) {
         foreach ($fieldValues as $key => $value) {
             $cartItem[$fieldName][$associatedProducts[$key]->getSku()] = $value;
         }
     }
     // Add empty "options" field
     foreach ($associatedProducts as $product) {
         $cartItem['options'][] = ['title' => $product->getName(), 'value' => $cartItem['qty'][$product->getSku()]];
     }
     $this->data = $cartItem;
 }
Beispiel #11
0
 /**
  * Get item product block.
  *
  * @param FixtureInterface $product
  * @return Product
  */
 public function getItemProductBlock(FixtureInterface $product)
 {
     $selector = sprintf($this->productItems, $product->getSku());
     return $this->blockFactory->create('Magento\\Sales\\Test\\Block\\Adminhtml\\Order\\Creditmemo\\Form\\Items\\Product', ['element' => $this->_rootElement->find($selector, Locator::SELECTOR_XPATH)]);
 }
Beispiel #12
0
 /**
  * Get failed item block.
  *
  * @param FixtureInterface $product
  * @return Description
  */
 public function getFailedItemBlock($product)
 {
     $item = $this->_rootElement->find(sprintf($this->failedItem, $product->getSku()), Locator::SELECTOR_XPATH);
     return $this->blockFactory->create('Enterprise\\Checkout\\Test\\Block\\Adminhtml\\Sales\\Sku\\Errors\\Grid\\Description', ['element' => $item]);
 }
 /**
  * Assert that product cannot be found via Quick Search using searchable product attributes.
  *
  * @param CatalogsearchResult $catalogSearchResult
  * @param CmsIndex $cmsIndex
  * @param FixtureInterface $product
  * @return void
  */
 public function processAssert(CatalogsearchResult $catalogSearchResult, CmsIndex $cmsIndex, FixtureInterface $product)
 {
     $cmsIndex->open();
     $cmsIndex->getSearchBlock()->search($product->getSku());
     \PHPUnit_Framework_Assert::assertFalse($catalogSearchResult->getListProductBlock()->getProductItem($product)->isVisible(), 'Product was found by SKU.');
 }
 /**
  * Verify product displaying on frontend
  *
  * @param FixtureInterface $product
  * @return array
  */
 protected function isNotDisplayingOnFrontendAssert(FixtureInterface $product)
 {
     $errors = [];
     // Check the product page is not available
     // TODO fix initialization url for frontend page
     $this->browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
     $titleBlock = $this->catalogProductView->getTitleBlock();
     if ($titleBlock->getTitle() !== self::NOT_FOUND_MESSAGE) {
         $errors[] = '- the headline on the page does not match, the text should be -> "' . self::NOT_FOUND_MESSAGE . '".';
     }
     $this->cmsIndex->open();
     $this->cmsIndex->getSearchBlock()->search($product->getSku());
     if ($this->catalogSearchResult->getListProductBlock()->isProductVisible($product->getName())) {
         $errors[] = '- successful product search.';
     }
     $categoryName = $product->hasData('category_ids') ? $product->getCategoryIds()[0] : $this->category->getName();
     $this->cmsIndex->open();
     $this->cmsIndex->getTopmenu()->selectCategoryByName($categoryName);
     $isProductVisible = $this->catalogCategoryView->getListProductBlock()->isProductVisible($product->getName());
     while (!$isProductVisible && $this->catalogCategoryView->getBottomToolbar()->nextPage()) {
         $isProductVisible = $this->catalogCategoryView->getListProductBlock()->isProductVisible($product->getName());
     }
     if ($isProductVisible) {
         $errors[] = "- product with name '{$product->getName()}' is found in this category.";
     }
     return $errors;
 }
 /**
  * Get failed item block.
  *
  * @param FixtureInterface|string $product
  * @return Info
  */
 protected function getFailedItemBlock($product)
 {
     $item = $this->_rootElement->find(sprintf($this->failedItem, $product->getSku()), Locator::SELECTOR_XPATH);
     return $this->blockFactory->create('Enterprise\\Checkout\\Test\\Block\\Sku\\Products\\Info', ['element' => $item]);
 }