Skip to content

Commit eb3eea8

Browse files
committed
Add Reference Testcase
1 parent f2dbc7a commit eb3eea8

File tree

12 files changed

+164
-11
lines changed

12 files changed

+164
-11
lines changed

src/test/kotlin/org/domaframework/doma/intellij/DomaSqlTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ open class DomaSqlTest : LightJavaCodeInsightFixtureTestCase() {
148148
)
149149
}
150150

151-
fun addResourceFile(vararg sqlFileNames: String) {
151+
fun addResourceEmptyFile(vararg sqlFileNames: String) {
152152
for (sqlFileName in sqlFileNames) {
153153
myFixture.addFileToProject(
154154
"$resourceRoot/META-INF/$packagePath/dao/$sqlFileName",

src/test/kotlin/org/domaframework/doma/intellij/gutteraction/dao/DaoGenerateSqlActionTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class DaoGenerateSqlActionTest : DomaSqlTest() {
6060
"gutteraction/SqlProcessorGutterTestDao.java",
6161
)
6262

63-
addResourceFile(
63+
addResourceEmptyFile(
6464
"quickfix/SelectQuickFixTestDao/existsSQLFile.sql",
6565
"quickfix/InsertQuickFixTestDao/existsSQLFile.sql",
6666
"quickfix/UpdateQuickFixTestDao/existsSQLFile.sql",
@@ -71,7 +71,7 @@ class DaoGenerateSqlActionTest : DomaSqlTest() {
7171
"quickfix/ScriptQuickFixTestDao/existsSQLFile.script",
7272
"quickfix/SqlProcessorQuickFixTestDao/existsSQLFile.sql",
7373
)
74-
addResourceFile(
74+
addResourceEmptyFile(
7575
"gutteraction/SelectGutterTestDao/existsSQLFile1.sql",
7676
"gutteraction/InsertGutterTestDao/existsSQLFile2.sql",
7777
"gutteraction/UpdateGutterTestDao/existsSQLFile1.sql",

src/test/kotlin/org/domaframework/doma/intellij/gutteraction/dao/DaoGutterActionTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class DaoGutterActionTest : DomaSqlTest() {
4545
"$packageName/ScriptGutterTestDao.java",
4646
"$packageName/SqlProcessorGutterTestDao.java",
4747
)
48-
addResourceFile(
48+
addResourceEmptyFile(
4949
"$packageName/SelectGutterTestDao/existsSQLFile1.sql",
5050
"$packageName/InsertGutterTestDao/existsSQLFile1.sql",
5151
"$packageName/UpdateGutterTestDao/existsSQLFile1.sql",
@@ -56,7 +56,7 @@ class DaoGutterActionTest : DomaSqlTest() {
5656
"$packageName/ScriptGutterTestDao/existsSQLFile1.script",
5757
"$packageName/SqlProcessorGutterTestDao/existsSQLFile1.sql",
5858
)
59-
addResourceFile(
59+
addResourceEmptyFile(
6060
"$packageName/SelectGutterTestDao/existsSQLFile2.sql",
6161
"$packageName/InsertGutterTestDao/existsSQLFile2.sql",
6262
"$packageName/UpdateGutterTestDao/existsSQLFile2.sql",
@@ -67,7 +67,7 @@ class DaoGutterActionTest : DomaSqlTest() {
6767
"$packageName/ScriptGutterTestDao/existsSQLFile2.script",
6868
"$packageName/SqlProcessorGutterTestDao/existsSQLFile2.sql",
6969
)
70-
addResourceFile(
70+
addResourceEmptyFile(
7171
"$packageName/BatchInsertGutterTestDao/existsSQLFile3.sql",
7272
"$packageName/BatchUpdateGutterTestDao/existsSQLFile3.sql",
7373
"$packageName/BatchDeleteGutterTestDao/existsSQLFile3.sql",

src/test/kotlin/org/domaframework/doma/intellij/gutteraction/dao/DaoJumpActionTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class DaoJumpActionTest : DomaSqlTest() {
6161
"$packageName/$notDisplayedPackage/SqlProcessorInvalidCaretTestDao.java",
6262
"$packageName/$notDisplayedPackage/InvalidCaretTestDao.java",
6363
)
64-
addResourceFile(
64+
addResourceEmptyFile(
6565
"$packageName/SelectGutterTestDao/existsSQLFile1.sql",
6666
"$packageName/InsertGutterTestDao/existsSQLFile1.sql",
6767
"$packageName/UpdateGutterTestDao/existsSQLFile1.sql",
@@ -72,7 +72,7 @@ class DaoJumpActionTest : DomaSqlTest() {
7272
"$packageName/ScriptGutterTestDao/existsSQLFile1.script",
7373
"$packageName/SqlProcessorGutterTestDao/existsSQLFile1.sql",
7474
)
75-
addResourceFile(
75+
addResourceEmptyFile(
7676
"$packageName/SelectGutterTestDao/existsSQLFile2.sql",
7777
"$packageName/InsertGutterTestDao/existsSQLFile2.sql",
7878
"$packageName/UpdateGutterTestDao/existsSQLFile2.sql",

src/test/kotlin/org/domaframework/doma/intellij/inspection/dao/DomaSqlExistTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class DomaSqlExistTest : DomaSqlTest() {
3232
"ScriptTestDao.java",
3333
"SqlProcessorTestDao.java",
3434
)
35-
addResourceFile(
35+
addResourceEmptyFile(
3636
"SelectTestDao/existsSQLFile.sql",
3737
"InsertTestDao/existsSQLFile.sql",
3838
"UpdateTestDao/existsSQLFile.sql",

src/test/kotlin/org/domaframework/doma/intellij/inspection/dao/DomaSqlQuickFixTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class DomaSqlQuickFixTest : DomaSqlTest() {
3737
"quickfix/SqlProcessorQuickFixTestDao.java",
3838
)
3939

40-
addResourceFile(
40+
addResourceEmptyFile(
4141
"quickfix/SelectQuickFixTestDao/existsSQLFile.sql",
4242
"quickfix/InsertQuickFixTestDao/existsSQLFile.sql",
4343
"quickfix/UpdateQuickFixTestDao/existsSQLFile.sql",

src/test/kotlin/org/domaframework/doma/intellij/refactor/DaoMethodRenameTestCase.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class DaoMethodRenameTestCase : DomaSqlTest() {
2929
"RenameDaoMethodWithoutSql.java",
3030
"RenameDaoMethodNotExistSql.java",
3131
)
32-
addResourceFile(
32+
addResourceEmptyFile(
3333
"RenameDaoMethod/renameDaoMethodName.sql",
3434
"RenameDao/renameDaoClassName.sql",
3535
)
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
/*
2+
* Copyright Doma Tools Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.domaframework.doma.intellij.reference
17+
18+
import com.intellij.psi.PsiFile
19+
import com.intellij.psi.util.PsiTreeUtil
20+
import org.domaframework.doma.intellij.DomaSqlTest
21+
import org.domaframework.doma.intellij.psi.SqlCustomElExpr
22+
import org.jetbrains.kotlin.idea.core.util.toPsiFile
23+
24+
class SqlReferenceTestCase : DomaSqlTest() {
25+
val testPackage = "reference"
26+
val testDaoName = "ReferenceTestDao"
27+
28+
val forItemResolve = "SqlElIdExprImpl(EL_ID_EXPR)"
29+
val daoParameterResolve = "PsiParameter"
30+
val fieldResolve = "PsiField"
31+
val methodResolve = "PsiMethod"
32+
val classResolve = "PsiClass"
33+
34+
override fun setUp() {
35+
super.setUp()
36+
addDaoJavaFile("$testPackage/$testDaoName.java")
37+
addSqlFile("$testPackage/$testDaoName/referenceDaoParameter.sql")
38+
addSqlFile("$testPackage/$testDaoName/referenceEntityProperty.sql")
39+
addSqlFile("$testPackage/$testDaoName/referenceStaticField.sql")
40+
}
41+
42+
fun testReferenceDaoMethodParameter() {
43+
referenceTest(
44+
"referenceDaoParameter",
45+
mapOf(
46+
"reportId" to "$daoParameterResolve:reportId",
47+
"tableName" to "$daoParameterResolve:tableName",
48+
"columns" to "$daoParameterResolve:columns",
49+
"column" to forItemResolve,
50+
"notExistParam" to null,
51+
),
52+
)
53+
}
54+
55+
fun testReferenceEntityProperty() {
56+
referenceTest(
57+
"referenceEntityProperty",
58+
mapOf(
59+
"detail" to "$daoParameterResolve:detail",
60+
"getFirstEmployee" to "$methodResolve:getFirstEmployee",
61+
"projectNumber" to "$fieldResolve:projectNumber",
62+
"projects" to "$daoParameterResolve:projects",
63+
"project" to forItemResolve,
64+
"id" to forItemResolve,
65+
"employeeId" to "$fieldResolve:employeeId",
66+
),
67+
)
68+
}
69+
70+
fun testReferenceStaticField() {
71+
referenceTest(
72+
"referenceStaticField",
73+
mapOf(
74+
"doma.example.entity.ProjectDetail" to "$classResolve:ProjectDetail",
75+
"projectCategory" to "$fieldResolve:projectCategory",
76+
"getTermNumber" to "$methodResolve:getTermNumber",
77+
),
78+
)
79+
}
80+
81+
private fun referenceTest(
82+
sqlFileName: String,
83+
resolveExpects: Map<String, String?>,
84+
) {
85+
val sqlFile = findSqlFile("$testPackage/$testDaoName/$sqlFileName.sql")
86+
assertNotNull("Not Found SQL File", sqlFile)
87+
if (sqlFile == null) return
88+
89+
myFixture.configureFromExistingVirtualFile(sqlFile)
90+
sqlFile.toPsiFile(project)?.let {
91+
resolveReferencesInTestFile(
92+
it,
93+
resolveExpects,
94+
)
95+
}
96+
}
97+
98+
/**
99+
* Resolve references in the test file.
100+
* sqlFile: The SQL file to resolve references in.
101+
* resolveExpects: A map of expected results for each reference. Type:resolveName
102+
*/
103+
private fun resolveReferencesInTestFile(
104+
sqlFile: PsiFile,
105+
resolveExpects: Map<String, String?>,
106+
) {
107+
val references = PsiTreeUtil.collectElementsOfType(sqlFile, SqlCustomElExpr::class.java)
108+
for (reference in references) {
109+
val resolveResult = reference.references.firstOrNull()?.resolve()
110+
val result = resolveExpects[reference.text]
111+
assertEquals(result, resolveResult?.toString())
112+
}
113+
}
114+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package doma.example.dao.reference;
2+
3+
import java.util.List;
4+
import doma.example.entity.*;
5+
import org.seasar.doma.*;
6+
7+
@Dao
8+
public interface ReferenceTestDao {
9+
10+
@Select
11+
Map<String, Object> referenceDaoParameter(Long reportId, String tableName, Set<String> columns);
12+
13+
@Select
14+
Project referenceEntityProperty(List<Project> projects, ProjectDetail detail);
15+
16+
@Select
17+
ProjectDetail referenceStaticField();
18+
19+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
INSERT INTO /*# tableName */
2+
(
3+
/*%for column : columns */
4+
, /*# column */
5+
/*%end */)
6+
VALUES ( /* reportId */0
7+
, /* notExistParam */false
8+
, 'div'
9+
, 100)

0 commit comments

Comments
 (0)