<?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="StorefrontChangeSearchRadiusWithSimpleProductCustomStockTest">
        <annotations>
            <stories value="Simple Product Custom Stock."/>
            <title value="Change search radius."/>
            <description value="Verify, search radius affect on sources search result."/>
            <testCaseId value="https://app.hiptest.com/projects/69435/test-plan/folders/1063873/scenarios/3819510"/>
            <severity value="MAJOR"/>
            <group value="msi"/>
            <group value="store_pickup"/>
        </annotations>

        <before>
            <!--Set Distance Provider for Distance Based SSA to offline-->
            <magentoCLI command="config:set {{OfflineDistanceProviderForDistanceBasedSSA.path}} {{OfflineDistanceProviderForDistanceBasedSSA.value}}" stepKey="setDistanceProviderToOffline"/>
            <magentoCLI command="config:set {{IncreaseSearchRadius.path}} {{IncreaseSearchRadius.value}}" stepKey="increaseSearchRadius"/>
            <!--Enable 'In Store Pickup' shipping method.-->
            <magentoCLI command="config:set {{EnableInStorePickup.path}} {{EnableInStorePickup.value}}" stepKey="enableInStorePickupMethod"/>
            <!--Download tables for 'US'-->
            <magentoCLI command="{{ImportTables.path}} {{USTable.value}}" stepKey="downloadTables"/>
            <actionGroup ref="CliIndexerReindexActionGroup" stepKey="performReindex">
                <argument name="indices" value=""/>
            </actionGroup>
            <actionGroup ref="CliCacheFlushActionGroup" stepKey="cleanCache">
                <argument name="tags" value=""/>
            </actionGroup>
            <!--Create test data.-->
            <createData entity="BasicMsiStockWithMainWebsite1" stepKey="stock"/>
            <createData entity="CulverStorePickupEnabledSource" stepKey="culverSource"/>
            <createData entity="AustinStorePickupEnabledSource" stepKey="austinSource"/>
            <createData entity="SourceStockLinked1" stepKey="sourceStockLink1">
                <requiredEntity createDataKey="stock"/>
                <requiredEntity createDataKey="culverSource"/>
            </createData>
            <createData entity="SourceStockLinked1" stepKey="sourceStockLink5">
                <requiredEntity createDataKey="stock"/>
                <requiredEntity createDataKey="austinSource"/>
            </createData>
            <createData entity="_defaultCategory" stepKey="category"/>
            <createData entity="SimpleProduct" stepKey="product">
                <requiredEntity createDataKey="category"/>
            </createData>
            <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
            <!--Assign sources to product.-->
            <amOnPage url="{{AdminProductEditPage.url($product.id$)}}" stepKey="openProductEditPage"/>
            <actionGroup ref="UnassignSourceFromProductActionGroup" stepKey="unassignDefaultSourceFromProduct">
                <argument name="sourceCode" value="{{_defaultSource.name}}"/>
            </actionGroup>
            <actionGroup ref="AdminAssignSourceToProductAndSetSourceQuantityActionGroup" stepKey="assignCulverSourceAndSetQty">
                <argument name="sourceCode" value="$culverSource.source[source_code]$"/>
            </actionGroup>
            <actionGroup ref="AdminAssignSourceToProductAndSetSourceQuantityActionGroup" stepKey="assignAustinSourceAndSetQty">
                <argument name="sourceCode" value="$austinSource.source[source_code]$"/>
            </actionGroup>
            <actionGroup ref="SaveProductFormActionGroup" stepKey="saveProduct"/>
        </before>
        <after>
            <!--Revert Distance Provider for Distance Based SSA to online.-->
            <magentoCLI command="config:set {{OnlineDistanceProviderForDistanceBasedSSA.path}} {{OnlineDistanceProviderForDistanceBasedSSA.value}}" stepKey="setDistanceProviderToOffline"/>
            <magentoCLI command="config:set {{SetDefaultSearchRadius.path}} {{SetDefaultSearchRadius.value}}" stepKey="setSearchRadiusToDefault"/>
            <!--Disable 'In Store Pickup' shipping method.-->
            <magentoCLI command="config:set {{DisableInStorePickup.path}} {{DisableInStorePickup.value}}" stepKey="enableInStorePickupMethod"/>
            <deleteData createDataKey="category" stepKey="deleteCategory"/>
            <deleteData createDataKey="product" stepKey="deleteProduct"/>
            <!--Assign Default Stock to Default Website.-->
            <actionGroup ref="AssignWebsiteToStockActionGroup" stepKey="assignMainWebsiteToDefaultStock">
                <argument name="stockName" value="{{_defaultStock.name}}"/>
                <argument name="websiteName" value="{{_defaultWebsite.name}}"/>
            </actionGroup>
            <deleteData createDataKey="stock" stepKey="deleteStock"/>
            <actionGroup ref="DisableAllSourcesActionGroup" stepKey="disableAllSources"/>
            <actionGroup ref="AdminLogoutActionGroup" stepKey="logoutOfAdmin"/>
            <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex">
                <argument name="indices" value=""/>
            </actionGroup>
        </after>

        <!--Add product to cart.-->
        <actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addProductToCart">
            <argument name="product" value="$product$"/>
        </actionGroup>
        <!--Verify sources information.-->
        <actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="navigateToCheckoutPage"/>
        <actionGroup ref="StorefrontPickInStoreActionGroup" stepKey="pickInStore"/>
        <actionGroup ref="StorefrontPickInStoreNavigateToSelectStoreActionGroup" stepKey="navigateToSelectStores"/>
        <actionGroup ref="StorefrontSearchSourceWithStorePickupActionGroup" stepKey="searchCulverSource">
            <argument name="searchString" value="$culverSource.source[postcode]$"/>
        </actionGroup>
        <actionGroup ref="StorefrontAssertSourceVisibleStorePickUpModalWindowActionGroup" stepKey="verifyCulverSource">
            <argument name="sourceName" value="$culverSource.source[name]$"/>
            <argument name="sourcePhone" value="$culverSource.source[phone]$"/>
            <argument name="sourceCountry" value="{{CulverStorePickupEnabledSource.country}}"/>
            <argument name="sourcePostcode" value="$culverSource.source[postcode]$"/>
            <argument name="sourceStreet" value="$culverSource.source[street]$"/>
            <argument name="sourceCity" value="$culverSource.source[city]$"/>
            <argument name="sourceRegion" value="$culverSource.source[region]$"/>
        </actionGroup>
        <actionGroup ref="StorefrontAssertSourceVisibleStorePickUpModalWindowActionGroup" stepKey="verifyAustinSource">
            <argument name="sourceName" value="$austinSource.source[name]$"/>
            <argument name="sourcePhone" value="$austinSource.source[phone]$"/>
            <argument name="sourceCountry" value="{{LosAngelesStorePickupEnabledSource.country}}"/>
            <argument name="sourcePostcode" value="$austinSource.source[postcode]$"/>
            <argument name="sourceStreet" value="$austinSource.source[street]$"/>
            <argument name="sourceCity" value="$austinSource.source[city]$"/>
            <argument name="sourceRegion" value="$austinSource.source[region]$"/>
        </actionGroup>
    </test>
</tests>
