Skip to content

Commit 5b08f2b

Browse files
committed
Add test for ParameterLanguageInjector
1 parent 6e0dd2a commit 5b08f2b

File tree

3 files changed

+70
-30
lines changed

3 files changed

+70
-30
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/lang/ParameterLanguageInjector.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public class ParameterLanguageInjector implements MultiHostInjector {
3939
new MethodMatcher.CallToSignature("\\Doctrine\\ORM\\EntityManager", "createQuery"),
4040
new MethodMatcher.CallToSignature("\\Doctrine\\ORM\\Query", "setDQL"),
4141
};
42-
public static final String DQL_VARIABLE_NAME = "dql";
4342

4443
private final MethodLanguageInjection[] LANGUAGE_INJECTIONS = {
4544
new MethodLanguageInjection(LANGUAGE_ID_CSS, "@media all { ", " }", CSS_SELECTOR_SIGNATURES),
@@ -48,10 +47,12 @@ public class ParameterLanguageInjector implements MultiHostInjector {
4847
new MethodLanguageInjection(LANGUAGE_ID_DQL, null, null, DQL_SIGNATURES),
4948
};
5049

51-
private static final String LANGUAGE_ID_JSON = "JSON";
52-
private static final String LANGUAGE_ID_XPATH = "XPath";
53-
private static final String LANGUAGE_ID_CSS = "CSS";
54-
private static final String LANGUAGE_ID_DQL = "DQL";
50+
public static final String LANGUAGE_ID_CSS = "CSS";
51+
public static final String LANGUAGE_ID_XPATH = "XPath";
52+
public static final String LANGUAGE_ID_JSON = "JSON";
53+
public static final String LANGUAGE_ID_DQL = "DQL";
54+
55+
private static final String DQL_VARIABLE_NAME = "dql";
5556

5657
public ParameterLanguageInjector() {
5758
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/lang/ParameterLanguageInjectorTest.java

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,64 @@
55
import com.jetbrains.php.lang.PhpFileType;
66
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
77

8+
import static fr.adrienbrault.idea.symfony2plugin.lang.ParameterLanguageInjector.*;
9+
810
public class ParameterLanguageInjectorTest extends SymfonyLightCodeInsightFixtureTestCase {
911

1012
private InjectionTestFixture injectionTestFixture;
1113

1214
@Override
1315
public void setUp() throws Exception {
1416
super.setUp();
15-
injectionTestFixture = new InjectionTestFixture(myFixture);
1617
myFixture.copyFileToProject("classes.php");
17-
18+
injectionTestFixture = new InjectionTestFixture(myFixture);
1819
}
1920

2021
public String getTestDataPath() {
2122
return "src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/lang/fixtures";
2223
}
2324

2425
public void testCssLanguageInjections() {
25-
String base = "$c = new \\Symfony\\Component\\DomCrawler\\Crawler();\n";
26-
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->filter('html > bo<caret>dy');", "CSS");
27-
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->filter('<caret>');", "CSS");
28-
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->children('html > bo<caret>dy');", "CSS");
29-
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->children('<caret>');", "CSS");
26+
String base = "<?php $c = new \\Symfony\\Component\\DomCrawler\\Crawler();\n";
27+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->filter('html > bo<caret>dy');", LANGUAGE_ID_CSS);
28+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->filter('<caret>');", LANGUAGE_ID_CSS);
29+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->children('html > bo<caret>dy');", LANGUAGE_ID_CSS);
30+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->children('<caret>');", LANGUAGE_ID_CSS);
31+
32+
base = "<?php $c = new \\Symfony\\Component\\CssSelector\\CssSelectorConverter();\n";
33+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->toXPath('html > bo<caret>dy');", LANGUAGE_ID_CSS);
34+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->toXPath('<caret>');", LANGUAGE_ID_CSS);
3035
}
3136

3237
public void testXPathLanguageInjections() {
33-
String base = "$c = new \\Symfony\\Component\\DomCrawler\\Crawler();\n";
34-
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->filterXPath('<caret>');", "XPath");
35-
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->evaluate('<caret>');", "XPath");
38+
String base = "<?php $c = new \\Symfony\\Component\\DomCrawler\\Crawler();\n";
39+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->filterXPath('//dum<caret>my');", LANGUAGE_ID_XPATH);
40+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->filterXPath('<caret>');", LANGUAGE_ID_XPATH);
41+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->evaluate('//dum<caret>my');", LANGUAGE_ID_XPATH);
42+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$c->evaluate('<caret>');", LANGUAGE_ID_XPATH);
43+
}
44+
45+
public void testJsonLanguageInjections() {
46+
String base = "<?php \\Symfony\\Component\\HttpFoundation\\";
47+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "JsonResponse::fromJsonString('<caret>');", LANGUAGE_ID_JSON);
48+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "JsonResponse::fromJsonString('{\"foo\": <caret>}');", LANGUAGE_ID_JSON);
49+
50+
base = "<?php $r = new \\Symfony\\Component\\HttpFoundation\\JsonResponse();\n";
51+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$r->setJson('<caret>');", LANGUAGE_ID_JSON);
52+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$r->setJson('{\"foo\": <caret>}');", LANGUAGE_ID_JSON);
53+
}
54+
55+
public void testDqlLanguageInjections() {
56+
String base = "<?php $em = new \\Doctrine\\ORM\\EntityManager();\n";
57+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$em->createQuery('SELECT b FR<caret>OM \\Foo\\Bar b');", LANGUAGE_ID_DQL);
58+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$em->createQuery('<caret>');", LANGUAGE_ID_DQL);
59+
60+
base = "<?php $q = new \\Doctrine\\ORM\\Query();\n";
61+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$q->setDQL('SELECT b FR<caret>OM \\Foo\\Bar b');", LANGUAGE_ID_DQL);
62+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, base + "$q->setDQL('<caret>');", LANGUAGE_ID_DQL);
3663

64+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, "<?php $dql = \"SELECT b FR<caret>OM \\Foo\\Bar b\");", LANGUAGE_ID_DQL);
65+
assertInjectedLangAtCaret(PhpFileType.INSTANCE, "<?php $dql = \"<caret>\");", LANGUAGE_ID_DQL);
3766
}
3867

3968
private void assertInjectedLangAtCaret(LanguageFileType fileType, String configureByText, String lang) {

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/lang/fixtures/classes.php

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,37 @@
33
namespace Symfony\Component\DomCrawler {
44
class Crawler
55
{
6-
public function filter($str)
7-
{
8-
}
9-
public function children($str)
10-
{
11-
}
12-
public function filterXPath($str)
13-
{
14-
}
15-
public function evaluate($str)
16-
{
17-
}
6+
public function filter($str) {}
7+
public function children($str) {}
8+
public function filterXPath($str) {}
9+
public function evaluate($str) {}
1810
}
1911
}
2012

2113
namespace Symfony\Component\CssSelector {
2214
class CssSelectorConverter
2315
{
24-
public function toXPath($str)
25-
{
26-
}
16+
public function toXPath($str) {}
2717
}
2818
}
2919

20+
namespace Symfony\Component\HttpFoundation {
21+
class JsonResponse {
22+
public static function fromJsonString() {}
23+
public function setJson() {}
24+
}
25+
}
26+
namespace Doctrine\ORM {
27+
class EntityManager {
28+
public function createQuery() {}
29+
}
30+
class Query {
31+
public function setDQL() {}
32+
}
33+
}
34+
35+
namespace Foo {
36+
class Bar
37+
{
38+
}
39+
}

0 commit comments

Comments
 (0)