<?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="AdminAwsS3MediaGalleryDeleteFolderTest">
        <annotations>
            <features value="AwsS3"/>
            <stories value="Media Gallery"/>
            <title value="Verify Deleting Folder Deletes S3 and Local File Storage Directories"/>
            <description value="Verify that when a user deletes a folder in Media Gallery that the directory gets
            deleted in S3 and in the local file system."/>
            <severity value="CRITICAL"/>
            <group value="remote_storage_aws_s3_media_gallery_ui"/>
        </annotations>

        <before>
            <createData entity="_emptyCmsPage" stepKey="createCMSPage"/>

            <!-- Create Media Gallery Directories -->
            <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdminBefore"/>
            <actionGroup ref="AdminOpenStandaloneMediaGalleryActionGroup" stepKey="openMediaGallery"/>
            <actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetGrid"/>
            <actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="selectWysiwygFolder">
                <argument name="name" value="wysiwyg"/>
            </actionGroup>
            <actionGroup ref="AdminMediaGalleryOpenNewFolderFormActionGroup" stepKey="openCreateFolderForm"/>
            <actionGroup ref="AdminMediaGalleryCreateNewFolderActionGroup" stepKey="createFolder">
                <argument name="name" value="{{AdminMediaGalleryFolderData.name}}"/>
            </actionGroup>
            <actionGroup ref="AdminMediaGalleryOpenNewFolderFormActionGroup" stepKey="openCreateFolderForm2"/>
            <actionGroup ref="AdminMediaGalleryCreateNewFolderActionGroup" stepKey="createFolder2">
                <argument name="name" value="{{AdminMediaGalleryFolder2Data.name}}"/>
            </actionGroup>
            <actionGroup ref="AdminEnhancedMediaGalleryUploadImageActionGroup" stepKey="uploadImage">
                <argument name="image" value="ImageUpload"/>
            </actionGroup>
        </before>

        <after>
            <deleteData createDataKey="createCMSPage" stepKey="deleteCMSPage"/>

            <!-- Delete Created Directories -->
            <actionGroup ref="AdminOpenStandaloneMediaGalleryActionGroup" stepKey="openMediaGallery"/>
            <actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetGrid"/>
            <actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expandWysiwygFolder">
                <argument name="FolderName" value="wysiwyg"/>
            </actionGroup>
            <actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="select1stCreatedFolder">
                <argument name="name" value="{{AdminMediaGalleryFolderData.name}}"/>
            </actionGroup>
            <actionGroup ref="AdminMediaGalleryFolderDeleteActionGroup" stepKey="delete1stCreatedFolder"/>
            <actionGroup ref="AdminLogoutActionGroup" stepKey="logoutFromAdmin"/>
        </after>


        <!-- Verify Images & Directories in S3 & Local File System -->
        <helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3BaseImageExists">
            <argument name="filePath">media/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>
        <helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3ThumbnailImageExists">
            <argument name="filePath">media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>
        <helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertLocalBaseImageDirectoryDoesNotExist">
            <argument name="path">pub/media/.renditions/wysiwyg/{{AdminMediaGalleryFolderData.name}}</argument>
        </helper>
        <helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalThumbnailImageExists">
            <argument name="filePath">pub/media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>

        <!-- Create CMS Page w/ Uploaded Image & Trigger Local Sync -->
        <actionGroup ref="NavigateToCreatedCMSPageActionGroup" stepKey="navigateToCreatedCMSPage">
            <argument name="CMSPage" value="$$createCMSPage$$"/>
        </actionGroup>
        <actionGroup ref="AdminOpenMediaGalleryFromPageNoEditorActionGroup" stepKey="openMediaGalleryForPage"/>
        <actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetGrid"/>
        <actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expandWysiwygFolder">
            <argument name="FolderName" value="wysiwyg"/>
        </actionGroup>
        <actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expand1stCreatedFolder">
            <argument name="FolderName" value="{{AdminMediaGalleryFolderData.name}}"/>
        </actionGroup>
        <actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="select2ndCreatedFolder">
            <argument name="name" value="{{AdminMediaGalleryFolder2Data.name}}"/>
        </actionGroup>
        <actionGroup ref="AdminMediaGalleryClickImageInGridActionGroup" stepKey="selectUploadedImage">
            <argument name="imageName" value="{{ImageUpload.filename}}"/>
        </actionGroup>
        <actionGroup ref="AdminMediaGalleryClickAddSelectedActionGroup" stepKey="clickAddSelected"/>
        <actionGroup ref="AdminSaveAndContinueEditCmsPageActionGroup" stepKey="savePage"/>
        <actionGroup ref="NavigateToStorefrontForCreatedPageActionGroup" stepKey="navigateToPageOnStorefront">
            <argument name="page" value="$$createCMSPage.identifier$$"/>
        </actionGroup>

        <!-- Verify Images in S3 & Local File System -->
        <helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3BaseImageExists2">
            <argument name="filePath">media/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>
        <helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3ThumbnailImageExists2">
            <argument name="filePath">media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>
        <helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalBaseImageExists2">
            <argument name="filePath">pub/media/.renditions/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>
        <helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalThumbnailImageExists2">
            <argument name="filePath">pub/media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>

        <!-- Delete 2nd Created Folder -->
        <actionGroup ref="AdminOpenStandaloneMediaGalleryActionGroup" stepKey="openMediaGallery"/>
        <actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetGrid2"/>
        <actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expandWysiwygFolder2">
            <argument name="FolderName" value="wysiwyg"/>
        </actionGroup>
        <actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expand1stCreatedFolder2">
            <argument name="FolderName" value="{{AdminMediaGalleryFolderData.name}}"/>
        </actionGroup>
        <actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="select2ndCreatedFolder2">
            <argument name="name" value="{{AdminMediaGalleryFolder2Data.name}}"/>
        </actionGroup>
        <actionGroup ref="AdminMediaGalleryFolderDeleteActionGroup" stepKey="deleteFolder"/>
        <actionGroup ref="AdminMediaGalleryAssertFolderDoesNotExistActionGroup" stepKey="assertFolderWasDeleted">
            <argument name="name" value="{{AdminMediaGalleryFolder2Data.name}}"/>
        </actionGroup>

        <!-- Verify Images & Directories in S3 & Local File System -->
        <helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertDirectoryExists" stepKey="assertS31stCreatedBaseFolderExists">
            <argument name="path">media/wysiwyg/{{AdminMediaGalleryFolderData.name}}</argument>
        </helper>
        <helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertS32ndCreatedBaseFolderDoesNotExist">
            <argument name="path">media/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}</argument>
        </helper>
        <helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3ThumbnailImageExists3">
            <argument name="filePath">media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>
        <helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryExists" stepKey="assertLocal1stCreatedBaseFolderExists">
            <argument name="path">pub/media/.renditions/wysiwyg/{{AdminMediaGalleryFolderData.name}}</argument>
        </helper>
        <helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertLocal2ndCreatedBaseFolderDoesNotExist">
            <argument name="path">pub/media/.renditions/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}</argument>
        </helper>
        <helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalThumbnailImageExists3">
            <argument name="filePath">pub/media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
        </helper>
    </test>
</tests>
