/** * Assert that child products generated during configurable product are present in products grid * * @param CatalogProductIndex $productGrid * @param ConfigurableProductInjectable $product * @return void */ public function processAssert(CatalogProductIndex $productGrid, ConfigurableProductInjectable $product) { $configurableAttributesData = $product->getConfigurableAttributesData(); $productType = $product->getIsVirtual() ? 'Virtual Product' : 'Simple Product'; $errors = []; $productGrid->open(); foreach ($configurableAttributesData['matrix'] as $variation) { $filter = ['name' => $variation['name'], 'type' => $productType, 'sku' => $variation['sku'], 'visibility' => self::NOT_VISIBLE_INDIVIDUALLY]; if (!$productGrid->getProductGrid()->isRowVisible($filter)) { $errors[] = sprintf('Child product with name: "%s" and sku:"%s" is absent in grid.', $filter['name'], $filter['sku']); } } \PHPUnit_Framework_Assert::assertEmpty($errors, implode($errors, ' ')); }
/** * Assert that products generated during configurable product creation - are not visible on frontend(by default). * * @param CatalogSearchResult $catalogSearchResult * @param CmsIndex $cmsIndex * @param ConfigurableProductInjectable $product * @return void */ public function processAssert(CatalogsearchResult $catalogSearchResult, CmsIndex $cmsIndex, ConfigurableProductInjectable $product) { $configurableAttributesData = $product->getConfigurableAttributesData(); $errors = []; $cmsIndex->open(); foreach ($configurableAttributesData['matrix'] as $variation) { $cmsIndex->getSearchBlock()->search($variation['sku']); $isVisibleProduct = $catalogSearchResult->getListProductBlock()->isProductVisible($variation['name']); while (!$isVisibleProduct && $catalogSearchResult->getBottomToolbar()->nextPage()) { $isVisibleProduct = $catalogSearchResult->getListProductBlock()->isProductVisible($product->getName()); } if ($isVisibleProduct) { $errors[] = sprintf("\nChild product with sku: \"%s\" is visible on frontend(by default).", $variation['sku']); } } \PHPUnit_Framework_Assert::assertEmpty($errors, implode(' ', $errors)); }