Hello
"); + assertFalse(new OverrideEmailTemplateInThemeAction().isOverrideAllowed(file, getProject())); + } + + private void assertAllowed(final String relativePath, final boolean expected) { + // Resolve the module through module.xml, without registration.php or PHP PSI. + myFixture.addFileToProject( + "vendor/example/email-module/etc/module.xml", + "Hello {{var name}}
" + ); + assertEquals(expected, new OverrideEmailTemplateInThemeAction().isOverrideAllowed(file, getProject())); + } +} diff --git a/src/uiTest/kotlin/com/magento/idea/magento2plugin/actions/OverrideEmailTemplateInThemeActionUiTest.kt b/src/uiTest/kotlin/com/magento/idea/magento2plugin/actions/OverrideEmailTemplateInThemeActionUiTest.kt new file mode 100644 index 000000000..2e669e74d --- /dev/null +++ b/src/uiTest/kotlin/com/magento/idea/magento2plugin/actions/OverrideEmailTemplateInThemeActionUiTest.kt @@ -0,0 +1,60 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +package com.magento.idea.magento2plugin.actions + +import com.intellij.driver.sdk.ui.components.common.ideFrame +import com.intellij.driver.sdk.ui.components.elements.JComboBoxUiComponent +import com.intellij.driver.sdk.ui.components.elements.dialog +import com.magento.idea.magento2plugin.ui.assertGeneratedFile +import com.magento.idea.magento2plugin.ui.clickOkButton +import com.magento.idea.magento2plugin.ui.invokeProjectViewAction +import com.magento.idea.magento2plugin.ui.runWebStormUiTest +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test +import java.nio.file.Files + +class OverrideEmailTemplateInThemeActionUiTest { + @Test + fun `copies nested email into theme`() = + runWebStormUiTest( + FILE_GENERATORS_FIXTURE, + "app/design/frontend/Acme/storefront/Acme_Shipping/email/order/shipping.html", + ) { projectPath -> + val sourcePath = projectPath.resolve( + "app/code/Acme/Shipping/view/frontend/email/order/shipping.html", + ) + val originalText = Files.readString(sourcePath) + invokeProjectViewAction( + MODULE_PATH + listOf("view", "frontend", "email", "order", "shipping.html"), + "OverrideEmailTemplateInTheme.Menu", + waitForAction = false, + ) + + ideFrame { + dialog(title = "Override email template file in project theme") { + val theme = xx( + "//div[@class='JComboBox']", + JComboBoxUiComponent::class.java, + ).list().single() + theme.selectItem("frontend/Acme/storefront") + clickOkButton() + } + } + + assertGeneratedFile( + projectPath, + "app/design/frontend/Acme/storefront/Acme_Shipping/email/order/shipping.html", + "{{var order.increment_id}}", + ) + assertEquals( + originalText, + Files.readString(projectPath.resolve( + "app/design/frontend/Acme/storefront/Acme_Shipping/email/order/shipping.html", + )), + ) + assertEquals(originalText, Files.readString(sourcePath)) + } +} diff --git a/src/uiTest/resources/projects/file-generators/app/code/Acme/Shipping/view/frontend/email/order/shipping.html b/src/uiTest/resources/projects/file-generators/app/code/Acme/Shipping/view/frontend/email/order/shipping.html new file mode 100644 index 000000000..51cee0580 --- /dev/null +++ b/src/uiTest/resources/projects/file-generators/app/code/Acme/Shipping/view/frontend/email/order/shipping.html @@ -0,0 +1,2 @@ + +Order {{var order.increment_id}} has shipped.