<?xml version="1.0" encoding="UTF-8"?>
<!--
 /**
  * @copyright  Vertex. All rights reserved.  https://www.vertexinc.com/
  * @author     Mediotype                     https://www.mediotype.com/
  */
-->
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
    <test name="VertexWithFixedBundleOrderStatusProcessingInAdminCreateOrderTest">
        <annotations>
            <features value="Vertex"/>
            <group value="Vertex"/>
            <testCaseId value="VRTX-451"/>

            <stories value="As a store owner, I must have accurate taxes calculated for a fixed bundle product"/>
            <title value="Validate taxes on order for a fixed bundle product"/>
            <description value="Validate that a fixed bundle product will have correct totals and that the correct amount will be sent to Vertex"/>

            <severity value="BLOCKER"/>
        </annotations>
        <before>
            <!-- Create bundle -->
            <createData entity="_defaultCategory" stepKey="createCategory"/>
            <createData entity="_defaultProduct" stepKey="createBall">
                <field key="price">{{Vertex_Bundle_PA_Values_Ball_Qty3.price}}</field>
                <requiredEntity createDataKey="createCategory"/>
            </createData>
            <createData entity="_defaultProduct" stepKey="createBrick">
                <field key="price">{{Vertex_Bundle_PA_Values_Brick_Qty3.price}}</field>
                <requiredEntity createDataKey="createCategory"/>
            </createData>
            <createData entity="ApiFixedBundleProduct" stepKey="createBundle">
                <field key="price">{{Vertex_Bundle_PA_Values_Qty3.price}}</field>
                <requiredEntity createDataKey="createCategory"/>
            </createData>
            <createData entity="RadioButtonsOption" stepKey="createSelection1">
                <requiredEntity createDataKey="createBundle"/>
            </createData>
            <createData entity="RadioButtonsOption" stepKey="createSelection2">
                <requiredEntity createDataKey="createBundle"/>
            </createData>
            <createData entity="ApiBundleLink" stepKey="linkSelection1Option1">
                <field key="price">{{Vertex_Bundle_PA_Values_Ball_Qty3.price}}</field>
                <field key="price_type">0</field>
                <requiredEntity createDataKey="createBundle"/>
                <requiredEntity createDataKey="createSelection1"/>
                <requiredEntity createDataKey="createBall"/>
            </createData>
            <createData entity="ApiBundleLink" stepKey="linkSelection2Option1">
                <field key="price">{{Vertex_Bundle_PA_Values_Brick_Qty3.price}}</field>
                <field key="price_type">0</field>
                <requiredEntity createDataKey="createBundle"/>
                <requiredEntity createDataKey="createSelection2"/>
                <requiredEntity createDataKey="createBrick"/>
            </createData>
            <magentoCron stepKey="runCronIndex" groups="index"/>

            <!-- Configuration -->
            <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
            <actionGroup ref="VertexTaxDefaultConfigActionGroup" stepKey="revertDefaultConfiguration"/>
            <actionGroup ref="VertexTaxConfigOrderStatusPendingActionGroup" stepKey="setupTaxConfigOrderStatusProcessing"/>

            <magentoCLI command="cache:clean config" stepKey="cleanConfigCache"/>
        </before>
        <after>
            <deleteData stepKey="deleteBall" createDataKey="createBall"/>
            <deleteData stepKey="deleteBrick" createDataKey="createBrick"/>
            <deleteData stepKey="deleteBundle" createDataKey="createBundle"/>
            <deleteData stepKey="deleteCategory" createDataKey="createCategory"/>

            <actionGroup ref="AdminLogoutActionGroup" stepKey="logoutOfAdmin"/>
        </after>

        <!-- Place order with fixed bundle -->
        <actionGroup ref="NavigateToNewOrderPageNewCustomerSingleStoreActionGroup" stepKey="startNewOrder" />
        <waitForLoadingMaskToDisappear stepKey="waitForOrderLoadingMask" />

        <actionGroup ref="AddBundleProductToOrderActionGroup" stepKey="addProductToOrder">
            <argument name="product" value="$$createBundle$$"/>
            <argument name="quantity" value="3"/>
        </actionGroup>

        <actionGroup ref="AdminFillOrderCustomerInformationIncludingEmailActionGroup" stepKey="fillOutCustomerInfo">
            <argument name="customer" value="Vertex_Customer_BobSaget"/>
            <argument name="address" value="Vertex_Customer_BobSaget_Address"/>
        </actionGroup>
        <waitForLoadingMaskToDisappear stepKey="waitForCustomerSetupLoading" />

        <actionGroup ref="OrderSelectFlatRateShippingActionGroup" stepKey="selectShipping"/>
        <actionGroup ref="SelectCheckMoneyPaymentMethodActionGroup" stepKey="selectPayment"/>
        <click stepKey="submitOrder" selector="{{AdminOrderFormActionSection.submitOrder}}"/>

        <!-- Validate order totals -->
        <actionGroup ref="VertexCheckTotalsInAdminOrderViewActionGroup" stepKey="checkTotals">
            <argument name="subtotalExclTax" value="{{Vertex_Bundle_PA_Ball_Brick_Qty3_Totals.subtotal}}"/>
            <argument name="subtotalInclTax" value="{{Vertex_Bundle_PA_Ball_Brick_Qty3_Totals.subtotalInclTax}}"/>
            <argument name="shippingExclTax" value="{{Vertex_Bundle_PA_Ball_Brick_Qty3_Totals.shipping}}"/>
            <argument name="shippingInclTax" value="{{Vertex_Bundle_PA_Ball_Brick_Qty3_Totals.shippingInclTax}}"/>
            <argument name="tax" value="{{Vertex_Bundle_PA_Ball_Brick_Qty3_Totals.tax}}"/>
            <argument name="totalExclTax" value="{{Vertex_Bundle_PA_Ball_Brick_Qty3_Totals.total}}"/>
            <argument name="totalInclTax" value="{{Vertex_Bundle_PA_Ball_Brick_Qty3_Totals.totalInclTax}}"/>
        </actionGroup>

        <actionGroup ref="VertexCheckInvoiceSuccessMessageActionGroup" stepKey="checkSuccessMessage"/>
        <actionGroup ref="VertexCheckInvoiceSuccessNoteActionGroup" stepKey="checkSuccessNote">
            <argument name="amount" value="{{Vertex_Bundle_PA_Ball_Brick_Qty3_Totals.tax}}"/>
        </actionGroup>
    </test>
</tests>
