<?xml version="1.0" encoding="UTF-8"?>
<!--
 /**
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
-->

<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">

    <!--Create New Template -->
    <actionGroup name="CreateNewTemplate">
        <arguments>
            <argument name="template" defaultValue="EmailTemplate"/>
        </arguments>

        <!--Go to Marketing> Email Templates-->
        <amOnPage url="{{AdminEmailTemplateIndexPage.url}}" stepKey="navigateToEmailTemplatePage"/>
        <!--Click "Add New Template" button-->
        <click selector="{{AdminMainActionsSection.add}}" stepKey="clickAddNewTemplateButton"/>
        <!--Select value for "Template" drop-down menu in "Load default template" tab-->
        <selectOption selector="{{AdminEmailTemplateEditSection.templateDropDown}}" userInput="Registry Update" stepKey="selectValueFromTemplateDropDown"/>
        <!--Fill in required fields in "Template Information" tab and click "Save Template" button-->
        <click selector="{{AdminEmailTemplateEditSection.loadTemplateButton}}" stepKey="clickLoadTemplateButton"/>
        <fillField selector="{{AdminEmailTemplateEditSection.templateCode}}" userInput="{{EmailTemplate.templateName}}" stepKey="fillTemplateNameField"/>
        <click selector="{{AdminMainActionsSection.save}}" stepKey="clickSaveTemplateButton"/>
        <waitForElementVisible selector="{{AdminMessagesSection.successMessage}}" stepKey="waitForSuccessMessage"/>
        <see selector="{{AdminMessagesSection.successMessage}}" userInput="You saved the email template." stepKey="seeSuccessMessage"/>
    </actionGroup>

    <!--Create New Custom Template -->
    <actionGroup name="CreateCustomTemplate" extends="CreateNewTemplate">
        <remove keyForRemoval="selectValueFromTemplateDropDown"/>
        <remove keyForRemoval="clickLoadTemplateButton"/>

        <fillField selector="{{AdminEmailTemplateEditSection.templateSubject}}" userInput="{{template.templateSubject}}" after="fillTemplateNameField" stepKey="fillTemplateSubject"/>
        <fillField selector="{{AdminEmailTemplateEditSection.templateText}}" userInput="{{template.templateText}}" after="fillTemplateSubject" stepKey="fillTemplateText"/>
    </actionGroup>

    <!-- Find and Open Email Template -->
    <actionGroup name="FindAndOpenEmailTemplate">
        <arguments>
            <argument name="template" defaultValue="EmailTemplate"/>
        </arguments>

        <amOnPage url="{{AdminEmailTemplateIndexPage.url}}" stepKey="navigateEmailTemplatePage" />
        <click selector="{{AdminDataGridHeaderSection.clearFilters}}" stepKey="clearFilters"/>
        <fillField selector="{{AdminEmailTemplateIndexSection.searchTemplateField}}" userInput="{{template.templateName}}" stepKey="findCreatedTemplate"/>
        <click selector="{{AdminDataGridHeaderSection.applyFilters}}" stepKey="clickSearch"/>
        <waitForElementVisible selector="{{AdminEmailTemplateIndexSection.templateRowByName(template.templateName)}}" stepKey="waitForTemplatesAppeared"/>
        <click selector="{{AdminEmailTemplateIndexSection.templateRowByName(template.templateName)}}" stepKey="clickToOpenTemplate"/>
        <waitForElementVisible selector="{{AdminEmailTemplateEditSection.templateCode}}" stepKey="waitForTemplateNameisible"/>
        <seeInField selector="{{AdminEmailTemplateEditSection.templateCode}}" userInput="{{template.templateName}}" stepKey="checkTemplateName"/>
    </actionGroup>

    <actionGroup name="DeleteEmailTemplate" extends="FindAndOpenEmailTemplate">
        <click selector="{{AdminEmailTemplateEditSection.deleteTemplateButton}}" after="checkTemplateName" stepKey="deleteTemplate"/>
        <acceptPopup after="deleteTemplate" stepKey="acceptPopup"/>
        <waitForElementVisible selector="{{AdminMessagesSection.successMessage}}" after="acceptPopup" stepKey="waitForSuccessMessage"/>
        <see selector="{{AdminMessagesSection.successMessage}}" userInput="You deleted the email template." after="waitForSuccessMessage" stepKey="seeSuccessfulMessage"/>
    </actionGroup>

    <actionGroup name="PreviewEmailTemplate" extends="FindAndOpenEmailTemplate">
        <click selector="{{AdminEmailTemplateEditSection.previewTemplateButton}}" after="checkTemplateName" stepKey="clickPreviewTemplate"/>
        <switchToNextTab after="clickPreviewTemplate" stepKey="switchToNewOpenedTab"/>
        <seeInCurrentUrl url="{{AdminEmailTemplatePreviewPage.url}}" after="switchToNewOpenedTab" stepKey="seeCurrentUrl"/>
        <seeElement selector="{{AdminEmailTemplatePreviewSection.iframe}}" after="seeCurrentUrl" stepKey="seeIframeOnPage"/>
        <switchToIFrame userInput="preview_iframe" after="seeIframeOnPage" stepKey="switchToIframe"/>
        <waitForPageLoad after="switchToIframe" stepKey="waitForPageLoaded"/>
    </actionGroup>

    <actionGroup name="AssertEmailTemplateContent">
        <arguments>
            <argument name="expectedContent" type="string" defaultValue="{{EmailTemplate.templateText}}"/>
        </arguments>

        <see userInput="{{expectedContent}}" stepKey="checkTemplateContainText"/>
    </actionGroup>
</actionGroups>
