<?xml version="1.0" encoding="UTF-8"?>
<!--
 /**
  * Copyright 2024 Adobe
  * All Rights Reserved.
  */
-->

<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
    <actionGroup name="AdminCreateApiConfigurableProductForPayPalActionGroup">
        <annotations>
            <description>Creates a Configurable Product with 2 Product Options via the API.</description>
        </annotations>
        <arguments>
            <argument name="productName" defaultValue="{{ApiConfigurableProductWithOutCategory.name}}" type="string"/>
        </arguments>

        <!-- Create the configurable product based on the data in the /data folder -->
        <createData entity="ApiConfigurableProductWithOutCategory1" stepKey="createConfigProduct">
            <field key="name">{{productName}}</field>
        </createData>

        <!-- Create attribute with 2 options to be used in children products -->
        <createData entity="productAttributeWithTwoOptions" stepKey="createConfigProductAttribute"/>
        <createData entity="productAttributeOption1" stepKey="createConfigProductAttributeOption1">
            <requiredEntity createDataKey="createConfigProductAttribute"/>
        </createData>
        <createData entity="productAttributeOption2" stepKey="createConfigProductAttributeOption2">
            <requiredEntity createDataKey="createConfigProductAttribute"/>
        </createData>
        <createData entity="AddToDefaultSet" stepKey="addAttributeToAttributeSet">
            <requiredEntity createDataKey="createConfigProductAttribute"/>
        </createData>
        <getData entity="ProductAttributeOptionGetter" index="1" stepKey="getConfigAttributeOption1">
            <requiredEntity createDataKey="createConfigProductAttribute"/>
        </getData>
        <getData entity="ProductAttributeOptionGetter" index="2" stepKey="getConfigAttributeOption2">
            <requiredEntity createDataKey="createConfigProductAttribute"/>
        </getData>

        <!-- Create the 2 children that will be a part of the configurable product -->
        <createData entity="ApiSimpleOne1" stepKey="createConfigChildProduct1">
            <requiredEntity createDataKey="createConfigProductAttribute"/>
            <requiredEntity createDataKey="getConfigAttributeOption1"/>
        </createData>
        <createData entity="ApiSimpleTwo1" stepKey="createConfigChildProduct2">
            <requiredEntity createDataKey="createConfigProductAttribute"/>
            <requiredEntity createDataKey="getConfigAttributeOption2"/>
        </createData>

        <!-- Assign the two products to the configurable product -->
        <createData entity="ConfigurableProductTwoOptions" stepKey="createConfigProductOption">
            <requiredEntity createDataKey="createConfigProduct"/>
            <requiredEntity createDataKey="createConfigProductAttribute"/>
            <requiredEntity createDataKey="getConfigAttributeOption1"/>
            <requiredEntity createDataKey="getConfigAttributeOption2"/>
        </createData>
        <createData entity="ConfigurableProductAddChild" stepKey="createConfigProductAddChild1">
            <requiredEntity createDataKey="createConfigProduct"/>
            <requiredEntity createDataKey="createConfigChildProduct1"/>
        </createData>
        <createData entity="ConfigurableProductAddChild" stepKey="createConfigProductAddChild2">
            <requiredEntity createDataKey="createConfigProduct"/>
            <requiredEntity createDataKey="createConfigChildProduct2"/>
        </createData>
    </actionGroup>
</actionGroups>
