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");
+ }
+}