<?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="AdminManageStockForVirtualProductIsDisabledTest">
        <annotations>
            <stories value="Manage Stock on Product page turned off for Virtual Product in admin"/>
            <title value="Manage Stock on Product page turned off for Virtual Product in admin"/>
            <description value="Manage Stock on Product page turned off for Virtual Product in admin."/>
            <testCaseId value="https://app.hiptest.com/projects/69435/test-plan/folders/457015/scenarios/1544194"/>
            <severity value="CRITICAL"/>
            <group value="msi"/>
            <group value="multi_mode"/>
        </annotations>

        <before>
            <comment userInput="Enable 'Manage Stock' configuration." stepKey="revertManageStockConfigurationComment"/>
            <magentoCLI command="config:set {{TurnOnManageStockConfig.path}} {{TurnOnManageStockConfig.value}}" stepKey="enableMangeStock"/>

            <createData entity="BasicMsiStockWithMainWebsite1" stepKey="createStock1"/>
            <createData entity="FullSource1" stepKey="createSource1"/>

            <createData entity="SimpleSubCategory" stepKey="simpleCategory1"/>
            <createData entity="VirtualMsiProduct" stepKey="simpleVirtualMsiProduct1">
                <requiredEntity createDataKey="simpleCategory1"/>
            </createData>

            <createData entity="SourceStockLinked1" stepKey="linkSourceStock1">
                <requiredEntity createDataKey="createStock1"/>
                <requiredEntity createDataKey="createSource1"/>
            </createData>

            <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin1"/>

            <actionGroup ref="AdminGoToProductGridFilterResultsByInputEditProduct" stepKey="goToProductGridFilterResultsByInputEditProduct1">
                <argument name="filter_selector" value="AdminProductGridFilterSection.skuFilter"/>
                <argument name="filter_value" value="$$simpleVirtualMsiProduct1.product[sku]$$"/>
            </actionGroup>

            <click selector="{{AdminProductSEOSection.sectionHeader}}" stepKey="openSeoSection1"/>
            <fillField userInput="{{VirtualMsiProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" stepKey="fillProductUrlKey1"/>
            <waitForPageLoad time="30" stepKey="waitForPageLoad1"/>
            <scrollToTopOfPage stepKey="scrollToTopOfPage1"/>

            <searchAndMultiSelectOption selector="{{AdminProductFormSection.categoriesDropdown}}"
                                        parameterArray="[$$simpleCategory1.name$$]" stepKey="searchAndSelectCategory1"/>

            <actionGroup ref="AdminOnProductEditPageAssignSourceToProduct" stepKey="AdminOnProductEditPageAssignSourceToProduct1">
                <argument name="filter_selector" value="AdminManageSourcesGridFilterControls.code"/>
                <argument name="filter_value" value="$$createSource1.source[source_code]$$"/>
            </actionGroup>

            <fillField selector="{{AdminProductSourcesGrid.rowQty('0')}}" userInput="100" stepKey="fillDefaultQuantityField1"/>
            <fillField selector="{{AdminProductSourcesGrid.rowQty('1')}}" userInput="100" stepKey="fillDefaultQuantityField2"/>
            <click selector="{{AdminProductFormActionSection.saveButton}}" stepKey="clickOnSaveButton1"/>
            <seeElement selector="{{AdminProductMessagesSection.successMessage}}" stepKey="seeSaveProductMessage1"/>
        </before>
        <after>
            <!--Assign Default Stock to Default Website.-->
            <actionGroup ref="AssignWebsiteToStockActionGroup" stepKey="assignMainWebsiteToDefaultStock">
                <argument name="stockName" value="{{_defaultStock.name}}"/>
                <argument name="websiteName" value="{{_defaultWebsite.name}}"/>
            </actionGroup>
            <actionGroup ref="AdminLogoutActionGroup" stepKey="logoutOfAdmin1"/>
        </after>

        <actionGroup ref="AssertProductInStorefrontCategoryPage" stepKey="assertProductInStorefront1">
            <argument name="category" value="$$simpleCategory1$$"/>
            <argument name="product" value="VirtualMsiProduct"/>
        </actionGroup>
        <actionGroup ref="AssertProductInStorefrontProductPageActionGroup" stepKey="assertProductInStorefront2">
            <argument name="product" value="VirtualMsiProduct"/>
        </actionGroup>

        <actionGroup ref="AdminGoToProductGridFilterResultsByInputEditProduct" stepKey="goToProductGridFilterResultsByInputEditProduct1">
            <argument name="filter_selector" value="AdminProductGridFilterSection.skuFilter"/>
            <argument name="filter_value" value="$$simpleVirtualMsiProduct1.product[sku]$$"/>
        </actionGroup>

        <actionGroup ref="AdminGoToProductGridFilterResultsByInputEditProduct" stepKey="goToProductGridFilterResultsByInputEditProduct2">
            <argument name="filter_selector" value="AdminProductGridFilterSection.skuFilter"/>
            <argument name="filter_value" value="$$simpleVirtualMsiProduct1.product[sku]$$"/>
        </actionGroup>

        <selectOption selector="{{AdminProductSourcesGrid.rowStatus('1')}}" userInput="Out of Stock" stepKey="select"/>

        <click selector="{{AdminProductFormActionSection.saveButton}}" stepKey="clickOnSaveButton1"/>
        <seeElement selector="{{AdminProductMessagesSection.successMessage}}" stepKey="seeSaveProductMessage1"/>

        <amOnPage url="{{StorefrontCategoryPage.url($$simpleCategory1.custom_attributes[url_key]$$)}}" stepKey="navigateToCategoryPageOnStorefrontToNotSeeTheProduct"/>
        <waitForPageLoad time="30" stepKey="waitForPageLoad1"/>
        <dontSee userInput="{{SimpleMsiProduct.name}}" stepKey="assertProductNotPresentOnCategoryPageOnStorefront"/>
        <dontSee userInput="{{SimpleMsiProduct.price}}" stepKey="assertProductPriceNotPresentOnCategoryPageOnStorefront"/>
    </test>
</tests>
