Skip to content

Commit 73733cf

Browse files
committed
Added initial round of tests for v2 parser and completion (#164)
1 parent e3a3454 commit 73733cf

24 files changed

+1628
-980
lines changed

src/main/com/intellij/lang/jsgraphql/schema/SchemaIDLTypeDefinitionRegistry.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import java.util.concurrent.CancellationException;
4646
import java.util.function.Consumer;
4747

48+
import static graphql.schema.idl.ScalarInfo.STANDARD_SCALAR_DEFINITIONS;
49+
4850
public class SchemaIDLTypeDefinitionRegistry {
4951

5052
private final GraphQLPsiSearchHelper graphQLPsiSearchHelper;
@@ -72,6 +74,13 @@ public void onGraphQLSchemaChanged() {
7274
}
7375
});
7476

77+
// don't want the "Java" scalars to be available without being declared explicitly
78+
STANDARD_SCALAR_DEFINITIONS.remove("Long");
79+
STANDARD_SCALAR_DEFINITIONS.remove("BigInteger");
80+
STANDARD_SCALAR_DEFINITIONS.remove("BigDecimal");
81+
STANDARD_SCALAR_DEFINITIONS.remove("Short");
82+
STANDARD_SCALAR_DEFINITIONS.remove("Char");
83+
7584
}
7685

7786
public TypeDefinitionRegistryWithErrors getRegistryWithErrors(PsiElement scopedElement) {
@@ -161,12 +170,14 @@ public TypeDefinitionRegistryWithErrors getRegistryWithErrors(PsiElement scopedE
161170
}
162171
if(node instanceof AbstractNode) {
163172
final SourceLocation sourceLocation = node.getSourceLocation();
164-
final SourceLocation newSourceLocation = new SourceLocation(
165-
sourceLocation.getLine() + lineDelta.get(),
166-
sourceLocation.getColumn(),
167-
sourceLocation.getSourceName()
168-
);
169-
((AbstractNode) node).setSourceLocation(newSourceLocation);
173+
if (sourceLocation != null) {
174+
final SourceLocation newSourceLocation = new SourceLocation(
175+
sourceLocation.getLine() + lineDelta.get(),
176+
sourceLocation.getColumn(),
177+
sourceLocation.getSourceName()
178+
);
179+
((AbstractNode) node).setSourceLocation(newSourceLocation);
180+
}
170181

171182
}
172183
//noinspection unchecked

src/test/com/intellij/lang/jsgraphql/JSGraphQLCodeInsightTest.java

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,17 @@
77
*/
88
package com.intellij.lang.jsgraphql;
99

10-
import com.intellij.lang.jsgraphql.languageservice.CodeMirrorNodeLanguageServiceClientTest;
11-
import com.intellij.lang.jsgraphql.v1.languageservice.JSGraphQLNodeLanguageServiceInstance;
1210
import com.intellij.openapi.command.WriteCommandAction;
1311
import com.intellij.psi.codeStyle.CodeStyleManager;
1412
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
1513
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
16-
import org.junit.Ignore;
17-
import org.junit.Test;
14+
import org.junit.Test;
1815

19-
import java.net.URL;
20-
21-
22-
@Ignore
2316
public class JSGraphQLCodeInsightTest extends LightCodeInsightFixtureTestCase {
24-
@Override
25-
protected void setUp() throws Exception {
26-
27-
// TODO: This test depends on a running JS GraphQL Language service at http://localhost:3000
28-
CodeMirrorNodeLanguageServiceClientTest.setLanguageServiceUrl(new URL("http", "localhost", 3000, JSGraphQLNodeLanguageServiceInstance.JSGRAPHQL_LANGUAGE_SERVICE_MAPPING));
29-
30-
super.setUp();
31-
}
32-
33-
@Override
34-
public void tearDown() throws Exception {
35-
super.tearDown();
36-
CodeMirrorNodeLanguageServiceClientTest.setLanguageServiceUrl(null);
37-
}
3817

3918
@Override
4019
protected String getTestDataPath() {
41-
return "test-resources/testData";
20+
return "test-resources/testData/graphql";
4221
}
4322

4423
@Test

src/test/com/intellij/lang/jsgraphql/languageservice/CodeMirrorNodeLanguageServiceClientTest.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/test/com/intellij/lang/jsgraphql/parser/JSGraphQLParserTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99

1010
import com.intellij.lang.jsgraphql.GraphQLParserDefinition;
1111
import com.intellij.testFramework.ParsingTestCase;
12-
import org.junit.Ignore;
1312
import org.junit.Test;
1413

15-
@Ignore
1614
public class JSGraphQLParserTest extends ParsingTestCase {
1715

1816
public JSGraphQLParserTest() {
@@ -26,7 +24,7 @@ public void testParsingTestData() {
2624

2725
@Override
2826
protected String getTestDataPath() {
29-
return "test-resources/testData";
27+
return "test-resources/testData/graphql";
3028
}
3129

3230
@Override
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
/**
2+
* Copyright (c) 2018-present, Jim Kynde Meyer
3+
* All rights reserved.
4+
* <p>
5+
* This source code is licensed under the MIT license found in the
6+
* LICENSE file in the root directory of this source tree.
7+
*/
8+
package com.intellij.lang.jsgraphql.schema;
9+
10+
import com.google.common.collect.Lists;
11+
import com.intellij.codeInsight.completion.CompletionType;
12+
import com.intellij.openapi.application.ApplicationManager;
13+
import com.intellij.psi.PsiDocumentManager;
14+
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
15+
import org.junit.Test;
16+
17+
import java.util.List;
18+
19+
20+
public class JSGraphQLSchemaCodeInsightTest extends LightCodeInsightFixtureTestCase {
21+
22+
@Override
23+
public void setUp() throws Exception {
24+
super.setUp();
25+
}
26+
27+
@Override
28+
protected String getTestDataPath() {
29+
return "test-resources/testData/graphql/schema";
30+
}
31+
32+
// ---- completion ----
33+
34+
@Test
35+
public void testCompletionImplementsFirstInterface() {
36+
doTestCompletion("CompletionImplementsFirstInterface.graphqls", Lists.newArrayList("KnownInterface1", "KnownInterface2"));
37+
}
38+
39+
@Test
40+
public void testCompletionImplementsSecondInterface() {
41+
doTestCompletion("CompletionImplementsSecondInterface.graphqls", Lists.newArrayList("KnownInterface2"));
42+
}
43+
44+
@Test
45+
public void testCompletionOperation() {
46+
doTestCompletion("CompletionOperation.graphqls", Lists.newArrayList("directive", "enum", "extend", "fragment", "input", "interface", "mutation", "query", "scalar", "schema", "subscription", "type", "union", "{"));
47+
}
48+
49+
@Test
50+
public void testCompletionImplementsKeyword1() {
51+
doTestCompletion("CompletionImplementsKeyword1.graphqls", Lists.newArrayList("implements"));
52+
}
53+
54+
@Test
55+
public void testCompletionImplementsKeyword2() {
56+
doTestCompletion("CompletionImplementsKeyword2.graphqls", Lists.newArrayList("implements"));
57+
}
58+
59+
@Test
60+
public void testCompletionFieldType() {
61+
doTestCompletion("CompletionFieldType.graphqls", Lists.newArrayList("AnotherKnownType", "Boolean", "Float", "ID", "Int", "KnownInterface", "KnownType", "MyEnum", "MyUnion", "String"));
62+
}
63+
64+
@Test
65+
public void testCompletionInputFieldType() {
66+
doTestCompletion("CompletionInputFieldType.graphqls", Lists.newArrayList("Boolean", "Float", "ID", "Int", "MyEnum", "MyInput1", "String"));
67+
}
68+
69+
@Test
70+
public void testCompletionArgumentType() {
71+
doTestCompletion("CompletionArgumentType.graphqls", Lists.newArrayList("Boolean", "Float", "ID", "Int", "MyCompletionInputABC", "MyEnum", "String"));
72+
}
73+
74+
@Test
75+
public void testCompletionSecondArgumentType() {
76+
doTestCompletion("CompletionSecondArgumentType.graphqls", Lists.newArrayList("Boolean", "Float", "ID", "Int", "MyCompletionInputABC", "MyEnum", "String"));
77+
}
78+
79+
@Test
80+
public void testCompletionDirective1() {
81+
doTestCompletion("CompletionDirective1.graphqls", Lists.newArrayList("foo"));
82+
}
83+
84+
@Test
85+
public void testCompletionDirective2() {
86+
doTestCompletion("CompletionDirective2.graphqls", Lists.newArrayList("foo"));
87+
}
88+
89+
@Test
90+
public void testCompletionDirective3() {
91+
// TODO: currently not supported by the completion contributor
92+
//doTestCompletion("CompletionDirective3.graphqls", Lists.newArrayList("arg"));
93+
}
94+
95+
@Test
96+
public void testCompletionDirective4() {
97+
// TODO: currently not supported by the completion contributor
98+
//doTestCompletion("CompletionDirective4.graphqls", Lists.newArrayList("false", "true"));
99+
}
100+
101+
@Test
102+
public void testCompletionFieldOverride() {
103+
doTestCompletion("CompletionFieldOverride.graphqls", Lists.newArrayList("fieldToImpl2: Boolean"));
104+
}
105+
106+
private void doTestCompletion(String sourceFile, List<String> expectedCompletions) {
107+
myFixture.configureByFiles(sourceFile);
108+
myFixture.complete(CompletionType.BASIC, 1);
109+
final List<String> completions = myFixture.getLookupElementStrings();
110+
assertEquals("Wrong completions", expectedCompletions, completions);
111+
ApplicationManager.getApplication().runWriteAction(() -> {
112+
myFixture.getEditor().getDocument().setText(""); // blank out the file so it doesn't affect other tests
113+
PsiDocumentManager.getInstance(myFixture.getProject()).commitAllDocuments();
114+
});
115+
}
116+
117+
118+
// ---- highlighting -----
119+
120+
// TODO
121+
// @Test
122+
// public void testErrorAnnotator() {
123+
// myFixture.configureByFiles("ErrorAnnotator.graphqls");
124+
// myFixture.checkHighlighting(false, false, false);
125+
// }
126+
127+
}

0 commit comments

Comments
 (0)