diff --git a/app/code/Magento/Backend/etc/config.xml b/app/code/Magento/Backend/etc/config.xml index 459dd377e36bac315d1d56f6e8dd4e499986c149..760bba1fc12f4c1c3096ad6f422bf645ed174d06 100644 --- a/app/code/Magento/Backend/etc/config.xml +++ b/app/code/Magento/Backend/etc/config.xml @@ -11,6 +11,9 @@ <template> <minify_html>0</minify_html> </template> + <static> + <sign>1</sign> + </static> </dev> <system> <media_storage_configuration> diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php index 6dae249865157d1c5960c8be6cefa9bdf27b3126..43114cb83ad149ff07a2310ec1924dcd6f9faa25 100644 --- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php +++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php @@ -84,6 +84,11 @@ class MassStatus extends \Magento\Catalog\Controller\Adminhtml\Product $productIds = $collection->getAllIds(); $storeId = (int) $this->getRequest()->getParam('store', 0); $status = (int) $this->getRequest()->getParam('status'); + $filters = (array)$this->getRequest()->getParam('filters', []); + + if (isset($filters['store_id'])) { + $storeId = (int)$filters['store_id']; + } try { $this->_validateMassStatus($productIds, $status); diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php index 0fff613c56e2e4edc5a6765826730ffefac89f10..6f7809d89e5bda52429f5c365f1fdd8519996189 100644 --- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php +++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php @@ -6,32 +6,74 @@ */ namespace Magento\Catalog\Test\Unit\Controller\Adminhtml\Product; +use Magento\Ui\Component\MassAction\Filter; +use Magento\Backend\Model\View\Result\Redirect; +use Magento\Catalog\Model\Indexer\Product\Price\Processor; +use Magento\Catalog\Controller\Adminhtml\Product\Builder; +use Magento\Framework\Data\Collection\AbstractDb; +use Magento\Catalog\Model\Product\Action; + +/** + * Class MassStatusTest + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ class MassStatusTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\ProductTest { /** - * @var \PHPUnit_Framework_MockObject_MockObject + * @var Processor|\PHPUnit_Framework_MockObject_MockObject */ - protected $priceProcessor; + private $priceProcessorMock; - /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Backend\Model\View\Result\Redirect */ - protected $resultRedirect; + /** + * @var Redirect|\PHPUnit_Framework_MockObject_MockObject + */ + private $resultRedirectMock; + + /** + * @var Filter|\PHPUnit_Framework_MockObject_MockObject + */ + private $filterMock; + + /** + * @var Builder|\PHPUnit_Framework_MockObject_MockObject + */ + private $productBuilderMock; + + /** + * @var AbstractDb|\PHPUnit_Framework_MockObject_MockObject + */ + private $abstractDbMock; + + /** + * @var Action|\PHPUnit_Framework_MockObject_MockObject + */ + private $actionMock; protected function setUp() { - $this->priceProcessor = $this->getMockBuilder(\Magento\Catalog\Model\Indexer\Product\Price\Processor::class) + $this->priceProcessorMock = $this->getMockBuilder(Processor::class) ->disableOriginalConstructor()->getMock(); + $this->productBuilderMock = $this->getMockBuilder(Builder::class) + ->setMethods(['build']) + ->disableOriginalConstructor() + ->getMock(); - $productBuilder = $this->getMockBuilder( - \Magento\Catalog\Controller\Adminhtml\Product\Builder::class - )->setMethods(['build'])->disableOriginalConstructor()->getMock(); - - $product = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)->disableOriginalConstructor() - ->setMethods(['getTypeId', 'getStoreId', '__sleep', '__wakeup'])->getMock(); - $product->expects($this->any())->method('getTypeId')->will($this->returnValue('simple')); - $product->expects($this->any())->method('getStoreId')->will($this->returnValue('1')); - $productBuilder->expects($this->any())->method('build')->will($this->returnValue($product)); + $productMock = $this->getMockBuilder(\Magento\Catalog\Model\Product::class) + ->disableOriginalConstructor() + ->setMethods(['getTypeId', 'getStoreId', '__sleep', '__wakeup']) + ->getMock(); + $productMock->expects($this->any()) + ->method('getTypeId') + ->willReturn('simple'); + $productMock->expects($this->any()) + ->method('getStoreId') + ->willReturn('1'); + $this->productBuilderMock->expects($this->any()) + ->method('build') + ->willReturn($productMock); - $this->resultRedirect = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class) + $this->resultRedirectMock = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class) ->disableOriginalConstructor() ->getMock(); $resultFactory = $this->getMockBuilder(\Magento\Framework\Controller\ResultFactory::class) @@ -41,47 +83,71 @@ class MassStatusTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\Pro $resultFactory->expects($this->atLeastOnce()) ->method('create') ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT) - ->willReturn($this->resultRedirect); + ->willReturn($this->resultRedirectMock); - $abstractDbMock = $this->getMockBuilder(\Magento\Framework\Data\Collection\AbstractDb::class) + $this->abstractDbMock = $this->getMockBuilder(AbstractDb::class) ->disableOriginalConstructor() ->setMethods(['getAllIds', 'getResource']) ->getMock(); - $abstractDbMock->expects($this->any()) - ->method('getAllIds') - ->willReturn([]); - - $filterMock = $this->getMockBuilder(\Magento\Ui\Component\MassAction\Filter::class) + $this->filterMock = $this->getMockBuilder(\Magento\Ui\Component\MassAction\Filter::class) ->disableOriginalConstructor() ->setMethods(['getCollection']) ->getMock(); - $filterMock->expects($this->any()) - ->method('getCollection') - ->willReturn($abstractDbMock); - - $collectionFactoryMock = $this->getMockBuilder( - \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory::class - ) + $this->actionMock = $this->getMockBuilder(Action::class) + ->disableOriginalConstructor() + ->getMock(); + + $collectionFactoryMock = + $this->getMockBuilder(\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); $collectionFactoryMock->expects($this->any()) ->method('create') - ->willReturn($abstractDbMock); + ->willReturn($this->abstractDbMock); + + $additionalParams = [ + 'resultFactory' => $resultFactory + ]; + /** @var \Magento\Backend\App\Action\Context $context */ + $context = $this->initContext($additionalParams, [[Action::class, $this->actionMock]]); - $additionalParams = ['resultFactory' => $resultFactory]; $this->action = new \Magento\Catalog\Controller\Adminhtml\Product\MassStatus( - $this->initContext($additionalParams), - $productBuilder, - $this->priceProcessor, - $filterMock, + $context, + $this->productBuilderMock, + $this->priceProcessorMock, + $this->filterMock, $collectionFactoryMock ); } public function testMassStatusAction() { - $this->priceProcessor->expects($this->once())->method('reindexList'); + $storeId = 1; + $status = \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED; + $filters = [ + 'store_id' => 2, + ]; + + $this->filterMock->expects($this->once()) + ->method('getCollection') + ->willReturn($this->abstractDbMock); + $this->abstractDbMock->expects($this->once()) + ->method('getAllIds') + ->willReturn([3]); + $this->request->expects($this->exactly(3)) + ->method('getParam') + ->willReturnMap([ + ['store', 0, $storeId], + ['status', null, $status], + ['filters', [], $filters] + ]); + $this->actionMock->expects($this->once()) + ->method('updateAttributes') + ->with([3], ['status' => $status], 2); + $this->priceProcessorMock->expects($this->once()) + ->method('reindexList'); + $this->action->execute(); } } diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php index 9a21de70b4f114fceb5950ea716c580068584669..524bdceae10e03cfc9678f10d19b881588ff8de8 100644 --- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php +++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php @@ -5,6 +5,8 @@ */ namespace Magento\Catalog\Test\Unit\Controller\Adminhtml; +use Magento\Catalog\Api\Data\ProductInterface; + /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ @@ -25,17 +27,33 @@ abstract class ProductTest extends \PHPUnit_Framework_TestCase /** @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject */ protected $request; + /** + * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject + */ + private $objectManagerMock; + /** * Init context object * * @param array $additionalParams + * @param array $objectManagerMap Object Manager mappings * @return \PHPUnit_Framework_MockObject_MockObject */ - protected function initContext(array $additionalParams = []) + protected function initContext(array $additionalParams = [], array $objectManagerMap = []) { $productActionMock = $this->getMock(\Magento\Catalog\Model\Product\Action::class, [], [], '', false); - $objectManagerMock = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class); - $objectManagerMock->expects($this->any())->method('get')->will($this->returnValue($productActionMock)); + + $this->objectManagerMock = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class); + + if ($objectManagerMap) { + $this->objectManagerMock->expects($this->any()) + ->method('get') + ->willReturnMap($objectManagerMap); + } + + $this->objectManagerMock->expects($this->any()) + ->method('get') + ->willReturn($productActionMock); $block = $this->getMockBuilder(\Magento\Framework\View\Element\AbstractBlock::class) ->disableOriginalConstructor()->getMockForAbstractClass(); @@ -93,7 +111,7 @@ abstract class ProductTest extends \PHPUnit_Framework_TestCase $this->context->expects($this->any())->method('getEventManager')->will($this->returnValue($eventManager)); $this->context->expects($this->any())->method('getRequest')->will($this->returnValue($requestInterfaceMock)); $this->context->expects($this->any())->method('getResponse')->will($this->returnValue($responseInterfaceMock)); - $this->context->expects($this->any())->method('getObjectManager')->will($this->returnValue($objectManagerMock)); + $this->context->expects($this->any())->method('getObjectManager')->willReturn($this->objectManagerMock); $this->context->expects($this->any())->method('getMessageManager') ->will($this->returnValue($managerInterfaceMock)); diff --git a/app/code/Magento/CatalogImportExport/Model/Export/Product.php b/app/code/Magento/CatalogImportExport/Model/Export/Product.php index 86b150062d3c057afe500a6d76aac3665690ba87..c9d155177e48a588a655d603234482ac53cbe545 100644 --- a/app/code/Magento/CatalogImportExport/Model/Export/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Export/Product.php @@ -953,7 +953,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity if (is_scalar($attrValue)) { if (!in_array($fieldName, $this->_getExportMainAttrCodes())) { $additionalAttributes[$fieldName] = $fieldName . - ImportProduct::PAIR_NAME_VALUE_SEPARATOR . $attrValue; + ImportProduct::PAIR_NAME_VALUE_SEPARATOR . $this->wrapValue($attrValue); } $data[$itemId][$storeId][$fieldName] = htmlspecialchars_decode($attrValue); } @@ -963,7 +963,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity $additionalAttributes[$code] = $fieldName . ImportProduct::PAIR_NAME_VALUE_SEPARATOR . implode( ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR, - $this->collectedMultiselectsData[$storeId][$productLinkId][$code] + $this->wrapValue($this->collectedMultiselectsData[$storeId][$productLinkId][$code]) ); } } @@ -994,6 +994,25 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity return $data; } + /** + * Wrap values with double quotes if "Fields Enclosure" option is enabled + * + * @param string|array $value + * @return string|array + */ + private function wrapValue($value) + { + if (!empty($this->_parameters[\Magento\ImportExport\Model\Export::FIELDS_ENCLOSURE])) { + $wrap = function ($value) { + return sprintf('"%s"', str_replace('"', '""', $value)); + }; + + $value = is_array($value) ? array_map($wrap, $value) : $wrap($value); + } + + return $value; + } + /** * @return array */ diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index 16df0866135a7f07760134c7aff9a0b15bc6fb01..afb2e86b6248a79523405c78acd1cf27953b90c2 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -644,6 +644,13 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity */ private $productEntityIdentifierField; + /** + * Escaped separator value for regular expression. + * The value is based on PSEUDO_MULTI_LINE_SEPARATOR constant. + * @var string + */ + private $multiLineSeparatorForRegexp; + /** * @param \Magento\Framework\Json\Helper\Data $jsonHelper * @param \Magento\ImportExport\Helper\Data $importExportData @@ -2438,14 +2445,40 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity } /** - * Retrieves additional attributes as array code=>value. + * Retrieves additional attributes in format: + * [ + * code1 => value1, + * code2 => value2, + * ... + * codeN => valueN + * ] * - * @param string $additionalAttributes + * @param string $additionalAttributes Attributes data that will be parsed * @return array */ private function parseAdditionalAttributes($additionalAttributes) { - $attributeNameValuePairs = explode($this->getMultipleValueSeparator(), $additionalAttributes); + return empty($this->_parameters[Import::FIELDS_ENCLOSURE]) + ? $this->parseAttributesWithoutWrappedValues($additionalAttributes) + : $this->parseAttributesWithWrappedValues($additionalAttributes); + } + + /** + * Parses data and returns attributes in format: + * [ + * code1 => value1, + * code2 => value2, + * ... + * codeN => valueN + * ] + * + * @param string $attributesData Attributes data that will be parsed. It keeps data in format: + * code=value,code2=value2...,codeN=valueN + * @return array + */ + private function parseAttributesWithoutWrappedValues($attributesData) + { + $attributeNameValuePairs = explode($this->getMultipleValueSeparator(), $attributesData); $preparedAttributes = []; $code = ''; foreach ($attributeNameValuePairs as $attributeData) { @@ -2463,6 +2496,75 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity return $preparedAttributes; } + /** + * Parses data and returns attributes in format: + * [ + * code1 => value1, + * code2 => value2, + * ... + * codeN => valueN + * ] + * All values have unescaped data except mupliselect attributes, + * they should be parsed in additional method - parseMultiselectValues() + * + * @param string $attributesData Attributes data that will be parsed. It keeps data in format: + * code="value",code2="value2"...,codeN="valueN" + * where every value is wrapped in double quotes. Double quotes as part of value should be duplicated. + * E.g. attribute with code 'attr_code' has value 'my"value'. This data should be stored as attr_code="my""value" + * + * @return array + */ + private function parseAttributesWithWrappedValues($attributesData) + { + $attributes = []; + preg_match_all('~((?:[a-z0-9_])+)="((?:[^"]|""|"' . $this->getMultiLineSeparatorForRegexp() . '")+)"+~', + $attributesData, + $matches + ); + foreach ($matches[1] as $i => $attributeCode) { + $attribute = $this->retrieveAttributeByCode($attributeCode); + $value = 'multiselect' != $attribute->getFrontendInput() + ? str_replace('""', '"', $matches[2][$i]) + : '"' . $matches[2][$i] . '"'; + $attributes[$attributeCode] = $value; + } + return $attributes; + } + + /** + * Parse values of multiselect attributes depends on "Fields Enclosure" parameter + * + * @param string $values + * @return array + */ + public function parseMultiselectValues($values) + { + if (empty($this->_parameters[Import::FIELDS_ENCLOSURE])) { + return explode(self::PSEUDO_MULTI_LINE_SEPARATOR, $values); + } + if (preg_match_all('~"((?:[^"]|"")*)"~', $values, $matches)) { + return $values = array_map(function ($value) { + return str_replace('""', '"', $value); + }, $matches[1]); + } + return [$values]; + } + + /** + * Retrieves escaped PSEUDO_MULTI_LINE_SEPARATOR if it is metacharacter for regular expression + * + * @return string + */ + private function getMultiLineSeparatorForRegexp() + { + if (!$this->multiLineSeparatorForRegexp) { + $this->multiLineSeparatorForRegexp = in_array(self::PSEUDO_MULTI_LINE_SEPARATOR, str_split('[\^$.|?*+(){}')) + ? '\\' . self::PSEUDO_MULTI_LINE_SEPARATOR + : self::PSEUDO_MULTI_LINE_SEPARATOR; + } + return $this->multiLineSeparatorForRegexp; + } + /** * Set values in use_config_ fields. * diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php index 8461e617431d64fe3529162d54841d7da4740cdf..0d19b9fcbedc85e4df47ab745759282f4824b060 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php @@ -490,23 +490,25 @@ abstract class AbstractType $resultAttrs = []; foreach ($this->_getProductAttributes($rowData) as $attrCode => $attrParams) { - if (!$attrParams['is_static']) { - if (isset($rowData[$attrCode]) && strlen($rowData[$attrCode])) { - $resultAttrs[$attrCode] = in_array($attrParams['type'], ['select', 'boolean']) - ? $attrParams['options'][strtolower($rowData[$attrCode])] - : $rowData[$attrCode]; - if ('multiselect' == $attrParams['type']) { - $resultAttrs[$attrCode] = []; - foreach (explode(Product::PSEUDO_MULTI_LINE_SEPARATOR, $rowData[$attrCode]) as $value) { - $resultAttrs[$attrCode][] = $attrParams['options'][strtolower($value)]; - } - $resultAttrs[$attrCode] = implode(',', $resultAttrs[$attrCode]); + if ($attrParams['is_static']) { + continue; + } + if (isset($rowData[$attrCode]) && strlen($rowData[$attrCode])) { + if (in_array($attrParams['type'], ['select', 'boolean'])) { + $resultAttrs[$attrCode] = $attrParams['options'][strtolower($rowData[$attrCode])]; + } elseif ('multiselect' == $attrParams['type']) { + $resultAttrs[$attrCode] = []; + foreach ($this->_entityModel->parseMultiselectValues($rowData[$attrCode]) as $value) { + $resultAttrs[$attrCode][] = $attrParams['options'][strtolower($value)]; } - } elseif (array_key_exists($attrCode, $rowData)) { + $resultAttrs[$attrCode] = implode(',', $resultAttrs[$attrCode]); + } else { $resultAttrs[$attrCode] = $rowData[$attrCode]; - } elseif ($withDefaultValue && null !== $attrParams['default_value']) { - $resultAttrs[$attrCode] = $attrParams['default_value']; } + } elseif (array_key_exists($attrCode, $rowData)) { + $resultAttrs[$attrCode] = $rowData[$attrCode]; + } elseif ($withDefaultValue && null !== $attrParams['default_value']) { + $resultAttrs[$attrCode] = $attrParams['default_value']; } } diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php index e57983796f695fcac97325123d102cbe5a9854b7..0ca40e916c85b0fe50886f36fe502538a370ae50 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php @@ -71,6 +71,32 @@ class Validator extends AbstractValidator implements RowValidatorInterface return $valid; } + /** + * Check if value is valid attribute option + * + * @param string $attrCode + * @param array $possibleOptions + * @param string $value + * @return bool + */ + private function validateOption($attrCode, $possibleOptions, $value) + { + if (!isset($possibleOptions[strtolower($value)])) { + $this->_addMessages( + [ + sprintf( + $this->context->retrieveMessageTemplate( + RowValidatorInterface::ERROR_INVALID_ATTRIBUTE_OPTION + ), + $attrCode + ) + ] + ); + return false; + } + return true; + } + /** * @param mixed $attrCode * @param string $type @@ -166,23 +192,15 @@ class Validator extends AbstractValidator implements RowValidatorInterface break; case 'select': case 'boolean': + $valid = $this->validateOption($attrCode, $attrParams['options'], $rowData[$attrCode]); + break; case 'multiselect': - $values = explode(Product::PSEUDO_MULTI_LINE_SEPARATOR, $rowData[$attrCode]); - $valid = true; + $values = $this->context->parseMultiselectValues($rowData[$attrCode]); foreach ($values as $value) { - $valid = $valid && isset($attrParams['options'][strtolower($value)]); - } - if (!$valid) { - $this->_addMessages( - [ - sprintf( - $this->context->retrieveMessageTemplate( - RowValidatorInterface::ERROR_INVALID_ATTRIBUTE_OPTION - ), - $attrCode - ) - ] - ); + $valid = $this->validateOption($attrCode, $attrParams['options'], $value); + if (!$valid) { + break; + } } break; case 'datetime': diff --git a/app/code/Magento/CatalogInventory/Helper/Stock.php b/app/code/Magento/CatalogInventory/Helper/Stock.php index 6169efca64bd08e06181bddbf37f06e6e0648dd1..4c177c09d4b79a62f2a5b07c7b208c37d1c05ec3 100644 --- a/app/code/Magento/CatalogInventory/Helper/Stock.php +++ b/app/code/Magento/CatalogInventory/Helper/Stock.php @@ -154,7 +154,10 @@ class Stock \Magento\Store\Model\ScopeInterface::SCOPE_STORE ); $resource = $this->getStockStatusResource(); - $resource->addStockDataToCollection($collection, !$isShowOutOfStock); + $resource->addStockDataToCollection( + $collection, + !$isShowOutOfStock && $collection->getFlag('require_stock_items') + ); $collection->setFlag($stockFlag, true); } } diff --git a/app/code/Magento/Deploy/Console/Command/DeployStaticContentCommand.php b/app/code/Magento/Deploy/Console/Command/DeployStaticContentCommand.php index 51345c2b7609cb8e39cf25fb9a4f4f202cba6f65..8a006c8154b4b97eb6d39c1d41f8363b3e4df761 100644 --- a/app/code/Magento/Deploy/Console/Command/DeployStaticContentCommand.php +++ b/app/code/Magento/Deploy/Console/Command/DeployStaticContentCommand.php @@ -3,7 +3,6 @@ * Copyright © 2016 Magento. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Deploy\Console\Command; use Magento\Framework\App\Utility\Files; @@ -19,6 +18,8 @@ use Magento\Framework\Exception\LocalizedException; use Magento\Framework\App\State; use Magento\Deploy\Console\Command\DeployStaticOptionsInterface as Options; use Magento\Deploy\Model\DeployManager; +use Magento\Framework\App\Cache; +use Magento\Framework\App\Cache\Type\Dummy as DummyCache; /** * Deploy static content command @@ -29,7 +30,7 @@ class DeployStaticContentCommand extends Command /** * Key for dry-run option * @deprecated - * @see Magento\Deploy\Console\Command\DeployStaticOptionsInterface::DRY_RUN + * @see \Magento\Deploy\Console\Command\DeployStaticOptionsInterface::DRY_RUN */ const DRY_RUN_OPTION = 'dry-run'; @@ -87,6 +88,7 @@ class DeployStaticContentCommand extends Command * @param ObjectManagerFactory $objectManagerFactory * @param Locale $validator * @param ObjectManagerInterface $objectManager + * @throws \LogicException When the command name is empty */ public function __construct( ObjectManagerFactory $objectManagerFactory, @@ -96,6 +98,7 @@ class DeployStaticContentCommand extends Command $this->objectManagerFactory = $objectManagerFactory; $this->validator = $validator; $this->objectManager = $objectManager; + parent::__construct(); } @@ -373,6 +376,7 @@ class DeployStaticContentCommand extends Command /** * {@inheritdoc} * @throws \InvalidArgumentException + * @throws LocalizedException */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -394,9 +398,9 @@ class DeployStaticContentCommand extends Command list ($deployableLanguages, $deployableAreaThemeMap, $requestedThemes) = $this->prepareDeployableEntities($filesUtil); - $output->writeln("Requested languages: " . implode(', ', $deployableLanguages)); - $output->writeln("Requested areas: " . implode(', ', array_keys($deployableAreaThemeMap))); - $output->writeln("Requested themes: " . implode(', ', $requestedThemes)); + $output->writeln('Requested languages: ' . implode(', ', $deployableLanguages)); + $output->writeln('Requested areas: ' . implode(', ', array_keys($deployableAreaThemeMap))); + $output->writeln('Requested themes: ' . implode(', ', $requestedThemes)); /** @var $deployManager DeployManager */ $deployManager = $this->objectManager->create( @@ -415,11 +419,13 @@ class DeployStaticContentCommand extends Command } } + $this->mockCache(); return $deployManager->deploy(); } /** * @param Files $filesUtil + * @throws \InvalidArgumentException * @return array * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) @@ -476,4 +482,18 @@ class DeployStaticContentCommand extends Command return [$deployableLanguages, $deployableAreaThemeMap, $requestedThemes]; } + + /** + * Mock Cache class with dummy implementation + * + * @return void + */ + private function mockCache() + { + $this->objectManager->configure([ + 'preferences' => [ + Cache::class => DummyCache::class + ] + ]); + } } diff --git a/app/code/Magento/ImportExport/Block/Adminhtml/Export/Edit/Form.php b/app/code/Magento/ImportExport/Block/Adminhtml/Export/Edit/Form.php index a56642d1dda33952bdb8d238dc074428a170b54b..fec1684f39f36ca7e259863bba817119cc896054 100644 --- a/app/code/Magento/ImportExport/Block/Adminhtml/Export/Edit/Form.php +++ b/app/code/Magento/ImportExport/Block/Adminhtml/Export/Edit/Form.php @@ -86,6 +86,16 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic 'values' => $this->_formatFactory->create()->toOptionArray() ] ); + $fieldset->addField( + \Magento\ImportExport\Model\Export::FIELDS_ENCLOSURE, + 'checkbox', + [ + 'name' => \Magento\ImportExport\Model\Export::FIELDS_ENCLOSURE, + 'label' => __('Fields Enclosure'), + 'title' => __('Fields Enclosure'), + 'value' => 1, + ] + ); $form->setUseContainer(true); $this->setForm($form); diff --git a/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php b/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php index 1511f58d4b039c5376ef293b8c011d4e2b0e7396..435a663923306da40741c2c9a43a6a234944a98a 100644 --- a/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php +++ b/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php @@ -174,6 +174,16 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic 'value' => Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, ] ); + $fieldsets[$behaviorCode]->addField( + $behaviorCode . \Magento\ImportExport\Model\Import::FIELDS_ENCLOSURE, + 'checkbox', + [ + 'name' => \Magento\ImportExport\Model\Import::FIELDS_ENCLOSURE, + 'label' => __('Fields enclosure'), + 'title' => __('Fields enclosure'), + 'value' => 1, + ] + ); } // fieldset for file uploading diff --git a/app/code/Magento/ImportExport/Model/Export.php b/app/code/Magento/ImportExport/Model/Export.php index 2785327326e89359c6aabbbedb4e38cb136c1dfa..3b833cd4ab8834fc07a86ef9a52b51d66140ea3a 100644 --- a/app/code/Magento/ImportExport/Model/Export.php +++ b/app/code/Magento/ImportExport/Model/Export.php @@ -20,6 +20,11 @@ class Export extends \Magento\ImportExport\Model\AbstractModel const FILTER_ELEMENT_SKIP = 'skip_attr'; + /** + * Allow multiple values wrapping in double quotes for additional attributes. + */ + const FIELDS_ENCLOSURE = 'fields_enclosure'; + /** * Filter fields types. */ diff --git a/app/code/Magento/ImportExport/Model/Import.php b/app/code/Magento/ImportExport/Model/Import.php index 157887ec62c526458377d5d0103a992fab60a63d..89b5f88f0e9c2d4e071cdc0ec46d97bf731e64e8 100644 --- a/app/code/Magento/ImportExport/Model/Import.php +++ b/app/code/Magento/ImportExport/Model/Import.php @@ -78,6 +78,11 @@ class Import extends \Magento\ImportExport\Model\AbstractModel */ const FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR = '_import_multiple_value_separator'; + /** + * Allow multiple values wrapping in double quotes for additional attributes. + */ + const FIELDS_ENCLOSURE = 'fields_enclosure'; + /**#@-*/ /** diff --git a/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/before.phtml b/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/before.phtml index b8acac6a1ab64dbec581785293c16ad18c5218f2..ce4f61cef4febc90a3e802c7dacc9b2e09fb28c3 100644 --- a/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/before.phtml +++ b/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/before.phtml @@ -80,6 +80,9 @@ require([ var oldAction = form.action; var url = oldAction + ((oldAction.slice(-1) != '/') ? '/' : '') + 'entity/' + $F('entity') + '/file_format/' + $F('file_format'); + if ($F('fields_enclosure')) { + url += '/fields_enclosure/' + $F('fields_enclosure'); + } form.action = url; form.submit(); form.action = oldAction; diff --git a/app/code/Magento/Paypal/Model/Payflow/Transparent.php b/app/code/Magento/Paypal/Model/Payflow/Transparent.php index b5803c5ace3925b75e81df43992f714a74ed9905..f65edd71daa5b82b5191cd20a7f01a4b90b79b8c 100644 --- a/app/code/Magento/Paypal/Model/Payflow/Transparent.php +++ b/app/code/Magento/Paypal/Model/Payflow/Transparent.php @@ -186,6 +186,7 @@ class Transparent extends Payflowpro implements TransparentInterface $this->createPaymentToken($payment, $token); $payment->unsAdditionalInformation(self::CC_DETAILS); + $payment->unsAdditionalInformation(self::PNREF); return $this; } diff --git a/app/code/Magento/Paypal/Test/Unit/Model/Payflow/TransparentTest.php b/app/code/Magento/Paypal/Test/Unit/Model/Payflow/TransparentTest.php index 2d757147cec6a89dc1b6b6b28f283fd29b98f640..e2d5d348dda2cf96da1789806a43814c8960c49a 100644 --- a/app/code/Magento/Paypal/Test/Unit/Model/Payflow/TransparentTest.php +++ b/app/code/Magento/Paypal/Test/Unit/Model/Payflow/TransparentTest.php @@ -428,6 +428,13 @@ class TransparentTest extends \PHPUnit_Framework_TestCase ->method('setVaultPaymentToken') ->with($paymentTokenMock); + $this->paymentMock->expects($this->at(8)) + ->method('unsAdditionalInformation') + ->with(Transparent::CC_DETAILS); + $this->paymentMock->expects($this->at(9)) + ->method('unsAdditionalInformation') + ->with(Transparent::PNREF); + $this->assertSame($this->object, $this->object->authorize($this->paymentMock, 33)); } } diff --git a/app/code/Magento/Ui/view/base/web/js/grid/data-storage.js b/app/code/Magento/Ui/view/base/web/js/grid/data-storage.js index d87b6b6b665ca0d070287474edb41eb5ced41c33..dca12f832cd15e1cdc197ec909df92557c45da60 100644 --- a/app/code/Magento/Ui/view/base/web/js/grid/data-storage.js +++ b/app/code/Magento/Ui/view/base/web/js/grid/data-storage.js @@ -79,6 +79,10 @@ define([ getData: function (params, options) { var cachedRequest = this.getRequest(params); + if (params && params.filters && params.filters['store_id']) { + cachedRequest = false; + } + options = options || {}; return !options.refresh && cachedRequest ? diff --git a/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml index c949d827b4879599685bca266e12edfd2eb3a384..d4cf5dab742aa37684e8b5ee884bd6164c88426f 100644 --- a/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml @@ -6,12 +6,12 @@ */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> - <testCase name="Magento\Checkout\Test\TestCase\OnePageCheckoutTest" summary="One page check out with Authorize.Net payment method."> - <variation name="OnePageCheckoutAuthorizenetTestVariation1" summary="Check Out as a Guest with Authorize.Net and Offline Shipping method" ticketId="MAGETWO-12832"> + <testCase name="Magento\Checkout\Test\TestCase\OnePageCheckoutTest" summary="One page check out with Authorize.Net Direct Post payment method."> + <variation name="OnePageCheckoutAuthorizenetTestVariation1" summary="CheckOut with Authorize.Net Direct Post" ticketId="MAGETWO-59170"> <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data> <data name="customer/dataset" xsi:type="string">default</data> - <data name="shippingAddress/dataset" xsi:type="string">US_address_1</data> - <data name="checkoutMethod" xsi:type="string">guest</data> + <data name="checkoutMethod" xsi:type="string">login</data> + <data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data> <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data> <data name="shipping/shipping_method" xsi:type="string">Fixed</data> <data name="prices" xsi:type="array"> @@ -26,7 +26,7 @@ <item name="isClosed" xsi:type="string">No</item> <item name="transactionType" xsi:type="string">Authorization</item> </data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Store/Edit/Form/StoreForm.php b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Store/Edit/Form/StoreForm.php index 3aa435226553555a927cf7695060e5392a72a65c..9f20ae953c2117bae7e5c9765bc36d5d4e43d873 100644 --- a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Store/Edit/Form/StoreForm.php +++ b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Store/Edit/Form/StoreForm.php @@ -22,6 +22,13 @@ class StoreForm extends Form */ protected $store = '//option[contains(.,"%s")]'; + /** + * Store dropdown selector + * + * @var string + */ + protected $storeGroupId = '//select[@id="store_group_id"]'; + /** * Check that Store visible in Store dropdown * @@ -32,4 +39,16 @@ class StoreForm extends Form { return $this->_rootElement->find(sprintf($this->store, $name), Locator::SELECTOR_XPATH)->isVisible(); } + + /** + * Select store view by name from dropdown + * + * @param string $name + * @return bool + */ + public function selectStore($name) + { + return $this->_rootElement->find($this->storeGroupId, Locator::SELECTOR_XPATH, 'optgroupselect') + ->setValue($name); + } } diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php index 6601bd44892c93e30573c5342e483eb232573e70..dda155f7fd66bd33a5532ab4a36c937a1d10178b 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php @@ -38,6 +38,7 @@ class BraintreeSettlementReportTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S1'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml index 183dc6ac906074fb6dc918e765d648ea437fd05b..e80f6071ae5d1d33b37bb7c26c7389ed08aa8962 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml @@ -22,7 +22,7 @@ <data name="creditCard/dataset" xsi:type="string">visa_braintree</data> <data name="configData" xsi:type="string">braintree</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php index a0bf482705f552318a7cdd09951aaff14eaf1cb2..c9d0904c85d675d7a4aa360ac6a2f8c00c6b0862 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php @@ -33,6 +33,7 @@ class CheckoutWithBraintreePaypalCartTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml index 09b33bfa79958668ceef14a20e48cf0ecce2646e..9e1090d6a22f91102be14f0f4319921651f01841 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml @@ -20,7 +20,7 @@ <data name="payment/method" xsi:type="string">braintree_paypal</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> @@ -42,7 +42,7 @@ <data name="payment/method" xsi:type="string">braintree_paypal</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php index f0f0291b33e20428765c110dbb23600ba463bdde..9ee6bfb7c4e29b84043fd3b116a09153bfab4233 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php @@ -33,6 +33,7 @@ class CheckoutWithBraintreePaypalMinicartTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.xml index b426e7578729dd3b0ba514440b7b425b373ae20b..b41ea91e4598255a67e3e44180895873358a9b1a 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.xml @@ -20,7 +20,7 @@ <data name="payment/method" xsi:type="string">braintree_paypal</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> @@ -42,7 +42,7 @@ <data name="payment/method" xsi:type="string">braintree_paypal</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.php index 6554845d5ff81af96b887a9dbcb8e05761b21463..9e6cf0991db4e5fb2c3dd2c45de7d365e67395f6 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.php @@ -25,6 +25,7 @@ class CreateOnlineCreditMemoBraintreePaypalTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S1'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml index 56c33af7a82b986b23372c9cbf0f2e8e915876a3..53847e55fd9f91e29fbeeb6c71a0402a1fb6a6f6 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml @@ -22,9 +22,8 @@ <data name="payment/method" xsi:type="string">braintree_paypal</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data> <data name="paymentAction" xsi:type="string">sale</data> - <data name="orderButtonsAvailable" xsi:type="string">Back, Send Email, Credit Memo, Hold, Ship, Reorder</data> <data name="data/items_data/0/qty" xsi:type="string">-</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCreditMemoTab" /> <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory" /> @@ -42,12 +41,11 @@ <data name="shipping/shipping_method" xsi:type="string">Fixed</data> <data name="payment/method" xsi:type="string">braintree_paypal</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data> - <data name="orderButtonsAvailable" xsi:type="string">Back, Send Email, Credit Memo, Hold, Ship, Reorder</data> <data name="data/items_data/0/qty" xsi:type="string">2</data> <data name="refundData/items_data/0/qty" xsi:type="string">1</data> <data name="order/dataset" xsi:type="string">default</data> <data name="isCreditMemoPartial" xsi:type="string">Yes</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCreditMemoTab" /> <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineInvoiceEntityTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineInvoiceEntityTest.xml index 702a732e937eabedff8f6525e651fe4c16de942c..d9f382e4b650e5ce48955e264c67b36c893dbb84 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineInvoiceEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineInvoiceEntityTest.xml @@ -29,7 +29,7 @@ <data name="data/items_data/0/qty" xsi:type="string">-</data> <data name="data/form_data/do_shipment" xsi:type="string">No</data> <data name="data/form_data/comment_text" xsi:type="string">comments</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" /> <constraint name="Magento\Sales\Test\Constraint\AssertCaptureInCommentsHistory" /> @@ -58,7 +58,7 @@ <data name="data/items_data/0/qty" xsi:type="string">1</data> <data name="data/form_data/do_shipment" xsi:type="string">No</data> <data name="data/form_data/comment_text" xsi:type="string">comments</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" /> <constraint name="Magento\Sales\Test\Constraint\AssertCaptureInCommentsHistory" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderBackendTest.xml index 80596fb577b970d41e01e8e98d26c86a28262b70..9614923691c6c097702c3a222bfc52edfcd2489a 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderBackendTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderBackendTest.xml @@ -8,7 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Sales\Test\TestCase\CreateOrderBackendTest" summary="Checkout with Braintree Credit Card from Admin"> <variation name="CreateOrderBackendTestBraintreeVariation1" summary="Checkout with Braintree Credit Card from Admin (Payment Action = Authorize Only)" ticketId="MAGETWO-46294"> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data> <data name="products/1" xsi:type="string">configurableProduct::with_one_option</data> <data name="products/2" xsi:type="string">bundleProduct::bundle_fixed_100_dollar_product</data> @@ -32,11 +32,10 @@ <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" /> - <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGridOnFrontend" /> </variation> <variation name="CreateOrderBackendTestBraintreeVariation2" summary="Checkout with Braintree Credit Card from Admin (Payment Action = Authorize and Capture)" ticketId="MAGETWO-38316"> - <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test, severity:S0</data> <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data> <data name="products/1" xsi:type="string">configurableProduct::with_one_option</data> <data name="products/2" xsi:type="string">bundleProduct::bundle_fixed_100_dollar_product</data> @@ -63,7 +62,6 @@ <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> <constraint name="Magento\Sales\Test\Constraint\AssertCaptureInCommentsHistory" /> - <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGridOnFrontend" /> </variation> </testCase> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml index df6e56eb14826dbcda2ed7c780d2bb02d823b3ea..c9b26df050cfc9cf9ef4913a4f538459cee1923f 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml @@ -8,7 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Vault\Test\TestCase\CreateVaultOrderBackendTest" summary="Create Order from Admin via Braintree with saving Credit Cards"> <variation name="CreateVaultOrderBackendTestBraintreeVariation1" summary="Checkout with Braintree Credit Card from Admin (Payment Action = Authorize Only)" ticketId="MAGETWO-47137, MAGETWO-47139"> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data> <data name="customer/dataset" xsi:type="string">default</data> <data name="billingAddress/dataset" xsi:type="string">US_address_1_without_email</data> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePayPalBraintreeTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePayPalBraintreeTest.php index 7048984886582f7e74ffaa6d5d0597ee4ae5b018..062de338d8921e15b786de0fd4b656e824354d80 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePayPalBraintreeTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePayPalBraintreeTest.php @@ -29,6 +29,7 @@ class InvoicePayPalBraintreeTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S1'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePaypalBraintreeTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePaypalBraintreeTest.xml index bae626a427818b115d897d06dd33b4a894da1cba..352e0ed684919a43df66b429d5b8250d90cae351 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePaypalBraintreeTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePaypalBraintreeTest.xml @@ -26,7 +26,7 @@ <data name="data/items_data/0/qty" xsi:type="string">-</data> <data name="data/form_data/do_shipment" xsi:type="string">No</data> <data name="data/form_data/comment_text" xsi:type="string">comments</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" /> <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceItems" /> @@ -51,7 +51,7 @@ <data name="data/items_data/0/qty" xsi:type="string">1</data> <data name="data/form_data/do_shipment" xsi:type="string">No</data> <data name="data/form_data/comment_text" xsi:type="string">comments</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" /> <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceItems" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.php index 41f637d52941d463223e1706e1175939e8c817ee..68d36f3c754cf6ff5bca786cb314fd89e51f9c5d 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.php @@ -8,17 +8,25 @@ namespace Magento\Braintree\Test\TestCase; use Magento\Mtf\TestCase\Scenario; /** - * Class OnePageCheckoutAcceptPaymentTest + * Preconditions: + * 1. Order is placed with Braintree Credit Card from Storefront with Advanced Fraud Protection. * - * This scenario places order via Braintree payment with - * enabled Advanced Fraud protection and accept payment for placed order - * to future processing + * Steps: + * 1. Log in to Admin. + * 2. Go to Sales > Orders page. + * 3. Open the placed order. + * 4. Click Accept button. + * 5. Perform assertions. + * + * @group Braintree + * @ZephyrId MAGETWO-56023 */ class OnePageCheckoutAcceptPaymentTest extends Scenario { /* tags */ const MVP = 'yes'; const TEST_TYPE = 'acceptance_test, 3rd_party_test'; + const SEVERITY = 'S2'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.xml index f42054b4a07325512db19b497627d0099dbc7a3a..841145d7a5fdfaa92f1a82ac00c9bf51f0601643 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.xml @@ -21,7 +21,7 @@ <data name="creditCard/dataset" xsi:type="string">visa_braintree</data> <data name="configData" xsi:type="string">braintree,braintree_fraudprotection</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data> <constraint name="Magento\Sales\Test\Constraint\AssertAcceptPaymentSuccessMessagePresent" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> <constraint name="Magento\Sales\Test\Constraint\AssertAcceptPaymentMessageInCommentsHistory" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.php index 69fd4a8323eca15728d9c6f5b65c91a4929dc562..143ecb5a65d7d4a6af6a9b00d4b15175230cd0f4 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.php @@ -8,16 +8,25 @@ namespace Magento\Braintree\Test\TestCase; use Magento\Mtf\TestCase\Scenario; /** - * Class OnePageCheckoutDenyPaymentTest + * Preconditions: + * 1. Order is placed with Braintree Credit Card from Storefront with Advanced Fraud Protection. * - * This scenario places order via Braintree payment with - * enabled Advanced Fraud protection and deny payment for placed order + * Steps: + * 1. Log in to Admin. + * 2. Go to Sales > Orders page. + * 3. Open the placed order. + * 4. Click Deny button. + * 5. Perform assertions. + * + * @group Braintree + * @ZephyrId MAGETWO-56024 */ class OnePageCheckoutDenyPaymentTest extends Scenario { /* tags */ const MVP = 'yes'; const TEST_TYPE = 'acceptance_test, 3rd_party_test'; + const SEVERITY = 'S2'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.xml index 45476abfdfd12c18dc8a7b36782bc0b8f30ed3c0..95d07079ef36c9ae66672ec8cc465325273ecda4 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.xml @@ -21,7 +21,7 @@ <data name="creditCard/dataset" xsi:type="string">visa_braintree</data> <data name="configData" xsi:type="string">braintree,braintree_fraudprotection</data> <data name="status" xsi:type="string">Canceled</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data> <constraint name="Magento\Sales\Test\Constraint\AssertDenyPaymentSuccessMessagePresent" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> <constraint name="Magento\Sales\Test\Constraint\AssertDenyPaymentMessageInCommentsHistory" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml index a1ceaa53da045345a1e4a7a5a51089a5623a85b8..1e9c539c8c0d379d6e5b69929e9270b21a8cc593 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml @@ -25,7 +25,7 @@ <data name="creditCard/dataset" xsi:type="string">visa_braintree_3dsecure</data> <data name="configData" xsi:type="string">braintree, braintree_3d_secure_not_triggered_due_threshold</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> @@ -48,7 +48,7 @@ <data name="creditCard/dataset" xsi:type="string">visa_braintree_3dsecure</data> <data name="configData" xsi:type="string">braintree, braintree_3d_secure_uk</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> @@ -71,13 +71,13 @@ <data name="creditCard/dataset" xsi:type="string">visa_braintree</data> <data name="configData" xsi:type="string">braintree</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" /> </variation> - <variation name="OnePageCheckoutBraintreeTestVariation4" summary="Checkout with Braintree for payment action Authorize and Capture" ticketId="MAGETWO-38420"> + <variation name="OnePageCheckoutBraintreeTestVariation4" summary="Checkout with Braintree for payment action Authorize and Capture" ticketId="MAGETWO-59403"> <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data> <data name="products/1" xsi:type="string">configurableProduct::with_one_option</data> <data name="products/2" xsi:type="string">bundleProduct::bundle_fixed_100_dollar_product</data> @@ -98,7 +98,7 @@ <data name="creditCard/dataset" xsi:type="string">visa_braintree</data> <data name="configData" xsi:type="string">braintree, braintree_sale</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.php index 32599aa090651c76f7d9d2663309ea3a219f79f6..e4b7d82094db5a615b3df3000f18fbd9a1f41b6d 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.php @@ -39,6 +39,7 @@ class OnePageCheckoutWith3dSecureTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S1'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.xml index 4cb5b1702dd3baac27c41b3c7367456299e8ef8e..295a9dcd5c5332dce7d6e5fad9dfcdc6f5352596 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.xml @@ -31,7 +31,7 @@ <data name="secure3d/dataset" xsi:type="string">secure3d_braintree</data> <data name="configData" xsi:type="string">braintree, braintree_3d_secure</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.php index 9cf0e9c90c1215649e50e0a708bcae5db371d9fd..a984f666c435680c68b97d0481b8b86a3f487b0e 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.php @@ -37,6 +37,7 @@ class OnePageCheckoutWithBraintreePaypalTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml index 8f2177209f37b7f83d2b5ad97e2599ed7f7ff67c..7e38e6f0303b64e55ce6e126a2653f0ce7420df7 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml @@ -21,7 +21,7 @@ <data name="payment/method" xsi:type="string">braintree_paypal</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> @@ -44,7 +44,7 @@ <data name="payment/method" xsi:type="string">braintree_paypal</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithDiscountTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithDiscountTest.xml index 89d67936ab0c610cd67054d428c39cd8da341b53..23fc729edb99f9645f7587d8e350464c81083fcd 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithDiscountTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithDiscountTest.xml @@ -25,12 +25,10 @@ <data name="creditCardSave" xsi:type="string">Yes</data> <data name="configData" xsi:type="string">braintree, braintree_use_vault</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> - <data name="orderButtonsAvailable" xsi:type="string">Back, Cancel, Send Email, Hold, Invoice, Ship, Reorder, Edit</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> - <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" /> </variation> </testCase> </config> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml index 2ab0134e62b7add65f9189e89123443099283032..ad4d5cc06e92e260aed4c90e6f534f2540d25034 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml @@ -24,7 +24,7 @@ <data name="creditCard/dataset" xsi:type="string">visa_braintree</data> <data name="configData" xsi:type="string">braintree, braintree_use_vault</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Sales\Test\Constraint\AssertOrderSuccessCreateMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.php index f6813b74e40d7b09edf48369f6dc79ca28fefa7d..8845f2a78629da6d2c3994b1e691cce117efa8bc 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.php @@ -43,6 +43,7 @@ class SaveUseDeleteVaultForPaypalBraintreeTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.xml index 6e214d4c205aacc72fa8b93cbd4c082d2d02fa96..c7a5182a1dfb3d693dc03eb5c77d9d2c26622a58 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.xml @@ -23,7 +23,7 @@ <data name="creditCardSave" xsi:type="string">Yes</data> <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_use_vault</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Vault\Test\Constraint\AssertStoredPaymentDeletedMessage" /> </variation> </testCase> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultOnCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultOnCheckoutTest.xml index 00eb9c4802db6216bd1dbc0202231612166b306c..35d55784b676236d808cf0f54fc969fc65193b0b 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultOnCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultOnCheckoutTest.xml @@ -22,7 +22,7 @@ <data name="creditCardSave" xsi:type="string">Yes</data> <data name="configData" xsi:type="string">braintree, braintree_use_vault</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <data name="orderButtonsAvailable" xsi:type="string">Back, Cancel, Send Email, Hold, Invoice, Ship, Reorder, Edit</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.php index 13b8240d4c49ebe4b047e59f6bfdb63102fbcf47..d2723a300285df0b560ece526e463b495f201d8f 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.php +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.php @@ -43,6 +43,7 @@ class UseVaultWith3dSecureOnCheckoutTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S1'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.xml index 0f00ff93612b8b1ef7792971b38846efbe3d2b43..a5aa7645148e158ad62a174bc26d08abfd037192 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.xml @@ -27,7 +27,7 @@ <data name="creditCardSave" xsi:type="string">Yes</data> <data name="configData" xsi:type="string">braintree, braintree_use_vault, braintree_3d_secure</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <data name="orderButtonsAvailable" xsi:type="string">Back, Cancel, Send Email, Hold, Invoice, Ship</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/di.xml index be2d771e47f5bfaf9c93ac9ac909d87ef723bff1..7bdfca2f713f20a9f41b4c19d9bb1e36f55a59c1 100644 --- a/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/di.xml +++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/di.xml @@ -8,12 +8,12 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Braintree\Test\Constraint\Assert3dSecureInfoIsPresent"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S1</argument> </arguments> </type> <type name="Magento\Braintree\Test\Constraint\AssertTransactionIsPresentInSettlementReport"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S1</argument> </arguments> </type> </config> diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php new file mode 100644 index 0000000000000000000000000000000000000000..401042c031259f4c9e473e8ed7c0fbabb063b5fc --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php @@ -0,0 +1,52 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Cms\Test\Constraint; + +use Magento\Cms\Test\Fixture\CmsPage; +use Magento\Cms\Test\Page\CmsPage as FrontCmsPage; +use Magento\Mtf\Client\BrowserInterface; +use Magento\Mtf\Constraint\AbstractConstraint; + +/** + * Assert that created CMS page with expected contents displayed on Frontend. + */ +class AssertCmsPageOnFrontend extends AbstractConstraint +{ + /** + * Assert that created CMS page with expected contents displayed on Frontend. + * + * @param CmsPage $cms + * @param FrontCmsPage $frontCmsPage, + * @param BrowserInterface $browser + * @param string $displayContent + * @return void + */ + public function processAssert( + CmsPage $cms, + FrontCmsPage $frontCmsPage, + BrowserInterface $browser, + $displayContent = null + ) { + $browser->open($_ENV['app_frontend_url'] . $cms->getIdentifier()); + $fixtureContent = $cms->getContent(); + \PHPUnit_Framework_Assert::assertContains( + $displayContent != null ? $displayContent : $fixtureContent['content'], + $frontCmsPage->getCmsPageBlock()->getPageContent(), + 'Wrong content is displayed.' + ); + } + + /** + * CMS Page content equals to data from fixture. + * + * @return string + */ + public function toString() + { + return 'CMS Page content equals to data from fixture.'; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php index 51e9b428892cc53a2db873550f0e0c76d6d997d0..6db35e88efe49e92043b4d85127c74510fb18926 100644 --- a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php +++ b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php @@ -30,6 +30,7 @@ class AssertCmsPagePreview extends AbstractConstraint * @param FrontCmsPage $frontCmsPage * @param CmsPage $cms * @param BrowserInterface $browser + * @param string $displayContent * @return void */ public function processAssert( @@ -37,7 +38,8 @@ class AssertCmsPagePreview extends AbstractConstraint FrontCmsIndex $frontCmsIndex, FrontCmsPage $frontCmsPage, CmsPage $cms, - BrowserInterface $browser + BrowserInterface $browser, + $displayContent = null ) { $cmsIndex->open(); $filter = ['title' => $cms->getTitle()]; @@ -46,7 +48,7 @@ class AssertCmsPagePreview extends AbstractConstraint $fixtureContent = $cms->getContent(); \PHPUnit_Framework_Assert::assertContains( - $fixtureContent['content'], + $displayContent != null ? $displayContent : $fixtureContent['content'], $frontCmsPage->getCmsPageBlock()->getPageContent(), 'Wrong content is displayed.' ); diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml index 67b4421182848ebb9b2633c4d9212e6679cccf51..f8b6c8c3d9e06da90b122ba39d0c3f01eebc1978 100644 --- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml @@ -54,5 +54,18 @@ <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" /> <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageDisabledOnFrontend" /> </variation> + <variation name="CreateCmsPageEntityTestVariation5" summary="Block Cache Exploit" ticketId="MAGETWO-48017"> + <data name="tag" xsi:type="string">severity:S2</data> + <data name="fixtureType" xsi:type="string">cmsPage</data> + <data name="data/title" xsi:type="string">NewCmsPage%isolation%</data> + <data name="data/identifier" xsi:type="string">identifier-%isolation%</data> + <data name="data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data> + <data name="data/is_active" xsi:type="string">Yes</data> + <data name="data/content/content" xsi:type="string">\\{{block class='Magento\Framework\View\Element\Text' text='bla bla bla' cache_key='BACKEND_ACL_RESOURCES' cache_lifetime=999\}}</data> + <data name="displayContent" xsi:type="string">bla bla bla</data> + <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" /> + <constraint name="Magento\Cms\Test\Constraint\AssertCmsPagePreview" /> + <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend" /> + </variation> </testCase> </config> diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml index f4b96844b27383679f0f2a65f63e5445b4e9b6e7..0d3e1b4ea97103d1fb941843f3c419b62f20d49b 100644 --- a/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml +++ b/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml @@ -6,24 +6,84 @@ */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> - <type name="Magento\Cms\Test\Constraint\AssertCmsBlockSuccessSaveMessage"> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockDeleteMessage"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S1</argument> </arguments> </type> - <type name="Magento\Cms\Test\Constraint\AssertCmsBlockOnCategoryPage"> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockNotInGrid"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S3</argument> </arguments> </type> <type name="Magento\Cms\Test\Constraint\AssertCmsBlockNotOnCategoryPage"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S3</argument> </arguments> </type> - <type name="Magento\Cms\Test\Constraint\AssertCmsBlockDeleteMessage"> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockOnCategoryPage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockSuccessSaveMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageDeleteMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageDisabledOnFrontend"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageDuplicateErrorMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageForm"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageNotInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPagePreview"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertUrlRewriteCmsPageRedirect"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S1</argument> </arguments> </type> </config> diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.php index 9f05188e2ebb483ea16edc9ccb8eab15f309c781..e1e8f2ddebb709e17d8a977668f420d803247558 100644 --- a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.php +++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.php @@ -110,4 +110,92 @@ class CustomerForm extends Form $mapping['lastname']['strategy'] )->getValue(); } + + /** + * Set 'Change Email' checkbox value. + * + * @param boolean $value + * @return void + */ + public function setChangeEmail($value) + { + $mapping = $this->dataMapping(); + $this->_rootElement->find( + $mapping['change_email']['selector'], + $mapping['change_email']['strategy'], + 'checkbox' + )->setValue($value ? "Yes" : "No"); + } + + /** + * Set 'Change Password' checkbox value. + * + * @param boolean $value + * @return void + */ + public function setChangePassword($value) + { + $mapping = $this->dataMapping(); + $this->_rootElement->find( + $mapping['change_password']['selector'], + $mapping['change_password']['strategy'], + 'checkbox' + )->setValue($value ? "Yes" : "No"); + } + + /** + * Check if Current Password field is visible. + * + * @return boolean + */ + public function isCurrentPasswordVisible() + { + $mapping = $this->dataMapping(); + return $this->_rootElement->find( + $mapping['current_password']['selector'], + $mapping['current_password']['strategy'] + )->isVisible(); + } + + /** + * Check if Password field is visible. + * + * @return boolean + */ + public function isPasswordVisible() + { + $mapping = $this->dataMapping(); + return $this->_rootElement->find( + $mapping['password']['selector'], + $mapping['password']['strategy'] + )->isVisible(); + } + + /** + * Check if Confirmation field is visible. + * + * @return boolean + */ + public function isConfirmPasswordVisible() + { + $mapping = $this->dataMapping(); + return $this->_rootElement->find( + $mapping['confirmation']['selector'], + $mapping['confirmation']['strategy'] + )->isVisible(); + } + + /** + * Check if Email field is visible. + * + * @return boolean + */ + public function isEmailVisible() + { + $mapping = $this->dataMapping(); + return $this->_rootElement->find( + $mapping['email']['selector'], + $mapping['email']['strategy'] + )->isVisible(); + } } diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.xml index 9bbc247787e62322e5178bf486dce1ee80097356..20610b0672722a5b53cf8028593b2f457412b673 100644 --- a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.xml +++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.xml @@ -9,6 +9,12 @@ <fields> <firstname /> <lastname /> + <change_email> + <input>checkbox</input> + </change_email> + <change_password> + <input>checkbox</input> + </change_password> <email /> <current_password /> <password /> diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Page/CustomerAccountEdit.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/Page/CustomerAccountEdit.xml index 66a7e57279113b3fe8318498279398daccf9f296..362e66aa19d43ddb361bb4eb790d766d3d10d9a3 100644 --- a/dev/tests/functional/tests/app/Magento/Customer/Test/Page/CustomerAccountEdit.xml +++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Page/CustomerAccountEdit.xml @@ -9,5 +9,6 @@ <page name="CustomerAccountEdit" mca="customer/account/edit" module="Magento_Customer"> <block name="accountInfoForm" class="Magento\Customer\Test\Block\Form\CustomerForm" locator="#form-validate" strategy="css selector"/> <block name="messages" class="Magento\Backend\Test\Block\Messages" locator=".page.messages" strategy="css selector"/> + <block name="accountMenuBlock" class="Magento\Customer\Test\Block\Account\Links" locator=".nav.items" strategy="css selector"/> </page> </config> diff --git a/dev/tests/functional/tests/app/Magento/Dhl/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Dhl/Test/TestCase/OnePageCheckoutTest.xml index 7d4a961b7686733323d2683ef335c72223f6b460..9bec14fd9575d945218bffd258cde0d06b766d92 100644 --- a/dev/tests/functional/tests/app/Magento/Dhl/Test/TestCase/OnePageCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Dhl/Test/TestCase/OnePageCheckoutTest.xml @@ -20,7 +20,7 @@ <data name="cart/data/shipping_method" xsi:type="string">Express easy</data> <data name="payment/method" xsi:type="string">checkmo</data> <data name="configData" xsi:type="string">checkmo, dhl_eu, shipping_origin_CH, config_base_currency_ch</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" /> diff --git a/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml index 9d6b7d119e09ce6f65529c028b24e190d0f8d42f..fcf8331d18ba7fd02427602013b1674aadfb11fd 100644 --- a/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml @@ -20,7 +20,7 @@ <data name="cart/data/shipping_method" xsi:type="string">International Economy</data> <data name="payment/method" xsi:type="string">checkmo</data> <data name="configData" xsi:type="string">checkmo, fedex, shipping_origin_US_CA</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" /> @@ -39,7 +39,7 @@ <data name="cart/data/shipping_method" xsi:type="string">Ground</data> <data name="payment/method" xsi:type="string">checkmo</data> <data name="configData" xsi:type="string">checkmo, fedex, shipping_origin_US_CA</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" /> diff --git a/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.php b/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.php index b1c2d71a43bdd7d77cabb00d010261245b599d00..37d85bd91b1d68ddea5ae0c1fd250547810d6d19 100644 --- a/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.php +++ b/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.php @@ -16,6 +16,7 @@ class ConflictResolutionTest extends Scenario /* tags */ const MVP = 'no'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S2'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.xml b/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.xml index dc2ba760025fb71427e2ea50a7e3cce4e1c305e5..163c33f7306bac0f8d859ea9cddbf98e6e2eb2a3 100644 --- a/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.xml +++ b/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.xml @@ -40,7 +40,7 @@ <item name="Authorize.net Direct Post" xsi:type="string"/> </item> </data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data> </variation> </testCase> </config> diff --git a/dev/tests/functional/tests/app/Magento/Payment/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Payment/Test/etc/di.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc6a35a7c52c1b91792252cf08d13ff20d50a88f --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Payment/Test/etc/di.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> + <type name="Magento\Payment\Test\Constraint\AssertCardRequiredFields"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Payment\Test\Constraint\AssertFieldsAreActive"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Payment\Test\Constraint\AssertFieldsAreDisabled"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Payment\Test\Constraint\AssertFieldsAreEnabled"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Payment\Test\Constraint\AssertFieldsArePresent"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> +</config> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.php index d4ec11acd51bf53c38de3be6e927b8a24037c1d8..3e510ab12ec3219a10ccabf6d20c0e2e8e70e0ba 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.php +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.php @@ -35,6 +35,7 @@ class CreatePayFlowOrderBackendNegativeTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S2'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.xml index 04b34813e59ceacd332657d66366d2789f469e71..4ad751de68a71f0330aa547bf74481c3e306f379 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.xml @@ -8,7 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Paypal\Test\TestCase\CreatePayFlowOrderBackendNegativeTest" summary="Verify required fields validation for PayPal Payflow Pro credit card on admin order creation" ticketId="MAGETWO-58934"> <variation name="CreatePayFlowOrderBackendNegativeTestPayflowProVariation1" summary="Verify required fields validation for credit card on admin order creation" ticketId="MAGETWO-58934"> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data> <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data> <data name="customer/dataset" xsi:type="string">default</data> <data name="billingAddress/dataset" xsi:type="string">US_address_1_without_email</data> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml index f431bf4d6a5edf4c9cd67cf97796558ffadb59b8..ca26ad42a020c80ab0540c21a2928b8a1874cae7 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml @@ -8,7 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Vault\Test\TestCase\CreateVaultOrderBackendTest" summary="Use saved for PayPal Payflow Pro credit card on admin order creation" ticketId="MAGETWO-47350"> <variation name="CreateVaultOrderBackendTestPayflowProVariation1" summary="Use saved for PayPal Payflow Pro credit card on admin order creation" ticketId="MAGETWO-47350"> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data> <data name="customer/dataset" xsi:type="string">default</data> <data name="billingAddress/dataset" xsi:type="string">US_address_1_without_email</data> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.php index c8fb3e4f30f19834d1587cf1a1290aeeace7b958..8a10d08e0f6c3e6cdfddc7ec1a52d8796d54fca3 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.php +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.php @@ -31,6 +31,7 @@ class ExpressCheckoutFromProductPageTest extends Scenario const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; const TO_MAINTAIN = 'yes'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.xml index 4373523471cffc5e8e13b6bc01dffc9902516cd0..1d92fa149efbc336eb0910a451a1740f2eda6c14 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.xml @@ -27,7 +27,7 @@ </data> <data name="payment/method" xsi:type="string">paypal_express</data> <data name="configData" xsi:type="string">paypal_express, freeshipping</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.php index 7fc35ff1eb6fd83e929886bcdeac741de868fe68..6ecf356e27ff8c61a04329cb3211f0f6e1e9c05f 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.php +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.php @@ -31,6 +31,7 @@ class ExpressCheckoutFromShoppingCartTest extends Scenario const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; const TO_MAINTAIN = 'yes'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.xml index e4a4cd484a45a3b0ed0d8e015d791c207563b96a..38c876719bc3d82c772ff6f86cd507229ec5cf2b 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.xml @@ -28,7 +28,7 @@ <item name="grandTotal" xsi:type="string">145.98</item> </data> <data name="configData" xsi:type="string">payflowpro</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.php index b40adf986dbe9a7311fec484411bb8a7ed50810d..5d7056d32703dbe6b79c6b099ab9a11fa2b9d41f 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.php +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.php @@ -35,6 +35,7 @@ class ExpressCheckoutOnePageTest extends Scenario const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; const TO_MAINTAIN = 'yes'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.xml index df02c3293b50c5ed1bb2394bdeb6fc378f677874..e52ed631ae46f983dc8860e7bf628f95a5a6a7fb 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.xml @@ -26,7 +26,7 @@ </data> <data name="payment/method" xsi:type="string">paypal_express</data> <data name="configData" xsi:type="string">paypal_express</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> @@ -51,7 +51,7 @@ </data> <data name="payment/method" xsi:type="string">paypal_express</data> <data name="configData" xsi:type="string">payflowlink</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" /> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.php index 07f03b1c931cfc0c547f781451630fa828101294..66ca21d8d0f3eae424d9b3f926bf0003ff3dd9d6 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.php +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.php @@ -32,6 +32,7 @@ class InContextExpressCheckoutFromShoppingCartTest extends Scenario const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; const TO_MAINTAIN = 'yes'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.xml index 979a8c2f32db3fd9333adbfe6fd8b52263edf462..bbc566d1e31ec620746316d2e3ebcfe76c6883ae 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.xml @@ -10,7 +10,7 @@ <variation name="InContextExpressCheckoutFromShoppingCartTestVariation1" summary="In-Context Checkout with PayPal Express Checkout (API Credentials) from shopping cart " ticketId="MAGETWO-47213"> <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data> <data name="configData" xsi:type="string">paypal_express, paypal_express_in_context</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Paypal\Test\Constraint\AssertExpressCancelledMessage" /> </variation> </testCase> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.php index ff06e6b10266ef4b723811bf143b648aa59853e9..b96f6a3e4a70a4ce320b0bf7b424675a0eee8fc4 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.php +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.php @@ -32,6 +32,7 @@ class InContextExpressOnePageCheckoutTest extends Scenario const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; const TO_MAINTAIN = 'yes'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.xml index cbdd9c3b6d6d31d13acac40ef5c8420b51054f85..5fa8e6e8b775dfb4e0bae646d431196823312f98 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.xml @@ -18,7 +18,7 @@ </data> <data name="payment/method" xsi:type="string">paypal_express</data> <data name="configData" xsi:type="string">paypal_express_in_context, paypal_express, freeshipping</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Paypal\Test\Constraint\AssertExpressCancelledMessage" /> </variation> </testCase> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/NavigateMenuTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/NavigateMenuTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..379e90eb72c0d15c28b4de340f019ed21e9978c5 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/NavigateMenuTest.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> + <testCase name="Magento\Backend\Test\TestCase\NavigateMenuTest" summary="Navigate through admin menu" ticketId="MAGETWO-34874"> + <variation name="NavigateMenuTest50"> + <data name="tag" xsi:type="string">severity:S0</data> + <data name="menuItem" xsi:type="string">Reports > PayPal Settlement</data> + <data name="pageTitle" xsi:type="string">PayPal Settlement Reports</data> + <constraint name="Magento\Backend\Test\Constraint\AssertBackendPageIsAvailable"/> + </variation> + <variation name="NavigateMenuTest51"> + <data name="tag" xsi:type="string">severity:S0</data> + <data name="menuItem" xsi:type="string">Sales > Billing Agreements</data> + <data name="pageTitle" xsi:type="string">Billing Agreements</data> + <constraint name="Magento\Backend\Test\Constraint\AssertBackendPageIsAvailable"/> + </variation> + </testCase> +</config> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml index d74d93053196b39f32c2430c70d0dfddee0d5c50..b1da43e473bc5d78d4bfaf0fbcbb718dac6acd3e 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml @@ -24,7 +24,7 @@ <data name="creditCard/dataset" xsi:type="string">visa_default</data> <data name="configData" xsi:type="string">payflowpro, payflowpro_use_vault</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> <constraint name="Magento\Sales\Test\Constraint\AssertOrderSuccessCreateMessage" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" /> <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" /> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/UseVaultOnCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/UseVaultOnCheckoutTest.xml index bde3837d71fda02bad93ac1ced7c3c08835deafe..92b4be03b5937ffa318f9d3cd05f6e6d2290f6bc 100644 --- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/UseVaultOnCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/UseVaultOnCheckoutTest.xml @@ -21,7 +21,7 @@ <data name="creditCardSave" xsi:type="string">Yes</data> <data name="configData" xsi:type="string">payflowpro, payflowpro_use_vault</data> <data name="status" xsi:type="string">Processing</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <data name="status" xsi:type="string">Processing</data> <data name="orderButtonsAvailable" xsi:type="string">Back, Cancel, Send Email, Hold, Invoice, Ship, Reorder, Edit</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" /> diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/etc/di.xml new file mode 100644 index 0000000000000000000000000000000000000000..e56386d5e0eacc346bfb5ddaf84319a1d1d16313 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/etc/di.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> + <type name="Magento\Paypal\Test\Constraint\Sandbox\AssertTotalPaypalReview"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Paypal\Test\Constraint\AssertExpressCancelledMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> +</config> diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertCustomerEmailChanged.php b/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertCustomerEmailChanged.php new file mode 100644 index 0000000000000000000000000000000000000000..68384aacbc70cc4759f99ab9cb0d1cb42ac2ca9d --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertCustomerEmailChanged.php @@ -0,0 +1,64 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Security\Test\Constraint; + +use Magento\Customer\Test\Fixture\Customer; +use Magento\Customer\Test\Page\CustomerAccountIndex; +use Magento\Mtf\Constraint\AbstractConstraint; +use Magento\Mtf\Fixture\FixtureFactory; + +/** + * Check that login again to frontend with new email was successful. + */ +class AssertCustomerEmailChanged extends AbstractConstraint +{ + /** + * Assert that login again to frontend with new email was successful. + * + * @param FixtureFactory $fixtureFactory + * @param CustomerAccountIndex $customerAccountIndex + * @param Customer $initialCustomer + * @param Customer $customer + * @return void + */ + public function processAssert( + FixtureFactory $fixtureFactory, + CustomerAccountIndex $customerAccountIndex, + Customer $initialCustomer, + Customer $customer + ) { + $customer = $fixtureFactory->createByCode( + 'customer', + [ + 'data' => [ + 'email' => $customer->getEmail(), + 'password' => $initialCustomer->getPassword() + ], + ] + ); + + $this->objectManager->create( + \Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep::class, + ['customer' => $customer] + )->run(); + + \PHPUnit_Framework_Assert::assertTrue( + $customerAccountIndex->getAccountMenuBlock()->isVisible(), + 'Customer Account Dashboard is not visible.' + ); + } + + /** + * Returns a string representation of the object. + * + * @return string + */ + public function toString() + { + return 'Customer email was changed.'; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertDefaultAccountInformation.php b/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertDefaultAccountInformation.php new file mode 100644 index 0000000000000000000000000000000000000000..642db5925157414db3220aceae8049af209ed2d6 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertDefaultAccountInformation.php @@ -0,0 +1,58 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Security\Test\Constraint; + +use Magento\Customer\Test\Page\CustomerAccountEdit; +use Magento\Mtf\Constraint\AbstractConstraint; + +/** + * Assert fields visibility in customer account information tab. + */ +class AssertDefaultAccountInformation extends AbstractConstraint +{ + /** + * Assert fields visibility in customer account information tab. + * + * @param CustomerAccountEdit $customerAccountEdit + * @return void + */ + public function processAssert( + CustomerAccountEdit $customerAccountEdit + ) { + $infoForm = $customerAccountEdit->getAccountInfoForm(); + + \PHPUnit_Framework_Assert::assertFalse( + $infoForm->isEmailVisible(), + 'Email text field should not be visible.' + ); + + \PHPUnit_Framework_Assert::assertFalse( + $infoForm->isCurrentPasswordVisible(), + 'Current Password text field should not be visible.' + ); + + \PHPUnit_Framework_Assert::assertFalse( + $infoForm->isPasswordVisible(), + 'New Password text field should not be visible.' + ); + + \PHPUnit_Framework_Assert::assertFalse( + $infoForm->isConfirmPasswordVisible(), + 'Password Confirmation text field should not be visible.' + ); + } + + /** + * String representation of success assert. + * + * @return string + */ + public function toString() + { + return 'Default customer account information tab is correct.'; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.php b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.php new file mode 100644 index 0000000000000000000000000000000000000000..9f1acd69d92a2e3ba02e52ad4e563932924f2305 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.php @@ -0,0 +1,88 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Security\Test\TestCase; + +use Magento\Mtf\TestCase\Injectable; +use Magento\Customer\Test\Fixture\Customer; +use Magento\Customer\Test\Page\CustomerAccountEdit; + +/** + * Test Flow: + * + * Preconditions: + * 1. Customer is created + * + * Steps: + * 1. Login to fronted as customer from preconditions + * 2. Navigate to Account Information tab + * 3. Check "Change Email" checkbox + * 4. Fill form according to data set and save + * 5. Perform all assertions + * + * @group Security + * @ZephyrId MAGETWO-49041 + */ +class SecureChangingCustomerEmailTest extends Injectable +{ + /* tags */ + const MVP = 'yes'; + const SEVERITY = 'S1'; + /* end tags */ + + /** + * CustomerAccountEdit page. + * + * @var CustomerAccountEdit + */ + protected $customerAccountEdit; + + /** + * Preparing page for test. + * + * @param CustomerAccountEdit $customerAccountEdit + * @return void + */ + public function __inject( + CustomerAccountEdit $customerAccountEdit + ) { + $this->customerAccountEdit = $customerAccountEdit; + } + + /** + * Change customer password in Account Information tab. + * + * @param Customer $initialCustomer + * @param Customer $customer + * @return void + */ + public function test(Customer $initialCustomer, Customer $customer) + { + // Preconditions + $initialCustomer->persist(); + + // Steps + $this->objectManager->create( + \Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep::class, + ['customer' => $initialCustomer] + )->run(); + + $this->customerAccountEdit->getAccountMenuBlock()->openMenuItem('Account Information'); + $this->customerAccountEdit->getAccountInfoForm()->SetChangeEmail(true); + $this->customerAccountEdit->getAccountInfoForm()->fill($customer); + $this->customerAccountEdit->getAccountInfoForm()->submit(); + } + + /** + * Logout customer from frontend account. + * + * @return void + */ + public function tearDown() + { + $this->objectManager->create(\Magento\Customer\Test\TestStep\LogoutCustomerOnFrontendStep::class)->run(); + } +} diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.xml b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc3ad06e842fd17d9eebb7fd4fdbb2a0815e9d4f --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> + <testCase name="Magento\Security\Test\TestCase\SecureChangingCustomerEmailTest" summary="Secure Changing Customer Email" ticketId="MAGETWO-49041"> + <variation name="SecureChangingEmailV1" summary="Change Email checkbox is checked, enter new email, correct password"> + <data name="tag" xsi:type="string">severity:S1</data> + <data name="initialCustomer/dataset" xsi:type="string">default</data> + <data name="customer/data/email" xsi:type="string">JaneDoe_%isolation%@example.com</data> + <data name="customer/data/current_password" xsi:type="string">123123^q</data> + <constraint name="Magento\Customer\Test\Constraint\AssertCustomerInfoSuccessSavedMessage" /> + <constraint name="Magento\Security\Test\Constraint\AssertCustomerEmailChanged" /> + </variation> + <variation name="SecureChangingEmailV2" summary="Change Email checkbox is checked, enter new email, wrong password"> + <data name="tag" xsi:type="string">severity:S2</data> + <data name="initialCustomer/dataset" xsi:type="string">default</data> + <data name="customer/data/email" xsi:type="string">JaneDoe_%isolation%@example.com</data> + <data name="customer/data/current_password" xsi:type="string">123123123</data> + <constraint name="Magento\Customer\Test\Constraint\AssertChangePasswordFailMessage" /> + </variation> + </testCase> +</config> diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.php b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.php new file mode 100644 index 0000000000000000000000000000000000000000..225ef6b397aa4b3c9cf70d2d0ef32adccb73edf6 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.php @@ -0,0 +1,91 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Security\Test\TestCase; + +use Magento\Mtf\TestCase\Injectable; +use Magento\Customer\Test\Fixture\Customer; +use Magento\Customer\Test\Page\CustomerAccountEdit; + +/** + * Test Flow: + * + * Preconditions: + * 1. Customer is created + * + * Steps: + * 1. Login to fronted as customer from preconditions + * 2. Navigate to Account Information tab + * 3. Check "Change Password" checkbox + * 4. Fill form according to data set and save + * 5. Perform all assertions + * + * @group Security + * @ZephyrId MAGETWO-49043 + */ +class SecureChangingCustomerPasswordTest extends Injectable +{ + /* tags */ + const MVP = 'yes'; + const SEVERITY = 'S1'; + /* end tags */ + + /** + * CustomerAccountEdit page. + * + * @var CustomerAccountEdit + */ + protected $customerAccountEdit; + + /** + * Preparing page for test. + * + * @param CustomerAccountEdit $customerAccountEdit + * @return void + */ + public function __inject( + CustomerAccountEdit $customerAccountEdit + ) { + $this->customerAccountEdit = $customerAccountEdit; + } + + /** + * Change customer password in Account Information tab. + * + * @param Customer $initialCustomer + * @param Customer $customer + * @param boolean $check + * @return void + */ + public function test(Customer $initialCustomer, Customer $customer, $check) + { + // Preconditions + $initialCustomer->persist(); + + // Steps + $this->objectManager->create( + \Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep::class, + ['customer' => $initialCustomer] + )->run(); + + $this->customerAccountEdit->getAccountMenuBlock()->openMenuItem('Account Information'); + if ($check) { + $this->customerAccountEdit->getAccountInfoForm()->SetChangePassword(true); + $this->customerAccountEdit->getAccountInfoForm()->fill($customer); + $this->customerAccountEdit->getAccountInfoForm()->submit(); + } + } + + /** + * Logout customer from frontend account. + * + * @return void + */ + public function tearDown() + { + $this->objectManager->create(\Magento\Customer\Test\TestStep\LogoutCustomerOnFrontendStep::class)->run(); + } +} diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.xml b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..9fc2f50435a98a13ea42f800efd51b503e11d218 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> + <testCase name="Magento\Security\Test\TestCase\SecureChangingCustomerPasswordTest" summary="Secure Changing Customer Password" ticketId="MAGETWO-49043"> + <variation name="SecureChangingPasswordV1" summary="Change Password checkbox is checked, enter correct password"> + <data name="tag" xsi:type="string">severity:S1</data> + <data name="initialCustomer/dataset" xsi:type="string">default</data> + <data name="customer/data/current_password" xsi:type="string">123123^q</data> + <data name="customer/data/password" xsi:type="string">123123Qa</data> + <data name="customer/data/password_confirmation" xsi:type="string">123123Qa</data> + <data name="check" xsi:type="string">1</data> + <constraint name="Magento\Customer\Test\Constraint\AssertCustomerInfoSuccessSavedMessage" /> + <constraint name="Magento\Customer\Test\Constraint\AssertCustomerPasswordChanged" /> + </variation> + <variation name="SecureChangingPasswordV2" summary="Change Password checkbox is checked, enter wrong password"> + <data name="tag" xsi:type="string">severity:S2</data> + <data name="initialCustomer/dataset" xsi:type="string">default</data> + <data name="customer/data/current_password" xsi:type="string">123123123</data> + <data name="customer/data/password" xsi:type="string">123123Qa</data> + <data name="customer/data/password_confirmation" xsi:type="string">123123Qa</data> + <data name="check" xsi:type="string">1</data> + <constraint name="Magento\Customer\Test\Constraint\AssertChangePasswordFailMessage" /> + </variation> + <variation name="SecureChangingPasswordV3" summary="Change Password checkbox is unchecked"> + <data name="tag" xsi:type="string">severity:S3</data> + <data name="initialCustomer/dataset" xsi:type="string">default</data> + <data name="check" xsi:type="string">0</data> + <constraint name="Magento\Security\Test\Constraint\AssertDefaultAccountInformation" /> + </variation> + </testCase> +</config> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/Fixture/Store/GroupId.php b/dev/tests/functional/tests/app/Magento/Store/Test/Fixture/Store/GroupId.php index 93bf1a9001cbfcc4825afee549e3873d1d623ae9..a5fa6d4a83cbe63cbcf6d6b15e5935787d5d2694 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/Fixture/Store/GroupId.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/Fixture/Store/GroupId.php @@ -43,6 +43,15 @@ class GroupId extends DataSource $this->storeGroup = $data['fixture']; $this->data = $this->storeGroup->getWebsiteId() . "/" . $this->storeGroup->getName(); } + + if (isset($data['storeGroup']) && $data['storeGroup'] instanceof StoreGroup) { + $this->storeGroup = $data['storeGroup']; + $this->data = $data['storeGroup']->getWebsiteId() . "/" . $data['storeGroup']->getName(); + } + + if (isset($data['value'])) { + $this->data = $data['value']; + } } /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/Repository/Store.xml b/dev/tests/functional/tests/app/Magento/Store/Test/Repository/Store.xml index 12ca9f5e03a20568423ee565030c785e9eec5bba..37faba3d75524304919c65cf391ee4211ef9fdae 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/Repository/Store.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/Repository/Store.xml @@ -52,5 +52,14 @@ <field name="code" xsi:type="string">store_%isolation%</field> <field name="is_active" xsi:type="string">Enabled</field> </dataset> + + <dataset name="custom_group_custom_store"> + <field name="group_id" xsi:type="array"> + <item name="dataset" xsi:type="string">custom</item> + </field> + <field name="name" xsi:type="string">Custom_Store_%isolation%</field> + <field name="code" xsi:type="string">code_%isolation%</field> + <field name="is_active" xsi:type="string">Enabled</field> + </dataset> </repository> </config> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.php index 804111c497cca364fc749a477ee85e356c686d53..56ec632ffd09f6c063d21eb747d114219fe9b022 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.php @@ -34,6 +34,7 @@ class CreateStoreEntityTest extends Injectable /* tags */ const MVP = 'yes'; const TEST_TYPE = 'acceptance_test, extended_acceptance_test'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.xml index d0fb3738910cd171f190ee4a5f1c8acc157d298f..26d9aa9beba0acc098558d8fd1f6aacb9083cb5d 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.xml @@ -8,28 +8,27 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\CreateStoreEntityTest" summary="Create Store View" ticketId="MAGETWO-27647"> <variation name="CreateStoreEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S1</data> <data name="store/data/group_id/dataset" xsi:type="string">default</data> <data name="store/data/name" xsi:type="string">store_name_%isolation%</data> <data name="store/data/code" xsi:type="string">storecode_%isolation%</data> <data name="store/data/is_active" xsi:type="string">Enabled</data> <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessSaveMessage" /> - <constraint name="Magento\Store\Test\Constraint\AssertStoreInGrid" /> - <constraint name="Magento\Store\Test\Constraint\AssertStoreForm" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreBackend" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreFrontend" /> </variation> <variation name="CreateStoreEntityTestVariation2"> + <data name="tag" xsi:type="string">severity:S3</data> <data name="store/data/group_id/dataset" xsi:type="string">default</data> <data name="store/data/name" xsi:type="string">store_name_%isolation%</data> <data name="store/data/code" xsi:type="string">storecode_%isolation%</data> <data name="store/data/is_active" xsi:type="string">Disabled</data> <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessSaveMessage" /> - <constraint name="Magento\Store\Test\Constraint\AssertStoreInGrid" /> - <constraint name="Magento\Store\Test\Constraint\AssertStoreForm" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreBackend" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreNotOnFrontend" /> </variation> <variation name="CreateStoreEntityTestVariation3"> + <data name="tag" xsi:type="string">severity:S1</data> <data name="store/data/group_id/dataset" xsi:type="string">custom</data> <data name="store/data/name" xsi:type="string">store_name_%isolation%</data> <data name="store/data/code" xsi:type="string">storecode_%isolation%</data> @@ -41,7 +40,7 @@ <constraint name="Magento\Store\Test\Constraint\AssertStoreFrontend" /> </variation> <variation name="CreateStoreEntityTestVariation4" summary="Create New Localized Store View" ticketId="MAGETWO-12405"> - <data name="tag" xsi:type="string">test_type:acceptance_test, test_type:extended_acceptance_test</data> + <data name="tag" xsi:type="string">test_type:acceptance_test, test_type:extended_acceptance_test, severity:S0</data> <data name="store/data/group_id/dataset" xsi:type="string">default</data> <data name="store/data/name" xsi:type="string">DE_%isolation%</data> <data name="store/data/code" xsi:type="string">de_%isolation%</data> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.php index 5d638d781d173ab22923ad2772fd31a984dd944e..76589026b70a031ecea639bb4303b5d38bff9bc0 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.php @@ -29,6 +29,7 @@ class CreateStoreGroupEntityTest extends Injectable { /* tags */ const MVP = 'yes'; + const SEVERITY = 'S1'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.xml index d3644ff6ddc59c2efab74f853c48c26ca1780aa8..39adbb9c418403469cfd5f82697619c5d89218be 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.xml @@ -8,15 +8,16 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\CreateStoreGroupEntityTest" summary="Create Store Group" ticketId="MAGETWO-27345"> <variation name="CreateStoreGroupEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S1</data> <data name="storeGroup/data/website_id/dataset" xsi:type="string">main_website</data> <data name="storeGroup/data/name" xsi:type="string">store_name_%isolation%</data> <data name="storeGroup/data/root_category_id/dataset" xsi:type="string">default_category</data> <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessSaveMessage" /> - <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupInGrid" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupForm" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupOnStoreViewForm" /> </variation> <variation name="CreateStoreGroupEntityTestVariation2"> + <data name="tag" xsi:type="string">severity:S1</data> <data name="storeGroup/data/website_id/dataset" xsi:type="string">custom_website</data> <data name="storeGroup/data/name" xsi:type="string">store_name_%isolation%</data> <data name="storeGroup/data/root_category_id/dataset" xsi:type="string">root_category</data> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.php index 766e030b3f61880551fd4b82ffc217ce0aa5179a..3e0b3670f49453c884aa22ce82dbf19eed56cf61 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.php @@ -29,6 +29,7 @@ class CreateWebsiteEntityTest extends Injectable { /* tags */ const MVP = 'yes'; + const SEVERITY = 'S1'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.xml index e5ec1371587a6ee52955b5b34a6bdc93be5dfbc6..810a4b9ac88f2840c5b160d36a64540f568a626d 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.xml @@ -8,6 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\CreateWebsiteEntityTest" summary="Create Website" ticketId="MAGETWO-27665"> <variation name="CreateWebsiteEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S1</data> <data name="website/data/name" xsi:type="string">website_%isolation%</data> <data name="website/data/code" xsi:type="string">code_%isolation%</data> <constraint name="Magento\Store\Test\Constraint\AssertWebsiteSuccessSaveMessage" /> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.php index cbe261fe750a8c7c8fd61244edd5387aea6152cb..baee46f8697034061b748f4d45b5fe62e72b1f5e 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.php @@ -36,6 +36,7 @@ class DeleteStoreEntityTest extends Injectable { /* tags */ const MVP = 'yes'; + const SEVERITY = 'S2'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.xml index 05132aeefda4cd55afea8f9515023cfd9819b3a0..b888ba1f778370d11e19ded0f8c40cfd543541ea 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.xml @@ -8,6 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\DeleteStoreEntityTest" summary="Delete Store View" ticketId="MAGETWO-27942"> <variation name="DeleteStoreEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S2</data> <data name="store/dataset" xsi:type="string">custom</data> <data name="createBackup" xsi:type="string">Yes</data> <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessDeleteAndBackupMessages" /> @@ -16,10 +17,10 @@ <constraint name="Magento\Store\Test\Constraint\AssertStoreNotOnFrontend" /> </variation> <variation name="DeleteStoreEntityTestVariation2"> + <data name="tag" xsi:type="string">severity:S2</data> <data name="store/dataset" xsi:type="string">custom</data> <data name="createBackup" xsi:type="string">No</data> <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessDeleteMessage" /> - <constraint name="Magento\Store\Test\Constraint\AssertStoreNotInGrid" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreNotOnFrontend" /> </variation> </testCase> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.php index e7ba27b44c1a845bd513a55bf22d042b3100d1cc..5890298650c5c8ddac676d7198f40ba20dc0a26e 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.php @@ -38,6 +38,7 @@ class DeleteStoreGroupEntityTest extends Injectable { /* tags */ const MVP = 'yes'; + const SEVERITY = 'S3'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.xml index bbedbfc8d103786cdef08c5a4dbdc1f94d9af8e9..16c0aeb358bb0fe5e7f0e18216300161c6dfbbf1 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.xml @@ -8,6 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\DeleteStoreGroupEntityTest" summary="Delete Store Group" ticketId="MAGETWO-27596"> <variation name="DeleteStoreGroupEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S3</data> <data name="storeGroup/dataset" xsi:type="string">custom</data> <data name="createBackup" xsi:type="string">Yes</data> <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessDeleteAndBackupMessages" /> @@ -15,6 +16,7 @@ <constraint name="Magento\Backup\Test\Constraint\AssertBackupInGrid" /> </variation> <variation name="DeleteStoreGroupEntityTestVariation2"> + <data name="tag" xsi:type="string">severity:S3</data> <data name="storeGroup/dataset" xsi:type="string">custom</data> <data name="createBackup" xsi:type="string">No</data> <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessDeleteMessage" /> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.php index 5d4af70cb03e3154364e03611be4347104d09db0..94e14b4a42317edaa2b1f151a3858c770a74fc68 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.php @@ -38,6 +38,7 @@ class DeleteWebsiteEntityTest extends Injectable { /* tags */ const MVP = 'yes'; + const SEVERITY = 'S3'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.xml index 93c63d42d4de51df71e8fee8eeb62e2286c7bcfc..21327a0ced20bd407f331d8a15c07e42199dfa0d 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.xml @@ -8,6 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\DeleteWebsiteEntityTest" summary="Delete Website" ticketId="MAGETWO-27723"> <variation name="DeleteWebsiteEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S3</data> <data name="website/dataset" xsi:type="string">custom_website</data> <data name="createBackup" xsi:type="string">Yes</data> <constraint name="Magento\Store\Test\Constraint\AssertWebsiteSuccessDeleteAndBackupMessages" /> @@ -15,6 +16,7 @@ <constraint name="Magento\Backup\Test\Constraint\AssertBackupInGrid" /> </variation> <variation name="DeleteWebsiteEntityTestVariation2"> + <data name="tag" xsi:type="string">severity:S3</data> <data name="website/dataset" xsi:type="string">custom_website</data> <data name="createBackup" xsi:type="string">No</data> <constraint name="Magento\Store\Test\Constraint\AssertWebsiteSuccessDeleteMessage" /> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.php new file mode 100644 index 0000000000000000000000000000000000000000..9a335e1cbd0e362cda015be6ae1e309fe1f179f6 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.php @@ -0,0 +1,107 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Store\Test\TestCase; + +use Magento\Backend\Test\Page\Adminhtml\EditStore; +use Magento\Backend\Test\Page\Adminhtml\StoreIndex; +use Magento\Store\Test\Fixture\Store; +use Magento\Mtf\TestCase\Injectable; +use Magento\Mtf\Fixture\FixtureFactory; + +/** + * Test Move Store view to another store within same website (Store Management) + * + * Test Flow: + * + * Preconditions: + * 1.Create store STA with store view SVA + * 2.Create store STB with store view SVB + * 3.STA and STB belong to the same website + * + * Steps: + * 1. Open Backend + * 2. Go to Stores -> All Stores + * 3. Open store view SVB from grid + * 4. Change store group setting from STB to STA + * 5. Save store entity + * 6. Perform all assertions + * + * @group Store_Management + * @ZephyrId MAGETWO-54026 + */ +class MoveStoreToOtherGroupSameWebsiteTest extends Injectable +{ + /* tags */ + const MVP = 'yes'; + const SEVERITY = 'S1'; + /* end tags */ + + /** + * Page StoreIndex + * + * @var StoreIndex + */ + protected $storeIndex; + + /** + * Page EditStore + * + * @var EditStore + */ + protected $editStore; + + /** + * Preparing pages for test + * + * @param StoreIndex $storeIndex + * @param EditStore $editStore + * @return void + */ + public function __inject(StoreIndex $storeIndex, EditStore $editStore) + { + $this->storeIndex = $storeIndex; + $this->editStore = $editStore; + } + + /** + * Move store view to another store group within a website + * + * @param FixtureFactory $fixtureFactory + * @param Store $storeInitialA + * @param Store $storeInitialB + * @return array + */ + public function test(FixtureFactory $fixtureFactory, Store $storeInitialA, Store $storeInitialB) + { + // Prepare data for constraints + $store = $fixtureFactory->createByCode( + 'store', + [ + 'data' => [ + 'name' => $storeInitialB->getName(), + 'code' => $storeInitialB->getCode(), + 'is_active' => $storeInitialB->getIsActive(), + 'group_id' => [ + 'storeGroup' => $storeInitialA->getDataFieldConfig('group_id')['source']->getStoreGroup() + ], + ], + ] + ); + + // Preconditions + $storeInitialA->persist(); + $storeInitialB->persist(); + + // Steps + $this->storeIndex->open(); + $this->storeIndex->getStoreGrid()->searchAndOpenStore($storeInitialB); + $this->editStore->getStoreForm()->selectStore($storeInitialA->getGroupId()); + $this->editStore->getFormPageActions()->save(); + + return ['store' => $store]; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..d6353d8379532e5b3a77dda4696e214d15663c90 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> + <testCase name="Magento\Store\Test\TestCase\MoveStoreToOtherGroupSameWebsiteTest" summary="Move Store View" ticketId="MAGETWO-54026"> + <variation name="MoveStoreTestVariation1"> + <data name="storeInitialA/dataset" xsi:type="string">custom_group_custom_store</data> + <data name="storeInitialB/dataset" xsi:type="string">custom_group_custom_store</data> + <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessSaveMessage" /> + <constraint name="Magento\Store\Test\Constraint\AssertStoreInGrid" /> + <constraint name="Magento\Store\Test\Constraint\AssertStoreForm" /> + <constraint name="Magento\Store\Test\Constraint\AssertStoreBackend" /> + <constraint name="Magento\Store\Test\Constraint\AssertStoreFrontend" /> + </variation> + </testCase> +</config> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.php index 38250d958bc10273d3918789b6b00559bdf0c567..43a219cba62e6404ae9c690050ff582ad712bd39 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.php @@ -33,6 +33,7 @@ class UpdateStoreEntityTest extends Injectable { /* tags */ const MVP = 'yes'; + const SEVERITY = 'S2'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.xml index 92028c303a5292e7130ced0ae2541aa79111fc29..c32df2c53396b37a89b3419891d2c2bc9e3873ac 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.xml @@ -8,6 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\UpdateStoreEntityTest" summary="Update Store View" ticketId="MAGETWO-27786"> <variation name="UpdateStoreEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S2</data> <data name="storeInitial/dataset" xsi:type="string">custom</data> <data name="store/data/group_id/dataset" xsi:type="string">default</data> <data name="store/data/name" xsi:type="string">storename_updated%isolation%</data> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.php index 7e9143a5c91df4775bc2222a4281171ffb6681b7..f81d0989e24813cf20e1be734beecc5b5b2c5f32 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.php @@ -34,6 +34,7 @@ class UpdateStoreGroupEntityTest extends Injectable { /* tags */ const MVP = 'yes'; + const SEVERITY = 'S2'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.xml index ce1a67575c67588ff4b9af854b579f5d21859f4b..07309135f607a4bc49584e9aa11819358336a984 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.xml @@ -8,16 +8,17 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\UpdateStoreGroupEntityTest" summary="Update Store Group" ticketId="MAGETWO-27568"> <variation name="UpdateStoreGroupEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S2</data> <data name="storeGroupOrigin/dataset" xsi:type="string">custom</data> <data name="storeGroup/data/website_id/dataset" xsi:type="string">main_website</data> <data name="storeGroup/data/name" xsi:type="string">store_name_updated_%isolation%</data> <data name="storeGroup/data/root_category_id/dataset" xsi:type="string">default_category</data> <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessSaveMessage" /> - <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupInGrid" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupForm" /> <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupOnStoreViewForm" /> </variation> <variation name="UpdateStoreGroupEntityTestVariation2"> + <data name="tag" xsi:type="string">severity:S2</data> <data name="storeGroupOrigin/dataset" xsi:type="string">custom</data> <data name="storeGroup/data/website_id/dataset" xsi:type="string">custom_website</data> <data name="storeGroup/data/name" xsi:type="string">store_name_updated_%isolation%</data> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.php index b187f05856670a1807b904a8b87bfca78ee51357..28fcfd79131faef12d35ad54457deb152b5858ec 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.php @@ -35,6 +35,7 @@ class UpdateWebsiteEntityTest extends Injectable { /* tags */ const MVP = 'yes'; + const SEVERITY = 'S2'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.xml index 94f0a891e61ccb6f62563d65a3a0f2c86ed9d1f3..c1b3af6749727a658d8bf3635322bd5da6402567 100644 --- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.xml @@ -8,6 +8,7 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> <testCase name="Magento\Store\Test\TestCase\UpdateWebsiteEntityTest" summary="Update Website" ticketId="MAGETWO-27690"> <variation name="UpdateWebsiteEntityTestVariation1"> + <data name="tag" xsi:type="string">severity:S2</data> <data name="websiteOrigin/dataset" xsi:type="string">custom_website</data> <data name="website/data/name" xsi:type="string">website_upd%isolation%</data> <data name="website/data/code" xsi:type="string">code_upd%isolation%</data> diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Store/Test/etc/di.xml new file mode 100644 index 0000000000000000000000000000000000000000..737f33ebebe1f9ec23a4140cc43e74538d6c48a3 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Store/Test/etc/di.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> + <type name="Magento\Store\Test\Constraint\AssertStoreBackend"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreForm"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreFrontend"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreGroupForm"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreGroupInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreGroupNotInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreGroupOnStoreViewForm"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessDeleteAndBackupMessages"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessDeleteMessage"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessSaveMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreNotInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreNotOnFrontend"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreSuccessDeleteAndBackupMessages"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreSuccessDeleteMessage"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertStoreSuccessSaveMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertWebsiteForm"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertWebsiteInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertWebsiteNotInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertWebsiteOnStoreForm"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertWebsiteSuccessDeleteAndBackupMessages"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertWebsiteSuccessDeleteMessage"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Store\Test\Constraint\AssertWebsiteSuccessSaveMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> +</config> diff --git a/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml index b27bc81d2866045de5c9e1d18fa4689a09a360d1..45076e90aab202b1cae7fbc5abcefbfc6c11e317 100644 --- a/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml @@ -20,7 +20,7 @@ <data name="cart/data/shipping_method" xsi:type="string">UPS Ground</data> <data name="payment/method" xsi:type="string">checkmo</data> <data name="configData" xsi:type="string">checkmo, ups, shipping_origin_US_CA</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage"/> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid"/> @@ -39,7 +39,7 @@ <data name="cart/data/shipping_method" xsi:type="string">UPS Worldwide Expedited</data> <data name="payment/method" xsi:type="string">checkmo</data> <data name="configData" xsi:type="string">checkmo, ups, shipping_origin_US_CA</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage"/> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid"/> diff --git a/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml index 28c2b0f16239c735c927a8d3f7ef8eb0ebc1b01b..0bd219bab3bfff2103ea9f7a1ff2934ca8e1ad59 100644 --- a/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml +++ b/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml @@ -20,7 +20,7 @@ <data name="cart/data/shipping_method" xsi:type="string">Priority Mail 1-Day</data> <data name="payment/method" xsi:type="string">checkmo</data> <data name="configData" xsi:type="string">checkmo, usps, shipping_origin_US_CA</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage"/> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid"/> @@ -37,7 +37,7 @@ <data name="cart/data/shipping_method" xsi:type="string">Priority Mail Express International Flat Rate Envelope</data> <data name="payment/method" xsi:type="string">checkmo</data> <data name="configData" xsi:type="string">checkmo, usps, shipping_origin_US_CA</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data> <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage"/> <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" /> <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid"/> diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/CreateVaultOrderBackendTest.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/CreateVaultOrderBackendTest.php index 3c306280215ea1a2ee460db6f7838fd7c33caf7c..a5194b3915191e7c5ef893bcb5958d610544ddf7 100644 --- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/CreateVaultOrderBackendTest.php +++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/CreateVaultOrderBackendTest.php @@ -38,6 +38,7 @@ class CreateVaultOrderBackendTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = 'acceptance_test, extended_acceptance_test, 3rd_party_test'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.php index 17db35df1b44e6d2be519426ba962f6696fee23d..e6462e4697aa612c1239b92b3c7b7e847bd252ba 100644 --- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.php +++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.php @@ -32,6 +32,7 @@ class DeleteSavedCreditCardTest extends Injectable /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S1'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml index ae303b695277c53272efedc40231bf305b66fea5..ac69bfb9f47e4550e6ab4592cccbdf56cf682da3 100644 --- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml +++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml @@ -52,7 +52,7 @@ </data> <data name="creditCardSave" xsi:type="string">Yes</data> <data name="configData" xsi:type="string">braintree, payflowpro, braintree_use_vault, payflowpro_use_vault</data> - <data name="tag" xsi:type="string">test_type:3rd_party_test</data> + <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data> </variation> </testCase> </config> diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/ReorderUsingVaultTest.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/ReorderUsingVaultTest.php index c3b82af6949c4a0ea114324abae90aa7ccab3a24..e426662d30e5447599f0b2f4bc47b67902aeb7c9 100644 --- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/ReorderUsingVaultTest.php +++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/ReorderUsingVaultTest.php @@ -36,6 +36,8 @@ class ReorderUsingVaultTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = 'extended_acceptance_test, 3rd_party_test'; + const SEVERITY = 'S1'; + /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/UseVaultOnCheckoutTest.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/UseVaultOnCheckoutTest.php index 902ccc62af7f57c23db399bc22d5d3530b0a7515..fb8b3575ee72e463254038446ce55561123e3103 100644 --- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/UseVaultOnCheckoutTest.php +++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/UseVaultOnCheckoutTest.php @@ -39,6 +39,7 @@ class UseVaultOnCheckoutTest extends Scenario /* tags */ const MVP = 'yes'; const TEST_TYPE = '3rd_party_test'; + const SEVERITY = 'S0'; /* end tags */ /** diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Vault/Test/etc/di.xml new file mode 100644 index 0000000000000000000000000000000000000000..aba54057312ea3491655b5ea6e75c9fef4dfc2ae --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Vault/Test/etc/di.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> + <type name="Magento\Vault\Test\Constraint\AssertCreditCardNotPresentOnCheckout"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Vault\Test\Constraint\AssertStoredPaymentDeletedMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> +</config> diff --git a/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/basic.xml b/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/basic.xml index 4b4ab839d3463cbef4c766161e41874d0d65e446..6836259eb671ac908ad017138bde36a86e764766 100644 --- a/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/basic.xml +++ b/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/basic.xml @@ -7,11 +7,6 @@ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../vendor/magento/mtf/Magento/Mtf/TestRunner/etc/testRunner.xsd"> - <rule scope="testcase"> - <deny> - <tag group="test_type" value="3rd_party_test_deprecated" /> - </deny> - </rule> <rule scope="variation"> <deny> <tag group="test_type" value="3rd_party_test" /> diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php index 2c9d6ca91e9f9cd2487067389fc119b24ca4a3bc..963de3e46fea69c821902b8d4266681adc0d5ea8 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php @@ -40,7 +40,7 @@ $attribute->setData( 'option_1' => ['Option 1'], 'option_2' => ['Option 2'], 'option_3' => ['Option 3'], - 'option_4' => ['Option 4 "!@#$%^&*'], + 'option_4' => ['Option 4 "!@#$%^&*'] ], 'order' => [ 'option_1' => 1, diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute_with_incorrect_values.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute_with_incorrect_values.php new file mode 100644 index 0000000000000000000000000000000000000000..1ab2f9ef65bffca50886f8c7ef4764c550da0aa5 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute_with_incorrect_values.php @@ -0,0 +1,55 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +/* Create attribute */ +/** @var $installer \Magento\Catalog\Setup\CategorySetup */ +$installer = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( + \Magento\Catalog\Setup\CategorySetup::class +); +/** @var $attribute \Magento\Catalog\Model\ResourceModel\Eav\Attribute */ +$attribute = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( + \Magento\Catalog\Model\ResourceModel\Eav\Attribute::class +); +$attribute->setData( + [ + 'attribute_code' => 'multiselect_attribute', + 'entity_type_id' => $installer->getEntityTypeId('catalog_product'), + 'is_global' => 1, + 'is_user_defined' => 1, + 'frontend_input' => 'multiselect', + 'is_unique' => 0, + 'is_required' => 0, + 'is_searchable' => 0, + 'is_visible_in_advanced_search' => 0, + 'is_comparable' => 0, + 'is_filterable' => 0, + 'is_filterable_in_search' => 0, + 'is_used_for_promo_rules' => 0, + 'is_html_allowed_on_front' => 1, + 'is_visible_on_front' => 0, + 'used_in_product_listing' => 0, + 'used_for_sort_by' => 0, + 'frontend_label' => ['Multiselect Attribute'], + 'backend_type' => 'varchar', + 'backend_model' => \Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend::class, + 'option' => [ + 'value' => [ + 'option_1' => ['Opt|,=ion 1'], + 'option_2' => ['Opt||,ion 2'], + 'option_3' => ['Option 3 "!@#$%^&*, "|"'] + ], + 'order' => [ + 'option_1' => 1, + 'option_2' => 2, + 'option_3' => 3, + ], + ], + ] +); +$attribute->save(); + +/* Assign attribute to attribute set */ +$installer->addAttributeToGroup('catalog_product', 'Default', 'General', $attribute->getId()); diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php index 9b06764ce264cfe9aaa6be03a6e61f2f01210631..0afede93546f2c8ba69f8af9b64b70013b5d2c22 100644 --- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php +++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php @@ -206,4 +206,28 @@ class ProductTest extends \PHPUnit_Framework_TestCase $data = $model->setWriter($exportAdapter)->export(); $this->assertEmpty($data); } + + /** + * Verify if fields wrapping works correct when "Fields Enclosure" option enabled + * + * @magentoDataFixture Magento/CatalogImportExport/_files/product_export_data.php + */ + public function testExportWithFieldsEnclosure() + { + $this->model->setParameters([ + \Magento\ImportExport\Model\Export::FIELDS_ENCLOSURE => 1 + ]); + + $this->model->setWriter( + $this->objectManager->create( + \Magento\ImportExport\Model\Export\Adapter\Csv::class + ) + ); + $exportData = $this->model->export(); + + $this->assertContains('""Option 2""', $exportData); + $this->assertContains('""Option 3""', $exportData); + $this->assertContains('""Option 4 """"!@#$%^&*"""', $exportData); + $this->assertContains('text_attribute=""!@#$%^&*()_+1234567890-=|\:;"""', $exportData); + } } diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php index a5c1f07c164156a0941b0f8da05c43bdff644b5e..9ab7db147d811d370a4c2609d5baf5ea35225680 100644 --- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php +++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php @@ -1380,4 +1380,55 @@ class ProductTest extends \Magento\TestFramework\Indexer\TestCase array_values($actualProductSkus) ); } + + /** + * @magentoDataFixture Magento/Catalog/_files/multiselect_attribute_with_incorrect_values.php + * @magentoDataFixture Magento/Catalog/_files/product_text_attribute.php + * @magentoAppIsolation enabled + * @magentoDbIsolation enabled + */ + public function testProductWithWrappedAdditionalAttributes() + { + $filesystem = $this->objectManager->create(\Magento\Framework\Filesystem::class); + $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT); + $source = $this->objectManager->create( + \Magento\ImportExport\Model\Import\Source\Csv::class, + [ + 'file' => __DIR__ . '/_files/products_to_import_with_additional_attributes.csv', + 'directory' => $directory + ] + ); + $errors = $this->_model->setParameters( + [ + 'behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, + 'entity' => 'catalog_product', + \Magento\ImportExport\Model\Import::FIELDS_ENCLOSURE => 1 + ] + )->setSource( + $source + )->validateData(); + + $this->assertTrue($errors->getErrorsCount() == 0); + + $this->_model->importData(); + + /** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */ + $productRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( + \Magento\Catalog\Api\ProductRepositoryInterface::class + ); + + /** @var \Magento\Eav\Api\AttributeOptionManagementInterface $multiselectOptions */ + $multiselectOptions = $this->objectManager->get(\Magento\Eav\Api\AttributeOptionManagementInterface::class) + ->getItems(\Magento\Catalog\Model\Product::ENTITY, 'multiselect_attribute'); + + $product1 = $productRepository->get('simple1'); + $this->assertEquals('\'", =|', $product1->getData('text_attribute')); + $this->assertEquals(implode(',', [$multiselectOptions[3]->getValue(), $multiselectOptions[2]->getValue()]), + $product1->getData('multiselect_attribute')); + + $product2 = $productRepository->get('simple2'); + $this->assertEquals('', $product2->getData('text_attribute')); + $this->assertEquals(implode(',', [$multiselectOptions[1]->getValue(), $multiselectOptions[2]->getValue()]), + $product2->getData('multiselect_attribute')); + } } diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_additional_attributes.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_additional_attributes.csv new file mode 100644 index 0000000000000000000000000000000000000000..eb882be4c6bb1dcb804cd284e1ce376c31feec37 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_additional_attributes.csv @@ -0,0 +1,3 @@ +sku,product_type,name,price,attribute_set_code,categories,additional_attributes +simple1,simple,"simple 1",25,Default,"Default Category/Category 1","text_attribute=""'"""", =|"",multiselect_attribute=""Option 3 """"!@#$%^&*, """"|""""""|""Opt||,ion 2""" +simple2,simple,"simple 2",34,Default,"Default Category/Category 1","multiselect_attribute=""Opt|,=ion 1""|""Opt||,ion 2"",text_attribute=""""" diff --git a/dev/tests/integration/testsuite/Magento/ImportExport/Block/Adminhtml/Export/Edit/FormTest.php b/dev/tests/integration/testsuite/Magento/ImportExport/Block/Adminhtml/Export/Edit/FormTest.php index 52fbe5ed7b6afbbd85f65aa864c453e46810facb..a463a426dd647cde6d352be51f63bd82a59db5d1 100644 --- a/dev/tests/integration/testsuite/Magento/ImportExport/Block/Adminhtml/Export/Edit/FormTest.php +++ b/dev/tests/integration/testsuite/Magento/ImportExport/Block/Adminhtml/Export/Edit/FormTest.php @@ -30,7 +30,11 @@ class FormTest extends \PHPUnit_Framework_TestCase * * @var array */ - protected $_expectedFields = ['base_fieldset' => ['entity' => 'entity', 'file_format' => 'file_format']]; + protected $_expectedFields = ['base_fieldset' => [ + 'entity' => 'entity', + 'file_format' => 'file_format', + 'fields_enclosure' => 'fields_enclosure' + ]]; protected function setUp() { diff --git a/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/ExportTest.php b/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/ExportTest.php index 9decf617d50ae1ca0b8c895b3d45e5c255d846cd..de9379d1494d3925590f228ea52c69934fd9bd8b 100644 --- a/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/ExportTest.php +++ b/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/ExportTest.php @@ -84,6 +84,6 @@ class ExportTest extends \Magento\TestFramework\TestCase\AbstractBackendControll $body = $this->getResponse()->getBody(); $this->assertSelectCount('fieldset#base_fieldset', 1, $body); - $this->assertSelectCount('fieldset#base_fieldset div.field', 2, $body); + $this->assertSelectCount('fieldset#base_fieldset div.field', 3, $body); } } diff --git a/lib/internal/Magento/Framework/App/Cache/Type/Dummy.php b/lib/internal/Magento/Framework/App/Cache/Type/Dummy.php new file mode 100644 index 0000000000000000000000000000000000000000..ea6a3c3e92e7e615740990170d218608aff99836 --- /dev/null +++ b/lib/internal/Magento/Framework/App/Cache/Type/Dummy.php @@ -0,0 +1,67 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Framework\App\Cache\Type; + +use Magento\Framework\App\CacheInterface; + +/** + * Dummy cache adapter + * + * for cases when need to disable interaction with cache + * but no specific cache type is used + */ +class Dummy implements CacheInterface +{ + /** + * Required by CacheInterface + * + * @return null + */ + public function getFrontend() + { + return null; + } + + /** + * Pretend to load data from cache by id + * + * {@inheritdoc} + */ + public function load($identifier) + { + return null; + } + + /** + * Pretend to save data + * + * {@inheritdoc} + */ + public function save($data, $identifier, $tags = [], $lifeTime = null) + { + return false; + } + + /** + * Pretend to remove cached data by identifier + * + * {@inheritdoc} + */ + public function remove($identifier) + { + return true; + } + + /** + * Pretend to clean cached data by specific tag + * + * {@inheritdoc} + */ + public function clean($tags = []) + { + return true; + } +} diff --git a/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php b/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php index 30f398b4f6000bdd2824ed19b8c625a6e4e21566..187c043945d059992d6dc59a8713fc413b1a9752 100644 --- a/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php +++ b/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php @@ -5,7 +5,8 @@ */ namespace Magento\Framework\App\Test\Unit\View\Deployment; -use \Magento\Framework\App\View\Deployment\Version; +use Magento\Framework\App\View\Deployment\Version; +use Magento\Framework\Exception\FileSystemException; /** * Class VersionTest @@ -18,29 +19,39 @@ class VersionTest extends \PHPUnit_Framework_TestCase private $object; /** - * @var \PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\App\State|\PHPUnit_Framework_MockObject_MockObject */ - private $appState; + private $appStateMock; /** - * @var \PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\App\View\Deployment\Version\StorageInterface|\PHPUnit_Framework_MockObject_MockObject */ - private $versionStorage; + private $versionStorageMock; + + /** + * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject + */ + private $loggerMock; protected function setUp() { - $this->appState = $this->getMock(\Magento\Framework\App\State::class, [], [], '', false); - $this->versionStorage = $this->getMock(\Magento\Framework\App\View\Deployment\Version\StorageInterface::class); - $this->object = new Version($this->appState, $this->versionStorage); + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + $this->appStateMock = $this->getMock(\Magento\Framework\App\State::class, [], [], '', false); + $this->versionStorageMock = $this->getMock( + \Magento\Framework\App\View\Deployment\Version\StorageInterface::class + ); + $this->loggerMock = $this->getMock(\Psr\Log\LoggerInterface::class); + $this->object = new Version($this->appStateMock, $this->versionStorageMock); + $objectManager->setBackwardCompatibleProperty($this->object, 'logger', $this->loggerMock); } public function testGetValueDeveloperMode() { - $this->appState + $this->appStateMock ->expects($this->once()) ->method('getMode') ->will($this->returnValue(\Magento\Framework\App\State::MODE_DEVELOPER)); - $this->versionStorage->expects($this->never())->method($this->anything()); + $this->versionStorageMock->expects($this->never())->method($this->anything()); $this->assertInternalType('integer', $this->object->getValue()); $this->object->getValue(); // Ensure computation occurs only once and result is cached in memory } @@ -51,12 +62,12 @@ class VersionTest extends \PHPUnit_Framework_TestCase */ public function testGetValueFromStorage($appMode) { - $this->appState + $this->appStateMock ->expects($this->once()) ->method('getMode') ->will($this->returnValue($appMode)); - $this->versionStorage->expects($this->once())->method('load')->will($this->returnValue('123')); - $this->versionStorage->expects($this->never())->method('save'); + $this->versionStorageMock->expects($this->once())->method('load')->will($this->returnValue('123')); + $this->versionStorageMock->expects($this->never())->method('save'); $this->assertEquals('123', $this->object->getValue()); $this->object->getValue(); // Ensure caching in memory } @@ -70,20 +81,106 @@ class VersionTest extends \PHPUnit_Framework_TestCase ]; } - public function testGetValueDefaultModeSaving() - { + /** + * $param bool $isUnexpectedValueExceptionThrown + * $param bool $isFileSystemExceptionThrown + * @dataProvider getValueDefaultModeDataProvider + */ + public function testGetValueDefaultMode( + $isUnexpectedValueExceptionThrown, + $isFileSystemExceptionThrown = null + ) { $versionType = 'integer'; - $this->appState + $this->appStateMock ->expects($this->once()) ->method('getMode') - ->will($this->returnValue(\Magento\Framework\App\State::MODE_DEFAULT)); - $storageException = new \UnexpectedValueException('Does not exist in the storage'); - $this->versionStorage - ->expects($this->once()) - ->method('load') - ->will($this->throwException($storageException)); - $this->versionStorage->expects($this->once())->method('save')->with($this->isType($versionType)); + ->willReturn(\Magento\Framework\App\State::MODE_DEFAULT); + if ($isUnexpectedValueExceptionThrown) { + $storageException = new \UnexpectedValueException('Does not exist in the storage'); + $this->versionStorageMock + ->expects($this->once()) + ->method('load') + ->will($this->throwException($storageException)); + $this->versionStorageMock->expects($this->once()) + ->method('save') + ->with($this->isType($versionType)); + if ($isFileSystemExceptionThrown) { + $fileSystemException = new FileSystemException( + new \Magento\Framework\Phrase('Can not load static content version') + ); + $this->versionStorageMock + ->expects($this->once()) + ->method('save') + ->will($this->throwException($fileSystemException)); + $this->loggerMock->expects($this->once()) + ->method('critical') + ->with('Can not save static content version.'); + } else { + $this->loggerMock->expects($this->never()) + ->method('critical'); + } + } else { + $this->versionStorageMock + ->expects($this->once()) + ->method('load') + ->willReturn(1475779229); + $this->loggerMock->expects($this->never()) + ->method('critical'); + } $this->assertInternalType($versionType, $this->object->getValue()); - $this->object->getValue(); // Ensure caching in memory + $this->object->getValue(); + } + + /** + * @return array + */ + public function getValueDefaultModeDataProvider() + { + return [ + [false], + [true, false], + [true, true] + ]; + } + + /** + * @param bool $isUnexpectedValueExceptionThrown + * @dataProvider getValueProductionModeDataProvider + */ + public function testGetValueProductionMode( + $isUnexpectedValueExceptionThrown + ) { + $this->appStateMock + ->expects($this->once()) + ->method('getMode') + ->willReturn(\Magento\Framework\App\State::MODE_PRODUCTION); + if ($isUnexpectedValueExceptionThrown) { + $storageException = new \UnexpectedValueException('Does not exist in the storage'); + $this->versionStorageMock + ->expects($this->once()) + ->method('load') + ->will($this->throwException($storageException)); + $this->loggerMock->expects($this->once()) + ->method('critical') + ->with('Can not load static content version.'); + } else { + $this->versionStorageMock + ->expects($this->once()) + ->method('load') + ->willReturn(1475779229); + } + $this->assertInternalType('integer', $this->object->getValue()); + $this->object->getValue(); + } + + /** + * @return array + */ + public function getValueProductionModeDataProvider() + { + return [ + [false], + [true], + ]; } } diff --git a/lib/internal/Magento/Framework/App/View/Deployment/Version.php b/lib/internal/Magento/Framework/App/View/Deployment/Version.php index 8e927e47921a0c428493de2bb6e13b17407483ad..7f6dc7fa9285ccc3987d84091bc9edb76d09f794 100644 --- a/lib/internal/Magento/Framework/App/View/Deployment/Version.php +++ b/lib/internal/Magento/Framework/App/View/Deployment/Version.php @@ -6,6 +6,9 @@ namespace Magento\Framework\App\View\Deployment; +use Psr\Log\LoggerInterface; +use Magento\Framework\Exception\FileSystemException; + /** * Deployment version of static files */ @@ -26,6 +29,11 @@ class Version */ private $cachedValue; + /** + * @var LoggerInterface + */ + private $logger; + /** * @param \Magento\Framework\App\State $appState * @param Version\StorageInterface $versionStorage @@ -59,23 +67,49 @@ class Version */ protected function readValue($appMode) { - switch ($appMode) { - case \Magento\Framework\App\State::MODE_DEFAULT: - try { - $result = $this->versionStorage->load(); - } catch (\UnexpectedValueException $e) { - $result = (new \DateTime())->getTimestamp(); - $this->versionStorage->save($result); + if ($appMode == \Magento\Framework\App\State::MODE_DEVELOPER) { + $result = $this->generateVersion(); + } else { + try { + $result = $this->versionStorage->load(); + } catch (\UnexpectedValueException $e) { + $result = $this->generateVersion(); + if ($appMode == \Magento\Framework\App\State::MODE_DEFAULT) { + try { + $this->versionStorage->save($result); + } catch (FileSystemException $e) { + $this->getLogger()->critical('Can not save static content version.'); + } + } else { + $this->getLogger()->critical('Can not load static content version.'); } - break; + } + } + return $result; + } - case \Magento\Framework\App\State::MODE_DEVELOPER: - $result = (new \DateTime())->getTimestamp(); - break; + /** + * Generate version of static content + * + * @return int + */ + private function generateVersion() + { + return time(); + } - default: - $result = $this->versionStorage->load(); + /** + * Get logger + * + * @return LoggerInterface + * @deprecated + */ + private function getLogger() + { + if ($this->logger == null) { + $this->logger = \Magento\Framework\App\ObjectManager::getInstance() + ->get(LoggerInterface::class); } - return $result; + return $this->logger; } } diff --git a/lib/internal/Magento/Framework/View/Config.php b/lib/internal/Magento/Framework/View/Config.php index 917f632323ea0cda55ab95b55cd663292b5b31d6..b72fe87c4acc4b7155437bc8b478571caa4e72b2 100644 --- a/lib/internal/Magento/Framework/View/Config.php +++ b/lib/internal/Magento/Framework/View/Config.php @@ -62,7 +62,7 @@ class Config implements \Magento\Framework\View\ConfigInterface if (isset($params['themeModel'])) { /** @var \Magento\Framework\View\Design\ThemeInterface $currentTheme */ $currentTheme = $params['themeModel']; - $key = $currentTheme->getCode(); + $key = $currentTheme->getFullPath(); if (isset($this->viewConfigs[$key])) { return $this->viewConfigs[$key]; } diff --git a/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php b/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php index 4295b5d3e24e73810f66e1a16e83f1d0cb6e84f1..2a09783c710e4e4c9334079a67025b452d673974 100644 --- a/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php +++ b/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php @@ -40,17 +40,17 @@ class ConfigTest extends \PHPUnit_Framework_TestCase public function testGetViewConfig() { - $themeCode = 2; + $themeCode = 'area/theme'; $themeMock = $this->getMock( \Magento\Theme\Model\Theme::class, - ['getCode'], + ['getFullPath'], [], '', false ); $themeMock->expects($this->atLeastOnce()) - ->method('getCode') + ->method('getFullPath') ->will($this->returnValue($themeCode)); $params = [ 'themeModel' => $themeMock,