1515 */
1616package org.domaframework.doma.intellij.inspection.dao
1717
18+ import com.intellij.openapi.vfs.VirtualFile
1819import org.domaframework.doma.intellij.DomaSqlTest
1920import org.domaframework.doma.intellij.bundle.MessageBundle
2021import org.domaframework.doma.intellij.inspection.dao.inspector.SqlFileExistInspection
@@ -39,6 +40,8 @@ class DomaSqlQuickFixTest : DomaSqlTest() {
3940 " $packagename /SqlProcessorQuickFixTestDao.java" ,
4041 )
4142
43+ addOtherPackageJavaFile(" doma/java/dao" , " SourceNameDao.java" )
44+
4245 addResourceEmptySqlFile(
4346 " $packagename /SelectQuickFixTestDao/existsSQLFile.sql" ,
4447 " $packagename /InsertQuickFixTestDao/existsSQLFile.sql" ,
@@ -55,78 +58,123 @@ class DomaSqlQuickFixTest : DomaSqlTest() {
5558
5659 fun testSelectGenerateSQLFileQuickFix () {
5760 val testDaoName = " SelectQuickFixTestDao"
58- daoQuickFixTest(testDaoName, false ) {
59- highlightingDao(testDaoName )
61+ daoQuickFixTest(testDaoName) { virtual ->
62+ highlightingDao(virtual )
6063 }
6164 }
6265
6366 fun testInsertGenerateSQLFileQuickFix () {
6467 val testDaoName = " InsertQuickFixTestDao"
65- daoQuickFixTest(testDaoName, false ) { highlightingDao(testDaoName) }
68+ daoQuickFixTest(testDaoName) { virtual ->
69+ highlightingDao(virtual)
70+ }
6671 }
6772
6873 fun testUpdateGenerateSQLFileQuickFix () {
6974 val testDaoName = " UpdateQuickFixTestDao"
70- daoQuickFixTest(testDaoName, false ) { highlightingDao(testDaoName) }
75+ daoQuickFixTest(testDaoName) { virtual ->
76+ highlightingDao(virtual)
77+ }
7178 }
7279
7380 fun testDeleteGenerateSQLFileQuickFix () {
7481 val testDaoName = " DeleteQuickFixTestDao"
75- daoQuickFixTest(testDaoName, false ) { highlightingDao(testDaoName) }
82+ daoQuickFixTest(testDaoName) { virtual ->
83+ highlightingDao(virtual)
84+ }
7685 }
7786
7887 fun testBatchInsertGenerateSQLFileQuickFix () {
7988 val testDaoName = " BatchInsertQuickFixTestDao"
80- daoQuickFixTest(testDaoName, false ) { highlightingDao(testDaoName) }
89+ daoQuickFixTest(testDaoName) { virtual ->
90+ highlightingDao(virtual)
91+ }
8192 }
8293
8394 fun testBatchUpdateGenerateSQLFileQuickFix () {
8495 val testDaoName = " BatchUpdateQuickFixTestDao"
85- daoQuickFixTest(testDaoName, false ) { highlightingDao(testDaoName) }
96+ daoQuickFixTest(testDaoName) { virtual ->
97+ highlightingDao(virtual)
98+ }
8699 }
87100
88101 fun testBatchDeleteGenerateSQLFileQuickFix () {
89102 val testDaoName = " BatchDeleteQuickFixTestDao"
90- daoQuickFixTest(testDaoName, false ) { highlightingDao(testDaoName) }
103+ daoQuickFixTest(testDaoName) { virtual ->
104+ highlightingDao(virtual)
105+ }
91106 }
92107
93108 fun testScriptGenerateSQLFileQuickFix () {
94109 val testDaoName = " ScriptQuickFixTestDao"
95- daoQuickFixTest(testDaoName, true ) { highlightingDao(testDaoName) }
110+ daoQuickFixTest(testDaoName, true ) { virtual ->
111+ highlightingDao(virtual)
112+ }
96113 }
97114
98115 fun testSqlProcessorGenerateSQLFileQuickFix () {
99116 val testDaoName = " SqlProcessorQuickFixTestDao"
100- daoQuickFixTest(testDaoName, false ) { highlightingDao(testDaoName) }
117+ daoQuickFixTest(testDaoName) { virtual ->
118+ highlightingDao(virtual)
119+ }
101120 }
102121
103- private fun highlightingDao (testDaoName : String ) {
104- val dao = findDaoClass(getQuickFixTestDaoName(testDaoName).replace(" /" , " ." ))
122+ fun testSourceNameDaoGenerateSQLFileQuickFix () {
123+ val originalPackageName = " doma/java"
124+ val testDaoName = " SourceNameDao"
125+ daoQuickFixTestOtherPackage(originalPackageName, testDaoName) { virtual ->
126+ highlightingDao(virtual)
127+ }
128+ }
129+
130+ private fun highlightingDao (virtual : VirtualFile ) {
105131 myFixture.testHighlighting(
106132 false ,
107133 false ,
108134 false ,
109- dao.containingFile.virtualFile ,
135+ virtual ,
110136 )
111137 }
112138
113139 private fun daoQuickFixTest (
114140 testDaoName : String ,
115- isScript : Boolean ,
116- afterCheck : () -> Unit ,
141+ isScript : Boolean = false ,
142+ afterCheck : (VirtualFile ) -> Unit ,
117143 ) {
118144 val quickFixDaoName = getQuickFixTestDaoName(testDaoName)
119- val dao = findDaoClass(quickFixDaoName.replace( " / " , " . " ) )
145+ val dao = findDaoClass(quickFixDaoName)
120146
121147 myFixture.configureFromExistingVirtualFile(dao.containingFile.virtualFile)
122- val intention = myFixture.findSingleIntention(MessageBundle .message(" generate.sql.quickfix.title" ))
148+ val intention =
149+ myFixture.findSingleIntention(MessageBundle .message(" generate.sql.quickfix.title" ))
123150 myFixture.launchAction(intention)
124151
125- val generatedSql =
126- findSqlFile(" $quickFixDaoName /generateSQLFile.${if (isScript) " script" else " sql" } " )
127- assertTrue(" Not Found SQL File" , generatedSql != null )
152+ val extension = if (isScript) " script" else " sql"
153+ findSqlFile(" $quickFixDaoName /generateSQLFile.$extension " )?.let { generatedSql ->
154+ afterCheck(generatedSql)
155+ }
156+ }
157+
158+ private fun daoQuickFixTestOtherPackage (
159+ packageName : String ,
160+ testDaoName : String ,
161+ isScript : Boolean = false,
162+ afterCheck : (VirtualFile ) -> Unit ,
163+ ) {
164+ val daoPackage = packageName.plus(" /dao" )
165+ val dao = findDaoClass(daoPackage.replace(" /" , " ." ), testDaoName)
166+
167+ myFixture.configureFromExistingVirtualFile(dao.containingFile.virtualFile)
168+ val intention =
169+ myFixture.findSingleIntention(MessageBundle .message(" generate.sql.quickfix.title" ))
170+ myFixture.launchAction(intention)
128171
129- afterCheck()
172+ val extension = if (isScript) " script" else " sql"
173+ findSqlFile(packageName, " $testDaoName /generateSQLFile.$extension " )?.let { generatedSql ->
174+ afterCheck(generatedSql)
175+ } ? : {
176+ fail(" Not Found SQL File: $packageName /$testDaoName /generateSQLFile.$extension " )
177+ }
130178 }
131179
132180 private fun getQuickFixTestDaoName (daoName : String ): String = " $packagename /$daoName "
0 commit comments