Skip to content

Commit b8cc523

Browse files
committed
Added test coverage for EventNameReferenceProvider
1 parent 305bfcd commit b8cc523

File tree

4 files changed

+46
-3
lines changed

4 files changed

+46
-3
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
10+
<event name="test_event_in_block<caret>">
11+
<observer name="test_observer" instance="Magento\Catalog\Observer\TestObserver" />
12+
</event>
13+
</config>

tests/com/magento/idea/magento2plugin/reference/BaseReferenceTestCase.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package com.magento.idea.magento2plugin.reference;
77

8+
import com.intellij.openapi.util.text.StringUtil;
89
import com.intellij.psi.PsiElement;
910
import com.intellij.psi.PsiFile;
1011
import com.intellij.psi.PsiReference;
@@ -15,6 +16,7 @@
1516
import com.intellij.psi.xml.XmlTag;
1617
import com.jetbrains.php.lang.psi.elements.Method;
1718
import com.jetbrains.php.lang.psi.elements.Parameter;
19+
import com.jetbrains.php.lang.psi.elements.ParameterList;
1820
import com.jetbrains.php.lang.psi.elements.PhpClass;
1921
import com.magento.idea.magento2plugin.inspections.BaseInspectionsTestCase;
2022
import com.magento.idea.magento2plugin.magento.packages.File;
@@ -204,6 +206,22 @@ protected void assertHasReferenceToClassMethod(
204206
);
205207
}
206208

209+
protected void assertHasReferenceToMethodArgument(final String argument) {
210+
final PsiReference[] references = getElementFromCaret().getReferences();
211+
final String actualArgument = StringUtil.unquoteString(references[references.length - 1].resolve().getText());
212+
final PsiElement parameterList = references[0].resolve().getParent();
213+
214+
if (!(parameterList instanceof ParameterList)) {
215+
fail("Element doesn't have a reference to a method parameter");
216+
}
217+
218+
assertEquals(
219+
"Event dispatch argument",
220+
argument,
221+
actualArgument
222+
);
223+
}
224+
207225
protected void assertEmptyReference() {
208226
final PsiElement element = getElementFromCaret();
209227
assertEmpty(element.getReferences());

tests/com/magento/idea/magento2plugin/reference/xml/ObserverReferenceRegistrarTest.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,28 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.reference.xml;
67

78
import com.magento.idea.magento2plugin.magento.files.ModuleEventsXml;
89

910
public class ObserverReferenceRegistrarTest extends ReferenceXmlFixtureTestCase {
1011

11-
public void testEventsXmlMustHaveReference() {
12-
String filePath = this.getFixturePath(ModuleEventsXml.FILE_NAME);
13-
myFixture.configureByFile(filePath);
12+
/**
13+
* Tests for observer instance reference in events.xml
14+
*/
15+
public void testObserverInstanceMustHaveReference() {
16+
myFixture.configureByFile(this.getFixturePath(ModuleEventsXml.FILE_NAME));
1417

1518
assertHasReferencePhpClass("Magento\\Catalog\\Observer\\TestObserver");
1619
}
20+
21+
/**
22+
* Tests for event name reference in events.xml
23+
*/
24+
public void testEventNameMustHaveReference() {
25+
myFixture.configureByFile(this.getFixturePath(ModuleEventsXml.FILE_NAME));
26+
27+
assertHasReferenceToMethodArgument("test_event_in_block");
28+
}
1729
}

0 commit comments

Comments
 (0)