Skip to content

Commit df473c9

Browse files
committedMar 25, 2022
614: Added test coverage
1 parent db73a4c commit df473c9

File tree

3 files changed

+70
-1
lines changed

3 files changed

+70
-1
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
var config = {
2+
config: {
3+
mixins: {
4+
'Magento_Checkout/js/view/shipping': {
5+
'Foo_Bar/js/file<caret>': true
6+
}
7+
}
8+
}
9+
}

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

+46-1
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,24 @@
99
import com.intellij.psi.PsiElement;
1010
import com.intellij.psi.PsiFile;
1111
import com.intellij.psi.PsiReference;
12+
import com.intellij.psi.PsiReferenceProvider;
1213
import com.intellij.psi.ResolveResult;
1314
import com.intellij.psi.impl.file.PsiDirectoryImpl;
1415
import com.intellij.psi.xml.XmlAttributeValue;
1516
import com.intellij.psi.xml.XmlFile;
1617
import com.intellij.psi.xml.XmlTag;
18+
import com.intellij.util.ProcessingContext;
1719
import com.jetbrains.php.lang.psi.elements.Method;
1820
import com.jetbrains.php.lang.psi.elements.Parameter;
1921
import com.jetbrains.php.lang.psi.elements.ParameterList;
2022
import com.jetbrains.php.lang.psi.elements.PhpClass;
2123
import com.magento.idea.magento2plugin.inspections.BaseInspectionsTestCase;
2224
import com.magento.idea.magento2plugin.magento.packages.File;
2325
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
26+
import java.lang.reflect.InvocationTargetException;
27+
import java.util.ArrayList;
28+
import java.util.Arrays;
29+
import java.util.List;
2430
import org.jetbrains.annotations.Nullable;
2531

2632
@SuppressWarnings({
@@ -36,6 +42,7 @@ protected void setUp() throws Exception {
3642
myFixture.setTestDataPath(testDataFolderPath);
3743
}
3844

45+
@SuppressWarnings("PMD.CognitiveComplexity")
3946
protected void assertHasReferenceToXmlAttributeValue(final String reference) {
4047
final PsiElement element = getElementFromCaret();
4148
for (final PsiReference psiReference: element.getReferences()) {
@@ -70,6 +77,7 @@ protected void assertHasReferenceToXmlAttributeValue(final String reference) {
7077
fail(String.format(referenceNotFound, reference));
7178
}
7279

80+
@SuppressWarnings("PMD.CognitiveComplexity")
7381
protected void assertHasReferenceToXmlTag(final String tagName) {
7482
final PsiElement element = getElementFromCaret();
7583
for (final PsiReference psiReference: element.getReferences()) {
@@ -106,7 +114,40 @@ protected void assertHasReferenceToXmlTag(final String tagName) {
106114

107115
protected void assertHasReferenceToFile(final String reference) {
108116
final PsiElement element = getElementFromCaret();
109-
for (final PsiReference psiReference : element.getReferences()) {
117+
118+
assertHasReferenceToFile(reference, Arrays.asList(element.getReferences()));
119+
}
120+
121+
protected void assertHasReferenceToFile(
122+
final String reference,
123+
final Class<? extends PsiReferenceProvider> providerClass
124+
) {
125+
final PsiElement element = getLeafElementFromCaret();
126+
final List<PsiReference> references = new ArrayList<>();
127+
128+
try {
129+
final PsiReferenceProvider provider = providerClass.getConstructor().newInstance();
130+
references.addAll(
131+
Arrays.asList(
132+
provider.getReferencesByElement(element, new ProcessingContext())
133+
)
134+
);
135+
} catch (NoSuchMethodException
136+
| IllegalAccessException
137+
| InvocationTargetException
138+
| InstantiationException exception
139+
) {
140+
references.addAll(Arrays.asList(element.getReferences()));
141+
}
142+
143+
assertHasReferenceToFile(reference, references);
144+
}
145+
146+
protected void assertHasReferenceToFile(
147+
final String reference,
148+
final List<PsiReference> references
149+
) {
150+
for (final PsiReference psiReference : references) {
110151
final PsiElement resolved = psiReference.resolve();
111152
if (!(resolved instanceof PsiFile)) {
112153
continue;
@@ -250,4 +291,8 @@ protected void assertEmptyReference() {
250291
private PsiElement getElementFromCaret() {
251292
return myFixture.getFile().findElementAt(myFixture.getCaretOffset()).getParent();
252293
}
294+
295+
private PsiElement getLeafElementFromCaret() {
296+
return myFixture.getFile().findElementAt(myFixture.getCaretOffset());
297+
}
253298
}

‎tests/com/magento/idea/magento2plugin/reference/js/RequireJsReferenceRegistrarTest.java

+15
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55

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

8+
import com.magento.idea.magento2plugin.reference.provider.FilePathReferenceProvider;
9+
810
public class RequireJsReferenceRegistrarTest extends ReferenceJsFixtureTestCase {
911

1012
private static final String FIXTURE_PATH = "test.js";
13+
private static final String MIXIN_FIXTURE_PATH = "requirejs-config.js";
1114

1215
/**
1316
* Mapped parameters should have reference to file.
@@ -44,4 +47,16 @@ public void testLibInjectionParameterMustHaveReference() {
4447

4548
assertHasReferenceToFile("/lib/web/testjs.js");
4649
}
50+
51+
/**
52+
* Mixin declaration parameters should have reference to file.
53+
*/
54+
public void testFilePathInMixinDeclarationMustHaveReference() {
55+
myFixture.configureByFile(getFixturePath(MIXIN_FIXTURE_PATH));
56+
57+
assertHasReferenceToFile(
58+
"app/code/Foo/Bar/view/frontend/web/js/file.js",
59+
FilePathReferenceProvider.class
60+
);
61+
}
4762
}

0 commit comments

Comments
 (0)
Please sign in to comment.