Skip to content

Commit 6539bc4

Browse files
authored
Merge pull request #1936 from Haehnchen/feature/glob-test-cases
provide testcases for glob resources navigation
2 parents 7ed6bf8 + 05f885e commit 6539bc4

File tree

3 files changed

+157
-1
lines changed

3 files changed

+157
-1
lines changed

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/util/yaml/YamlHelperLightTest.java

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package fr.adrienbrault.idea.symfony2plugin.tests.util.yaml;
22

3+
import com.intellij.openapi.vfs.VirtualFile;
34
import com.intellij.psi.PsiElement;
45
import com.intellij.psi.PsiFile;
6+
import com.intellij.psi.PsiManager;
7+
import com.intellij.psi.util.PsiTreeUtil;
58
import com.intellij.util.Function;
69
import com.intellij.util.containers.ContainerUtil;
710
import com.jetbrains.php.lang.psi.elements.Parameter;
11+
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
812
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
913
import fr.adrienbrault.idea.symfony2plugin.util.yaml.YamlHelper;
1014
import fr.adrienbrault.idea.symfony2plugin.util.yaml.YamlPsiElementFactory;
@@ -20,7 +24,7 @@
2024
import java.util.Collection;
2125
import java.util.List;
2226
import java.util.Set;
23-
import java.util.function.Predicate;
27+
import java.util.stream.Collectors;
2428

2529
/**
2630
* @author Daniel Espendiller <daniel@espendiller.net>
@@ -605,6 +609,74 @@ public void testGetServiceKeyFromResourceFromStringOrArray() {
605609
assertEquals("App\\", YamlHelper.getServiceKeyFromResourceFromStringOrArray(fromText));
606610
}
607611

612+
@NotNull
613+
private Collection<String> getClassNamesFromResourceGlob(@NotNull Collection<YAMLKeyValue> yamlKeyValues, @NotNull String namespace) {
614+
YAMLKeyValue yamlKeyValue = yamlKeyValues.stream()
615+
.filter(yamlKeyValue1 -> namespace.equals(yamlKeyValue1.getKeyText()))
616+
.findFirst()
617+
.orElseThrow();
618+
619+
return YamlHelper.getNamespaceResourcesClasses(yamlKeyValue).stream()
620+
.map(PhpNamedElement::getFQN)
621+
.collect(Collectors.toSet());
622+
}
623+
624+
public void testGetNamespaceResourcesClasses() {
625+
myFixture.copyFileToProject("YamlHelper.php", "src/YamlHelper.php");
626+
VirtualFile service = myFixture.copyFileToProject("services.yml", "src/services.yml");
627+
PsiFile file = PsiManager.getInstance(getProject()).findFile(service);
628+
629+
Collection<YAMLKeyValue> yamlKeyValues = PsiTreeUtil.collectElementsOfType(file, YAMLKeyValue.class);
630+
631+
assertContainsElements(
632+
getClassNamesFromResourceGlob(yamlKeyValues, "Foo\\"),
633+
"\\Foo\\Bar"
634+
);
635+
636+
assertContainsElements(
637+
getClassNamesFromResourceGlob(yamlKeyValues, "Foo1\\"),
638+
"\\Foo1\\Bar"
639+
);
640+
641+
assertContainsElements(
642+
getClassNamesFromResourceGlob(yamlKeyValues, "Foo2\\"),
643+
"\\Foo2\\Bar"
644+
);
645+
646+
assertContainsElements(
647+
getClassNamesFromResourceGlob(yamlKeyValues, "Foo3\\"),
648+
"\\Foo3\\Bar"
649+
);
650+
651+
assertContainsElements(
652+
getClassNamesFromResourceGlob(yamlKeyValues, "Foo4\\"),
653+
"\\Foo4\\Bar"
654+
);
655+
}
656+
657+
public void testGetNamespaceResourcesClassesWithExclude() {
658+
myFixture.copyFileToProject("YamlHelper.php", "src/YamlHelper.php");
659+
VirtualFile service = myFixture.copyFileToProject("services.yml", "src/services.yml");
660+
PsiFile file = PsiManager.getInstance(getProject()).findFile(service);
661+
662+
Collection<YAMLKeyValue> yamlKeyValues = PsiTreeUtil.collectElementsOfType(file, YAMLKeyValue.class);
663+
664+
assertDoesntContain(
665+
getClassNamesFromResourceGlob(yamlKeyValues, "Foo5\\"),
666+
"\\Foo5\\Bar"
667+
);
668+
669+
assertDoesntContain(
670+
getClassNamesFromResourceGlob(yamlKeyValues, "Foo6\\"),
671+
"\\Foo6\\Bar"
672+
);
673+
674+
assertDoesntContain(
675+
getClassNamesFromResourceGlob(yamlKeyValues, "Foo7\\"),
676+
"\\Foo7\\Bar"
677+
);
678+
}
679+
608680
private int getIndentForTextContent(@NotNull String content) {
609681
return YamlHelper.getIndentSpaceForFile((YAMLFile) YamlPsiElementFactory.createDummyFile(
610682
getProject(),
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
namespace Foo
4+
{
5+
class Bar
6+
{
7+
public function __construct(Bar $foobar, Bar $foobar1)
8+
{
9+
}
10+
11+
public function setBar($arg1, $arg2)
12+
{
13+
}
14+
}
15+
}
16+
17+
18+
namespace Foo1
19+
{
20+
class Bar {}
21+
}
22+
23+
namespace Foo2
24+
{
25+
class Bar {}
26+
}
27+
28+
namespace Foo3
29+
{
30+
class Bar {}
31+
}
32+
33+
namespace Foo4
34+
{
35+
class Bar {}
36+
}
37+
38+
namespace Foo5
39+
{
40+
class Bar {}
41+
}
42+
43+
namespace Foo6
44+
{
45+
class Bar {}
46+
}
47+
48+
namespace Foo7
49+
{
50+
class Bar {}
51+
}
52+
53+
namespace Foo8
54+
{
55+
class Bar {}
56+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
services:
2+
Foo\:
3+
resource: ../src/*
4+
5+
Foo1\:
6+
resource: ../src/
7+
8+
Foo2\:
9+
resource: ../src/**
10+
11+
Foo3\:
12+
resource: ../src/YamlHelper.php
13+
14+
Foo4\:
15+
resource: ../src/*.php
16+
17+
Foo5\:
18+
resource: ../src/*.php
19+
exclude: '../src/YamlHelper.php'
20+
21+
Foo6\:
22+
resource: ../src/*.php
23+
exclude:
24+
- '../src/YamlHelper.php'
25+
26+
Foo7\:
27+
resource: ../src/*.php
28+
exclude: ['../src/YamlHelper.php']

0 commit comments

Comments
 (0)