Skip to content

Commit f6a561f

Browse files
committed
find usages of fragments #656
1 parent 907be29 commit f6a561f

File tree

10 files changed

+70
-16
lines changed

10 files changed

+70
-16
lines changed

src/main/com/intellij/lang/jsgraphql/ide/resolve/GraphQLScopeProvider.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.intellij.ide.scratch.ScratchUtil
44
import com.intellij.lang.jsgraphql.ide.config.GraphQLConfigProvider
55
import com.intellij.lang.jsgraphql.ide.resolve.scope.GraphQLMetaInfSchemaSearchScope
66
import com.intellij.lang.jsgraphql.ide.resolve.scope.GraphQLRestrictedFileTypesScope
7+
import com.intellij.lang.jsgraphql.psi.GraphQLFragmentDefinition
78
import com.intellij.lang.jsgraphql.psi.GraphQLFragmentSpread
89
import com.intellij.lang.jsgraphql.psi.GraphQLIdentifier
910
import com.intellij.lang.jsgraphql.schema.library.GraphQLLibraryRootsProvider
@@ -53,7 +54,7 @@ class GraphQLScopeProvider(private val project: Project) {
5354

5455
fun isResolvedInNonStrictScope(element: PsiElement?): Boolean {
5556
val context = if (element is GraphQLIdentifier) element.parent else element
56-
return context is GraphQLFragmentSpread
57+
return context is GraphQLFragmentSpread || context is GraphQLFragmentDefinition
5758
}
5859
}
5960

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ protected void reloadConfiguration() {
5858
PlatformTestUtil.dispatchAllEventsInIdeEventQueue();
5959
}
6060

61+
protected void copyProject() {
62+
myFixture.copyDirectoryToProject(getTestName(true), "");
63+
reloadConfiguration();
64+
}
65+
6166
protected void doHighlightingTest() {
6267
doHighlightingTest("graphql");
6368
}

src/test/com/intellij/lang/jsgraphql/config/GraphQLConfigOverrideTest.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,6 @@ class GraphQLConfigOverrideTest : GraphQLTestCaseBase() {
205205
return projectConfig
206206
}
207207

208-
private fun copyProject() {
209-
myFixture.copyDirectoryToProject(getTestName(true), "")
210-
reloadConfiguration()
211-
}
212-
213208
private fun resolveConfig(file: VirtualFile): GraphQLProjectConfig {
214209
val config = GraphQLConfigProvider.getInstance(project).resolveConfig(file)
215210
TestCase.assertNotNull("config is not found", config)

src/test/com/intellij/lang/jsgraphql/config/GraphQLConfigResolveTest.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,6 @@ class GraphQLConfigResolveTest : GraphQLTestCaseBase() {
130130
)
131131
}
132132

133-
private fun copyProject() {
134-
myFixture.copyDirectoryToProject(getTestName(true), "")
135-
reloadConfiguration()
136-
}
137-
138133
private fun resolveConfig(filePath: String): GraphQLProjectConfig {
139134
val context = myFixture.configureFromTempProjectFile(filePath)
140135
TestCase.assertNotNull("source file is not found", context)

src/test/com/intellij/lang/jsgraphql/config/GraphQLConfigScopeTest.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,6 @@ class GraphQLConfigScopeTest : GraphQLTestCaseBase() {
184184
assertSameElements(message, actualFiles, expectedFiles)
185185
}
186186

187-
private fun copyProject() {
188-
myFixture.copyDirectoryToProject(getTestName(true), "")
189-
reloadConfiguration()
190-
}
191-
192187
private fun loadConfig(configPath: String): GraphQLConfig {
193188
val file = myFixture.findFileInTempDir(configPath)!!
194189
val config = GraphQLConfigProvider.getInstance(project).getForConfigFile(file)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.intellij.lang.jsgraphql.findUsages
2+
3+
import com.intellij.lang.jsgraphql.GraphQLTestCaseBase
4+
import com.intellij.lang.jsgraphql.ide.resolve.GraphQLResolveUtil
5+
import com.intellij.psi.PsiNamedElement
6+
import com.intellij.testFramework.UsefulTestCase
7+
8+
class GraphQLFindUsagesTest : GraphQLTestCaseBase() {
9+
10+
override fun getBasePath(): String = "/findUsages"
11+
12+
override fun setUp() {
13+
super.setUp()
14+
copyProject()
15+
}
16+
17+
fun testFragments() {
18+
myFixture.configureFromTempProjectFile("${getTestName(true)}.graphql")
19+
val usageInfos = myFixture.findUsages(myFixture.elementAtCaret)
20+
21+
UsefulTestCase.assertSize(3, usageInfos)
22+
val containingDeclarationNames = usageInfos
23+
.map { GraphQLResolveUtil.findContainingDefinition(it.element) }
24+
.filterIsInstance<PsiNamedElement>()
25+
.map { it.name }
26+
assertSameElements(containingDeclarationNames, "Frag2", "Frag3", "Query1")
27+
}
28+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
fragment FragExcluded on Character {
2+
...Frag1
3+
}
4+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
fragment Fr<caret>ag1 on Character {
2+
age
3+
name
4+
}
5+
6+
fragment Frag2 on Character {
7+
...Frag1
8+
}
9+
10+
fragment Frag3 on Character {
11+
...Frag1
12+
}
13+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
schema: schema.graphql
2+
documents: fragments.graphql
3+
exclude: excluded.graphql
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
type Character {
2+
name: String
3+
age: Int
4+
lang: String
5+
}
6+
7+
type Query {
8+
character: Character
9+
}
10+
11+
query Query1 {
12+
character {
13+
...Frag1
14+
}
15+
}

0 commit comments

Comments
 (0)