Skip to content

Commit

Permalink
MSI-2708: The configurable product is displayed in Storefront despite…
Browse files Browse the repository at this point in the history
… that all the quantity is reserved. Two error messages appear if try to add this product to cart.
  • Loading branch information
nmalevanec committed Nov 27, 2019
1 parent 9466c0b commit 704d92b
Show file tree
Hide file tree
Showing 11 changed files with 439 additions and 3 deletions.
4 changes: 2 additions & 2 deletions InventoryAdminUi/Test/Mftf/Data/MsiCustomerData.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
<data key="lastname">Doe</data>
<data key="fullname">John Doe</data>
<data key="password">pwdTest123!</data>
<data key="store_id">0</data>
<data key="website_id">0</data>
<data key="store_id">1</data>
<data key="website_id">1</data>
<requiredEntity type="address">US_Address_TX</requiredEntity>
</entity>
</entities>
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,15 @@
<group value="msi"/>
<group value="multi_mode"/>
</annotations>

<before>
<createData entity="BasicMsiStock1" stepKey="createStock1"/>
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin1"/>
</before>
<after>
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite">
<argument name="websiteName" value="{{BasicMsiWebsite1.name}}"/>
</actionGroup>
<actionGroup ref="logout" stepKey="logoutOfAdmin1"/>
</after>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,18 @@
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin1"/>
</before>
<after>
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite">
<argument name="websiteName" value="{{BasicMsiWebsite1.name}}"/>
</actionGroup>
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite2">
<argument name="websiteName" value="{{BasicMsiWebsite2.name}}"/>
</actionGroup>
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite3">
<argument name="websiteName" value="{{BasicMsiWebsite3.name}}"/>
</actionGroup>
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite4">
<argument name="websiteName" value="{{BasicMsiWebsite4.name}}"/>
</actionGroup>
<actionGroup ref="logout" stepKey="logoutOfAdmin1"/>
</after>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
<waitForPageLoad time="30" stepKey="waitForPageLoad1"/>
</before>
<after>
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite">
<argument name="websiteName" value="{{BasicMsiWebsite1.name}}"/>
</actionGroup>
<actionGroup ref="logout" stepKey="logoutOfAdmin1"/>
</after>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin1"/>
</before>
<after>
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite">
<argument name="websiteName" value="{{BasicMsiWebsite1.name}}"/>
</actionGroup>
<actionGroup ref="logout" stepKey="logoutOfAdmin1"/>
</after>

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->

<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
<test name="StorefrontCreateOrderAllQuantityConfigurableProductCustomStock">
<annotations>
<stories value="Configurable Product Custom Stock."/>
<title value="Place order with all quantity with configurable product on custom stock."/>
<description value="Verify, configurable product will change status after order placement with all it's quantity on custom stock."/>
<severity value="MAJOR"/>
<group value="msi"/>
<group value="multi_mode"/>
</annotations>

<before>
<!--Create test data.-->
<createData entity="SimpleSubCategory" stepKey="category"/>
<createData entity="ApiConfigurableProduct" stepKey="configurableProduct">
<requiredEntity createDataKey="category"/>
</createData>
<createData entity="productAttributeWithTwoOptions" stepKey="configurableProductAttribute"/>
<createData entity="productAttributeOption1" stepKey="configurableProductAttributeOption">
<requiredEntity createDataKey="configurableProductAttribute"/>
</createData>
<createData entity="AddToDefaultSet" stepKey="createConfigAddToAttributeSet">
<requiredEntity createDataKey="configurableProductAttribute"/>
</createData>
<getData entity="ProductAttributeOptionGetter" index="1" stepKey="getConfigAttributeOption">
<requiredEntity createDataKey="configurableProductAttribute"/>
</getData>
<createData entity="ApiSimpleOne" stepKey="configurableChildProduct">
<requiredEntity createDataKey="configurableProductAttribute"/>
<requiredEntity createDataKey="getConfigAttributeOption"/>
</createData>
<createData entity="ConfigurableProductOneOption" stepKey="configurableProductOption">
<requiredEntity createDataKey="configurableProduct"/>
<requiredEntity createDataKey="configurableProductAttribute"/>
<requiredEntity createDataKey="getConfigAttributeOption"/>
</createData>
<createData entity="ConfigurableProductAddChild" stepKey="configurableProductAddChild">
<requiredEntity createDataKey="configurableProduct"/>
<requiredEntity createDataKey="configurableChildProduct"/>
</createData>
<createData entity="Simple_US_Customer" stepKey="customer"/>
<createData entity="_minimalSource" stepKey="source"/>
<createData entity="BasicMsiStockWithMainWebsite1" stepKey="stock"/>
<createData entity="SourceStockLinked1" stepKey="sourceStockLink">
<requiredEntity createDataKey="stock"/>
<requiredEntity createDataKey="source"/>
</createData>
<actionGroup ref="LoginAsAdmin" stepKey="loginToAdminArea"/>
<!--Assign additional source to configurable product.-->
<amOnPage url="{{AdminProductEditPage.url($configurableChildProduct.id$)}}" stepKey="openProductEditPage"/>
<actionGroup ref="UnassignSourceFromProductActionGroup" stepKey="unassignDefaultSourceFromProduct">
<argument name="sourceCode" value="{{_defaultSource.name}}"/>
</actionGroup>
<actionGroup ref="AdminAssignSourceToProductAndSetSourceQuantityActionGroup" stepKey="assignSourceToProduct">
<argument name="sourceCode" value="$source.source[source_code]$"/>
</actionGroup>
<actionGroup ref="saveProductForm" stepKey="saveProduct"/>
</before>
<after>
<deleteData createDataKey="configurableProduct" stepKey="deleteConfigurableProduct"/>
<deleteData createDataKey="configurableChildProduct" stepKey="deleteConfigurableProductVariation1"/>
<deleteData createDataKey="configurableProductAttribute" stepKey="deleteConfigurableProductAttribute"/>
<!--Assign Default Stock to Main Website.-->
<actionGroup ref="AssignWebsiteToStockActionGroup" stepKey="assignMainWebsiteToDefaultStock">
<argument name="stockName" value="{{_defaultStock.name}}"/>
<argument name="websiteName" value="{{_defaultWebsite.name}}"/>
</actionGroup>
<deleteData createDataKey="stock" stepKey="deleteStock"/>
<!--Disable source.-->
<actionGroup ref="DisableAllSourcesActionGroup" stepKey="disableAllSources"/>
<actionGroup ref="logout" stepKey="logoutFromAdminArea"/>
</after>

<!--Add configurable product to cart.-->
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginAsCustomer">
<argument name="Customer" value="$customer$" />
</actionGroup>
<actionGroup ref="StorefrontAddConfigurableProductToTheCartActionGroup" stepKey="addConfigurableProductToCart">
<argument name="urlKey" value="$configurableProduct.custom_attributes[url_key]$" />
<argument name="productAttribute" value="$configurableProductAttribute.default_value$"/>
<argument name="productOption" value="$getConfigAttributeOption.value$"/>
<argument name="qty" value="{{defaultProductQty.value}}"/>
</actionGroup>
<!--Place order.-->
<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="navigateToCheckoutPage"/>
<click selector="{{CheckoutShippingMethodsSection.next}}" stepKey="clickOnNextButton"/>
<actionGroup ref="ClickPlaceOrderActionGroup" stepKey="clickOnPlaceOrder"/>
<magentoCLI command="cache:flush" stepKey="flushCache"/>
<!--Verify, configurable product has 'out of stock' status.-->
<amOnPage url="{{StorefrontProductPage.url($configurableProduct.custom_attributes[url_key]$)}}" stepKey="navigateToConfigurablePDP"/>
<see selector="{{StorefrontProductInfoMainSection.productStockStatus}}" userInput="{{SourceStatusOutOfStock.value}}" stepKey="verifyProductStatus"/>
</test>
</tests>
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->

<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
<test name="StorefrontLoggedInCustomerCreateOrderAllOptionQuantityConfigurableProductCustomStock">
<annotations>
<stories value="Configurable Product Custom Stock."/>
<title value="Place order with all option quantity with configurable product on custom stock."/>
<description value="Verify, configurable product option not visible after order placement with all it's quantity on custom stock."/>
<severity value="MAJOR"/>
<group value="msi"/>
<group value="multi_mode"/>
</annotations>

<before>
<!--Create test data.-->
<createData entity="_defaultCategory" stepKey="category"/>
<createData entity="BaseConfigurableProduct" stepKey="configurableProduct">
<requiredEntity createDataKey="category"/>
</createData>
<createData entity="productAttributeWithTwoOptions" stepKey="configurableProductAttribute"/>
<createData entity="productAttributeOption1" stepKey="configurableProductAttributeOption1">
<requiredEntity createDataKey="configurableProductAttribute"/>
</createData>
<createData entity="productAttributeOption2" stepKey="configurableProductAttributeOption2">
<requiredEntity createDataKey="configurableProductAttribute"/>
</createData>
<createData entity="AddToDefaultSet" stepKey="createConfigAddToAttributeSet">
<requiredEntity createDataKey="configurableProductAttribute"/>
</createData>
<getData entity="ProductAttributeOptionGetter" index="1" stepKey="getConfigAttributeOption1">
<requiredEntity createDataKey="configurableProductAttribute"/>
</getData>
<getData entity="ProductAttributeOptionGetter" index="2" stepKey="getConfigAttributeOption2">
<requiredEntity createDataKey="configurableProductAttribute"/>
</getData>
<createData entity="ConfigurableProductTwoOptions" stepKey="configurableProductOption">
<requiredEntity createDataKey="configurableProduct"/>
<requiredEntity createDataKey="configurableProductAttribute"/>
<requiredEntity createDataKey="getConfigAttributeOption1"/>
<requiredEntity createDataKey="getConfigAttributeOption2"/>
</createData>
<createData entity="ApiSimpleOne" stepKey="configurableChildProduct1">
<requiredEntity createDataKey="configurableProductAttribute"/>
<requiredEntity createDataKey="getConfigAttributeOption1"/>
</createData>
<createData entity="ApiSimpleOne" stepKey="configurableChildProduct2">
<requiredEntity createDataKey="configurableProductAttribute"/>
<requiredEntity createDataKey="getConfigAttributeOption2"/>
</createData>
<createData entity="ConfigurableProductAddChild" stepKey="configurableProductAddChild1">
<requiredEntity createDataKey="configurableProduct"/>
<requiredEntity createDataKey="configurableChildProduct1"/>
</createData>
<createData entity="ConfigurableProductAddChild" stepKey="createConfigProductAddChild2">
<requiredEntity createDataKey="configurableProduct"/>
<requiredEntity createDataKey="configurableChildProduct2"/>
</createData>
<createData entity="Simple_US_Customer" stepKey="customer"/>
<createData entity="_minimalSource" stepKey="source"/>
<createData entity="BasicMsiStockWithMainWebsite1" stepKey="stock"/>
<createData entity="SourceStockLinked1" stepKey="sourceStockLink">
<requiredEntity createDataKey="stock"/>
<requiredEntity createDataKey="source"/>
</createData>
<actionGroup ref="LoginAsAdmin" stepKey="loginToAdminArea"/>
<!--Assign additional source to configurable product.-->
<amOnPage url="{{AdminProductEditPage.url($$configurableChildProduct1.id$$)}}" stepKey="openProduct1EditPage"/>
<actionGroup ref="UnassignSourceFromProductActionGroup" stepKey="unassignDefaultSourceFromProduct1">
<argument name="sourceCode" value="{{_defaultSource.name}}"/>
</actionGroup>
<actionGroup ref="AdminAssignSourceToProductAndSetSourceQuantityActionGroup" stepKey="assignSourceToProduct1">
<argument name="sourceCode" value="$$source.source[source_code]$$"/>
</actionGroup>
<actionGroup ref="saveProductForm" stepKey="saveProduct1"/>
<amOnPage url="{{AdminProductEditPage.url($$configurableChildProduct2.id$$)}}" stepKey="openProduct2EditPage"/>
<actionGroup ref="UnassignSourceFromProductActionGroup" stepKey="unassignDefaultSourceFromProduct2">
<argument name="sourceCode" value="{{_defaultSource.name}}"/>
</actionGroup>
<actionGroup ref="AdminAssignSourceToProductAndSetSourceQuantityActionGroup" stepKey="assignSourceToProduct2">
<argument name="sourceCode" value="$$source.source[source_code]$$"/>
</actionGroup>
<actionGroup ref="saveProductForm" stepKey="saveProduct2"/>
</before>
<after>
<deleteData createDataKey="configurableProduct" stepKey="deleteConfigurableProduct"/>
<deleteData createDataKey="configurableChildProduct1" stepKey="deleteConfigurableProductVariation1"/>
<deleteData createDataKey="configurableChildProduct2" stepKey="deleteConfigurableProductVariation2"/>
<deleteData createDataKey="configurableProductAttribute" stepKey="deleteConfigurableProductAttribute"/>
<!--Assign Default Stock to Main Website.-->
<actionGroup ref="AssignWebsiteToStockActionGroup" stepKey="assignMainWebsiteToDefaultStock">
<argument name="stockName" value="{{_defaultStock.name}}"/>
<argument name="websiteName" value="{{_defaultWebsite.name}}"/>
</actionGroup>
<deleteData createDataKey="stock" stepKey="deleteStock"/>
<!--Disable source.-->
<actionGroup ref="DisableAllSourcesActionGroup" stepKey="disableAllSources"/>
<actionGroup ref="logout" stepKey="logoutFromAdminArea"/>
</after>

<!--Add configurable product to cart.-->
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginAsCustomer">
<argument name="Customer" value="$$customer$$" />
</actionGroup>
<actionGroup ref="StorefrontAddConfigurableProductToTheCartActionGroup" stepKey="addConfigurableProductToCart">
<argument name="urlKey" value="$$configurableProduct.custom_attributes[url_key]$$" />
<argument name="productAttribute" value="$$configurableProductAttribute.default_frontend_label$$"/>
<argument name="productOption" value="$$getConfigAttributeOption1.value$$"/>
<argument name="qty" value="{{defaultProductQty.value}}"/>
</actionGroup>
<!--Place order.-->
<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="navigateToCheckoutPage"/>
<click selector="{{CheckoutShippingMethodsSection.next}}" stepKey="clickOnNextButton"/>
<actionGroup ref="ClickPlaceOrderActionGroup" stepKey="clickOnPlaceOrder"/>
<magentoCLI command="cache:flush" stepKey="flushCache"/>
<!-- Assert out of stock option is absent on product page -->
<amOnPage url="{{StorefrontProductPage.url($$configurableProduct.custom_attributes[url_key]$$)}}" stepKey="navigateToConfigurablePDP"/>
<waitForPageLoad stepKey="waitForConfigurablePDP"/>
<dontSee userInput="$$getConfigAttributeOption1.label$$" selector="{{StorefrontProductInfoMainSection.optionByAttributeId($$configurableProductAttribute.attribute_id$$)}}" stepKey="assertOptionNotAvailable" />
<see userInput="$$getConfigAttributeOption2.label$$" selector="{{StorefrontProductInfoMainSection.optionByAttributeId($$configurableProductAttribute.attribute_id$$)}}" stepKey="assertOptionAvailable" />
</test>
</tests>
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@
<argument name="stockName" value="{{_defaultStock.name}}"/>
<argument name="websiteName" value="{{_defaultWebsite.name}}"/>
</actionGroup>
<!--Delete created website.-->
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteWebsite" >
<argument name="websiteName" value="{{customWebsite.name}}"/>
</actionGroup>
<actionGroup ref="DisableSourceActionGroup" stepKey="disableThirdCreatedSource">
<argument name="sourceCode" value="$$customSource.source[source_code]$$"/>
</actionGroup>
Expand Down
Loading

0 comments on commit 704d92b

Please sign in to comment.