diff --git a/testData/completion/xml/ModuleNameCompletionRegistrar/moduleNameMustHaveCompletion/module.xml b/testData/completion/xml/ModuleNameCompletionRegistrar/moduleNameMustHaveCompletion/module.xml new file mode 100644 index 000000000..6e2792b8c --- /dev/null +++ b/testData/completion/xml/ModuleNameCompletionRegistrar/moduleNameMustHaveCompletion/module.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/testData/completion/xml/ModuleNameCompletionRegistrar/sequenceModuleNameMustHaveCompletion/module.xml b/testData/completion/xml/ModuleNameCompletionRegistrar/sequenceModuleNameMustHaveCompletion/module.xml new file mode 100644 index 000000000..f7022f3a2 --- /dev/null +++ b/testData/completion/xml/ModuleNameCompletionRegistrar/sequenceModuleNameMustHaveCompletion/module.xml @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/testData/reference/xml/ModuleNameReferenceRegistrar/moduleNameMustHaveReference/module.xml b/testData/reference/xml/ModuleNameReferenceRegistrar/moduleNameMustHaveReference/module.xml new file mode 100644 index 000000000..296e145c4 --- /dev/null +++ b/testData/reference/xml/ModuleNameReferenceRegistrar/moduleNameMustHaveReference/module.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/testData/reference/xml/ModuleNameReferenceRegistrar/sequenceModuleNameMustHaveReference/module.xml b/testData/reference/xml/ModuleNameReferenceRegistrar/sequenceModuleNameMustHaveReference/module.xml new file mode 100644 index 000000000..d70e3683e --- /dev/null +++ b/testData/reference/xml/ModuleNameReferenceRegistrar/sequenceModuleNameMustHaveReference/module.xml @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/tests/com/magento/idea/magento2plugin/completion/xml/ModuleNameCompletionRegistrarTest.java b/tests/com/magento/idea/magento2plugin/completion/xml/ModuleNameCompletionRegistrarTest.java new file mode 100644 index 000000000..f9cc87dcc --- /dev/null +++ b/tests/com/magento/idea/magento2plugin/completion/xml/ModuleNameCompletionRegistrarTest.java @@ -0,0 +1,33 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +package com.magento.idea.magento2plugin.completion.xml; + +public class ModuleNameCompletionRegistrarTest extends CompletionXmlFixtureTestCase { + private static final String[] LOOKUP_MODULE_NAMES = { + "Magento_Catalog", + "Magento_Config" + }; + + /** + * Tests for module name completion in module.xml + */ + public void testModuleNameMustHaveCompletion() { + final String filePath = this.getFixturePath("module.xml"); + myFixture.copyFileToProject(filePath); + + assertFileContainsCompletions(filePath, LOOKUP_MODULE_NAMES); + } + + /** + * Tests for module name completion under the sequence node in module.xml + */ + public void testSequenceModuleNameMustHaveCompletion() { + final String filePath = this.getFixturePath("module.xml"); + myFixture.copyFileToProject(filePath); + + assertFileContainsCompletions(filePath, LOOKUP_MODULE_NAMES); + } +} diff --git a/tests/com/magento/idea/magento2plugin/reference/BaseReferenceTestCase.java b/tests/com/magento/idea/magento2plugin/reference/BaseReferenceTestCase.java index 94f8b20b4..aeaddade7 100644 --- a/tests/com/magento/idea/magento2plugin/reference/BaseReferenceTestCase.java +++ b/tests/com/magento/idea/magento2plugin/reference/BaseReferenceTestCase.java @@ -9,6 +9,7 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.psi.ResolveResult; +import com.intellij.psi.impl.file.PsiDirectoryImpl; import com.intellij.psi.xml.XmlAttributeValue; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; @@ -113,6 +114,20 @@ protected void assertHasReferenceToXmlFile(final String fileName) { fail(String.format(referenceNotFound, fileName)); } + protected void assertHasReferenceToDirectory(final String directoryName) { + for (final PsiReference psiReference : getElementFromCaret().getReferences()) { + final PsiElement resolvedElement = psiReference.resolve(); + if (resolvedElement instanceof PsiDirectoryImpl + && ((PsiDirectoryImpl) resolvedElement).getName().equals(directoryName)) { + return; + } + } + + final String referenceNotFound + = "Failed that element contains reference to the directory `%s`"; + fail(String.format(referenceNotFound, directoryName)); + } + @SuppressWarnings("PMD") protected void assertHasReferencePhpClass(final String phpClassFqn) { final PsiElement element = getElementFromCaret(); diff --git a/tests/com/magento/idea/magento2plugin/reference/xml/ModuleNameReferenceRegistrarTest.java b/tests/com/magento/idea/magento2plugin/reference/xml/ModuleNameReferenceRegistrarTest.java new file mode 100644 index 000000000..f464ccd34 --- /dev/null +++ b/tests/com/magento/idea/magento2plugin/reference/xml/ModuleNameReferenceRegistrarTest.java @@ -0,0 +1,27 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +package com.magento.idea.magento2plugin.reference.xml; + +public class ModuleNameReferenceRegistrarTest extends ReferenceXmlFixtureTestCase { + + /** + * Tests for module name reference in module.xml + */ + public void testModuleNameMustHaveReference() { + myFixture.configureByFile(this.getFixturePath("module.xml")); + + assertHasReferenceToDirectory("module-catalog"); + } + + /** + * Tests for module name reference under sequence node in module.xml + */ + public void testSequenceModuleNameMustHaveReference() { + myFixture.configureByFile(this.getFixturePath("module.xml")); + + assertHasReferenceToDirectory("module-config"); + } +}