<?xml version="1.0" encoding="UTF-8" ?>
<!--
 /**
  * @copyright  Vertex. All rights reserved.  https://www.vertexinc.com/
  * @author     Mediotype                     https://www.mediotype.com/
  */
-->
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
    <!-- This action group creates a downloadable product with the stepKey "createDownloadableProduct" -->
    <actionGroup name="VertexCreateDownloadableProduct">
        <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" stepKey="addDownloadableDomain"/>
        <createData entity="VertexApiDownloadableProduct" stepKey="createDownloadableProduct">
            <field key="price">100.00</field>
        </createData>
        <createData entity="ApiDownloadableLink" stepKey="addDownloadableLink1">
            <requiredEntity createDataKey="createDownloadableProduct"/>
        </createData>
        <createData entity="ApiDownloadableLink" stepKey="addDownloadableLink2">
            <requiredEntity createDataKey="createDownloadableProduct"/>
        </createData>
    </actionGroup>
    <actionGroup name="VertexCreateTwoOptionConfigurableProduct">
        <arguments>
            <argument type="string" name="basePrice" defaultValue="50.00"/>
            <argument type="string" name="option1Price" defaultValue="100.00"/>
            <argument type="string" name="option2Price" defaultValue="100.00"/>
        </arguments>
        <createData entity="_defaultCategory" stepKey="createCategory"/>
        <createData entity="ApiConfigurableProduct" stepKey="Product">
            <requiredEntity createDataKey="createCategory" actionGroup=""/>
            <field key="price">{{basePrice}}</field>
        </createData>
        <createData entity="productAttributeWithTwoOptions" stepKey="ProductAttribute">
            <field key="frontend_input">select</field>
        </createData>
        <createData entity="productAttributeOption1" stepKey="Option1">
            <requiredEntity createDataKey="ProductAttribute"/>
        </createData>
        <createData entity="productAttributeOption2" stepKey="Option2">
            <requiredEntity createDataKey="ProductAttribute"/>
        </createData>
        <createData entity="AddToDefaultSet" stepKey="createConfigAddToAttributeSet">
            <requiredEntity createDataKey="ProductAttribute"/>
        </createData>
        <getData entity="ProductAttributeOptionGetter" stepKey="getConfigAttributeOption1" index="1">
            <requiredEntity createDataKey="ProductAttribute"/>
        </getData>
        <getData entity="ProductAttributeOptionGetter" stepKey="getConfigAttributeOption2" index="2">
            <requiredEntity createDataKey="ProductAttribute"/>
        </getData>
        <createData entity="ApiSimpleOne" stepKey="createConfigChildProduct1">
            <field key="price">{{option1Price}}</field>
            <requiredEntity createDataKey="ProductAttribute"/>
            <requiredEntity createDataKey="getConfigAttributeOption1"/>
        </createData>
        <createData entity="ApiSimpleTwo" stepKey="createConfigChildProduct2">
            <field key="price">{{option2Price}}</field>
            <requiredEntity createDataKey="ProductAttribute"/>
            <requiredEntity createDataKey="getConfigAttributeOption2"/>
        </createData>
        <createData entity="ConfigurableProductTwoOptions" stepKey="createConfigProductOption">
            <requiredEntity createDataKey="Product"/>
            <requiredEntity createDataKey="ProductAttribute"/>
            <requiredEntity createDataKey="getConfigAttributeOption1"/>
            <requiredEntity createDataKey="getConfigAttributeOption2"/>
        </createData>
        <createData entity="ConfigurableProductAddChild" stepKey="createConfigProductAddChild1">
            <requiredEntity createDataKey="Product"/>
            <requiredEntity createDataKey="createConfigChildProduct1"/>
        </createData>
        <createData entity="ConfigurableProductAddChild" stepKey="createConfigProductAddChild2">
            <requiredEntity createDataKey="Product"/>
            <requiredEntity createDataKey="createConfigChildProduct2"/>
        </createData>
    </actionGroup>
    <actionGroup name="VertexAddSingleOptionConfigurableProductToCart">
        <arguments>
            <argument name="product"/>
            <argument name="optionConfig"/>
            <argument name="attributeConfig"/>
        </arguments>
        <amOnPage url="/{{product.custom_attributes[url_key]}}.html" stepKey="navigateProductPage2"/>
        <selectOption userInput="{{optionConfig.option[store_labels][1][label]}}" selector="{{StorefrontProductInfoMainSection.optionByAttributeId(attributeConfig.attribute_id)}}" stepKey="cartConfigProductFillOption2"/>
        <click selector="{{StorefrontProductPageSection.addToCartBtn}}" stepKey="addToCart2"/>
        <waitForElementVisible selector="{{StorefrontProductPageSection.successMsg}}" time="30" stepKey="waitForProductAdded2"/>
        <see selector="{{StorefrontCategoryMainSection.SuccessMsg}}" userInput="You added {{product.name}} to your shopping cart." stepKey="seeAddedToCartMessage2"/>
    </actionGroup>
    <actionGroup name="VertexCreateBundleProduct">
        <!-- Replicates the Sprite Yoga Companion Kit -->
        <arguments>
            <argument type="string" name="basePrice" defaultValue="61.00"/>
            <argument type="string" name="ballPrice" defaultValue="23.00"/>
            <argument type="string" name="brickPrice" defaultValue="5.00"/>
            <argument type="string" name="strapPrice" defaultValue="14.00"/>
            <argument type="string" name="rollerPrice" defaultValue="19.00"/>
        </arguments>

        <createData entity="_defaultCategory" stepKey="createCategory"/>

        <createData entity="_defaultProduct" stepKey="createBall">
            <field key="price">{{ballPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createBrick">
            <field key="price">{{brickPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createStrap">
            <field key="price">{{strapPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createRoller">
            <field key="price">{{rollerPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="ApiBundleProduct" stepKey="createBundle">
            <requiredEntity createDataKey="createCategory"/>
        </createData>

        <createData entity="RadioButtonsOption" stepKey="createSelection1">
            <requiredEntity createDataKey="createBundle"/>
        </createData>
        <createData entity="RadioButtonsOption" stepKey="createSelection2">
            <requiredEntity createDataKey="createBundle"/>
        </createData>
        <createData entity="RadioButtonsOption" stepKey="createSelection3">
            <requiredEntity createDataKey="createBundle"/>
        </createData>
        <createData entity="RadioButtonsOption" stepKey="createSelection4">
            <requiredEntity createDataKey="createBundle"/>
        </createData>

        <createData entity="ApiBundleLink" stepKey="linkSelection1Option1">
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createSelection1"/>
            <requiredEntity createDataKey="createBall"/>
        </createData>

        <createData entity="ApiBundleLink" stepKey="linkSelection2Option1">
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createSelection2"/>
            <requiredEntity createDataKey="createBrick"/>
        </createData>

        <createData entity="ApiBundleLink" stepKey="linkSelection3Option1">
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createSelection3"/>
            <requiredEntity createDataKey="createStrap"/>
        </createData>

        <createData entity="ApiBundleLink" stepKey="linkSelection4Option1">
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createSelection4"/>
            <requiredEntity createDataKey="createRoller"/>
        </createData>

        <magentoCLI command="indexer:reindex" stepKey="reindex"/>
    </actionGroup>
    <actionGroup name="VertexCreateBundleProductWithDropdownOptions">
        <!-- Replicates the Sprite Yoga Companion Kit -->
        <arguments>
            <argument type="string" name="basePrice" defaultValue="61.00"/>
            <argument type="string" name="ballPrice" defaultValue="23.00"/>
            <argument type="string" name="brickPrice" defaultValue="5.00"/>
            <argument type="string" name="strapPrice" defaultValue="14.00"/>
            <argument type="string" name="rollerPrice" defaultValue="19.00"/>
        </arguments>

        <createData entity="_defaultCategory" stepKey="createCategory"/>

        <createData entity="_defaultProduct" stepKey="createBall">
            <field key="price">{{ballPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createBrick">
            <field key="price">{{brickPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createStrap">
            <field key="price">{{strapPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createRoller">
            <field key="price">{{rollerPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="ApiBundleProduct" stepKey="createBundle">
            <requiredEntity createDataKey="createCategory"/>
        </createData>

        <createData entity="DropDownBundleOption" stepKey="createDropdown1">
            <field key="title">bundle-option</field>
            <requiredEntity createDataKey="createBundle"/>
        </createData>

        <createData entity="ApiBundleLink" stepKey="linkSelection1Option1">
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createDropdown1"/>
            <requiredEntity createDataKey="createBall"/>
        </createData>
        <createData entity="ApiBundleLink" stepKey="linkSelection1Option2">
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createDropdown1"/>
            <requiredEntity createDataKey="createBrick"/>
        </createData>
        <createData entity="ApiBundleLink" stepKey="linkSelection1Option3">
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createDropdown1"/>
            <requiredEntity createDataKey="createStrap"/>
        </createData>

        <createData entity="ApiBundleLink" stepKey="linkSelection1Option4">
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createDropdown1"/>
            <requiredEntity createDataKey="createRoller"/>
        </createData>

        <magentoCLI command="indexer:reindex" arguments="cataloginventory_stock" stepKey="reindex"/>
    </actionGroup>
    <actionGroup name="VertexCreateFixedBundleProductWithDropdownOptions">
        <!-- Replicates the Sprite Yoga Companion Kit -->
        <arguments>
            <argument type="string" name="basePrice" defaultValue="61.00"/>
            <argument type="string" name="ballPrice" defaultValue="23.00"/>
            <argument type="string" name="brickPrice" defaultValue="5.00"/>
            <argument type="string" name="strapPrice" defaultValue="14.00"/>
            <argument type="string" name="rollerPrice" defaultValue="19.00"/>
        </arguments>

        <createData entity="_defaultCategory" stepKey="createCategory"/>

        <createData entity="_defaultProduct" stepKey="createBall">
            <field key="price">{{ballPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createBrick">
            <field key="price">{{brickPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createStrap">
            <field key="price">{{strapPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createRoller">
            <field key="price">{{rollerPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="VertexApiFixedBundleProduct" stepKey="createBundle">
            <field key="price">{{basePrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>

        <createData entity="DropDownBundleOption" stepKey="createDropdown1">
            <field key="title">bundle-option</field>
            <requiredEntity createDataKey="createBundle"/>
        </createData>

        <createData entity="ApiBundleLink" stepKey="linkSelection1Option1">
            <field key="price_type">0</field>
            <field key="price">{{ballPrice}}</field>
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createDropdown1"/>
            <requiredEntity createDataKey="createBall"/>
        </createData>
        <createData entity="ApiBundleLink" stepKey="linkSelection1Option2">
            <field key="price_type">0</field>
            <field key="price">{{brickPrice}}</field>
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createDropdown1"/>
            <requiredEntity createDataKey="createBrick"/>
        </createData>
        <createData entity="ApiBundleLink" stepKey="linkSelection1Option3">
            <field key="price_type">0</field>
            <field key="price">{{strapPrice}}</field>
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createDropdown1"/>
            <requiredEntity createDataKey="createStrap"/>
        </createData>

        <createData entity="ApiBundleLink" stepKey="linkSelection1Option4">
            <field key="price_type">0</field>
            <field key="price">{{rollerPrice}}</field>
            <requiredEntity createDataKey="createBundle"/>
            <requiredEntity createDataKey="createDropdown1"/>
            <requiredEntity createDataKey="createRoller"/>
        </createData>

        <magentoCLI command="indexer:reindex" arguments="cataloginventory_stock" stepKey="reindex"/>
    </actionGroup>
    <actionGroup name="VertexAddBundleProductToCart">
        <arguments>
            <argument name="product"/>
        </arguments>
        <amOnPage url="/{{product.custom_attributes[url_key]}}.html" stepKey="navigateProductPage" before="clickCustomize"/>
        <click selector="{{StorefrontBundledSection.addToCart}}" stepKey="clickCustomize"/>
        <waitForPageLoad stepKey="waitForBundleOpen"/>
        <click selector="{{StorefrontBundledSection.addToCartConfigured}}" stepKey="addToCartProduct"/>
        <waitForAjaxLoad stepKey="waitForLoad"/>
    </actionGroup>
    <actionGroup name="VertexAddBundleProductWithDropdownOptionsToCart">
        <arguments>
            <argument name="product"/>
            <argument name="optionProduct"/>
        </arguments>

        <!-- Navigate to product page -->
        <amOnPage url="{{product.sku}}.html" stepKey="goToStorefront"/>
        <waitForPageLoad stepKey="waitForStorefront"/>

        <!-- Expand bundle options and add a product to cart -->
        <click selector="{{StorefrontBundledSection.addToCart}}" stepKey="clickCustomize"/>
        <waitForPageLoad stepKey="waitForBundleOpen"/>

        <selectOption selector="{{StorefrontBundledSection.dropDownOptionOneProducts('bundle-option')}}" userInput="{{optionProduct.name}} +${{optionProduct.price}}.00" stepKey="selectOption0Product0"/>
        <seeOptionIsSelected selector="{{StorefrontBundledSection.dropDownOptionOneProducts('bundle-option')}}" userInput="{{optionProduct.name}} +${{optionProduct.price}}.00" stepKey="checkOption0Product0"/>
        <fillField selector="{{StorefrontBundledSection.dropDownOptionOneQuantity('bundle-option')}}" userInput="1" stepKey="fillQuantity"/>

        <click selector="{{StorefrontBundledSection.addToCartConfigured}}" stepKey="addToCartProduct"/>
        <waitForAjaxLoad stepKey="waitForLoad"/>
    </actionGroup>
    <actionGroup name="VertexCreateGroupedProduct">
        <arguments>
            <argument type="string" name="basePrice" defaultValue="100.00"/>
            <argument type="string" name="firstPrice" defaultValue="14.00"/>
            <argument type="string" name="secondPrice" defaultValue="17.00"/>
            <argument type="string" name="thirdPrice" defaultValue="21.00"/>
        </arguments>

        <createData entity="_defaultCategory" stepKey="createCategory"/>

        <createData entity="_defaultProduct" stepKey="createFirst">
            <field key="price">{{firstPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createSecond">
            <field key="price">{{secondPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="_defaultProduct" stepKey="createThird">
            <field key="price">{{thirdPrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>
        <createData entity="ApiGroupedProduct" stepKey="createGroup">
            <field key="price">{{basePrice}}</field>
            <requiredEntity createDataKey="createCategory"/>
        </createData>

        <createData entity="OneSimpleProductLink" stepKey="firstLink">
            <requiredEntity createDataKey="createGroup"/>
            <requiredEntity createDataKey="createFirst"/>
        </createData>
        <updateData entity="OneMoreSimpleProductLink" createDataKey="firstLink" stepKey="createSecondLink">
            <requiredEntity createDataKey="createGroup"/>
            <requiredEntity createDataKey="createSecond"/>
        </updateData>
        <updateData entity="ThirdSimpleProductLink" createDataKey="firstLink" stepKey="createThirdLink">
            <requiredEntity createDataKey="createGroup"/>
            <requiredEntity createDataKey="createThird"/>
        </updateData>

        <magentoCLI stepKey="reindex" command="indexer:reindex"/>
    </actionGroup>
    <actionGroup name="VertexAddGroupedProductToCart">
        <arguments>
            <argument name="catalogProduct"/>
            <argument type="string" name="firstQty" defaultValue="0"/>
            <argument name="firstProduct"/>
            <argument type="string" name="secondQty" defaultValue="0"/>
            <argument name="secondProduct"/>
            <argument type="string" name="thirdQty" defaultValue="0"/>
            <argument name="thirdProduct"/>
        </arguments>
        <amOnPage url="/{{catalogProduct.custom_attributes[url_key]}}.html" stepKey="navigateProductPage"/>
        <fillField stepKey="fillFirstQty" selector="{{StorefrontGroupSection.childProductQty(firstProduct.name)}}" userInput="{{firstQty}}"/>
        <fillField stepKey="fillSecondQty" selector="{{StorefrontGroupSection.childProductQty(secondProduct.name)}}" userInput="{{secondQty}}"/>
        <fillField stepKey="fillThirdQty" selector="{{StorefrontGroupSection.childProductQty(thirdProduct.name)}}" userInput="{{thirdQty}}"/>
        <click selector="{{StorefrontProductActionSection.addToCart}}" stepKey="addToCart"/>
        <waitForAjaxLoad stepKey="waitForLoad"/>
    </actionGroup>
</actionGroups>
