Skip to content

Commit

Permalink
feat(js): init test service container
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Aug 1, 2023
1 parent 4e5e010 commit 750baff
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 28 deletions.
Expand Up @@ -30,7 +30,6 @@ class KotlinCodeModifier : CodeModifier {
) = PsiManager.getInstance(project).findFile(sourceFile) as KtFile

override fun insertTestCode(sourceFile: VirtualFile, project: Project, code: String): Boolean {
log.info("methodCode: $code")
if (!code.contains("@Test")) {
log.error("methodCode does not contain @Test annotation: $code")
return false
Expand Down

This file was deleted.

@@ -0,0 +1,7 @@
package cc.unitmesh.ide.webstorm.provider.testing

import cc.unitmesh.devti.context.builder.CodeModifier

abstract class JavaScriptTestCodeModifier(val framework: String): CodeModifier {

}
@@ -0,0 +1,31 @@
package cc.unitmesh.ide.webstorm.provider.testing

import cc.unitmesh.devti.context.ClassContext
import cc.unitmesh.devti.provider.TestFileContext
import cc.unitmesh.devti.provider.WriteTestService
import cc.unitmesh.ide.webstorm.LanguageApplicableUtil
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.util.PlatformUtils

class JavaScriptWriteTestService : WriteTestService() {
override fun isApplicable(element: PsiElement): Boolean {
if (PlatformUtils.isWebStorm()) return true

val sourceFile: PsiFile = element.containingFile ?: return false
return LanguageApplicableUtil.isJavaScriptApplicable(sourceFile.language)
}

override fun findOrCreateTestFile(sourceFile: PsiFile, project: Project, element: PsiElement): TestFileContext? {
// find `__tests__` directory in root dir

// find `__tests__` directory in current dir
return null
}

override fun lookupRelevantClass(project: Project, element: PsiElement): List<ClassContext> {
return emptyList()
}

}
@@ -0,0 +1,44 @@
package cc.unitmesh.ide.webstorm.provider.testing

import cc.unitmesh.ide.webstorm.LanguageApplicableUtil
import com.intellij.lang.Language
import com.intellij.lang.javascript.psi.JSFile
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiManager
import com.intellij.util.PlatformUtils

class JestCodeModifier : JavaScriptTestCodeModifier("jest") {
override fun isApplicable(language: Language): Boolean {
if (PlatformUtils.isWebStorm()) return true

return LanguageApplicableUtil.isJavaScriptApplicable(language)
}

override fun insertTestCode(sourceFile: VirtualFile, project: Project, code: String): Boolean {
if (code.startsWith("import") && code.contains("test ")) {
return insertClass(sourceFile, project, code)
}

insertMethod(sourceFile, project, code)
return true
}

override fun insertMethod(sourceFile: VirtualFile, project: Project, code: String): Boolean {
val file = PsiManager.getInstance(project).findFile(sourceFile) as JSFile
ApplicationManager.getApplication().invokeLater {
val rootElement = runReadAction {

}
}

return true
}

override fun insertClass(sourceFile: VirtualFile, project: Project, code: String): Boolean {
return true
}

}
7 changes: 5 additions & 2 deletions webstorm/src/main/resources/cc.unitmesh.webstorm.xml
Expand Up @@ -19,8 +19,8 @@

<chatContextProvider implementation="cc.unitmesh.ide.webstorm.provider.JavaScriptContextProvider"/>

<codeModifier language="JavaScript" implementationClass="cc.unitmesh.ide.webstorm.provider.JavaScriptCodeModifier"/>
<codeModifier language="TypeScript" implementationClass="cc.unitmesh.ide.webstorm.provider.JavaScriptCodeModifier"/>
<codeModifier language="JavaScript" implementationClass="cc.unitmesh.ide.webstorm.provider.testing.JestCodeModifier"/>
<codeModifier language="TypeScript" implementationClass="cc.unitmesh.ide.webstorm.provider.testing.JestCodeModifier"/>

<contextPrompter language="JavaScript" implementation="cc.unitmesh.ide.webstorm.provider.JavaScriptContextPrompter"/>
<contextPrompter language="Typescript" implementation="cc.unitmesh.ide.webstorm.provider.JavaScriptContextPrompter"/>
Expand All @@ -30,5 +30,8 @@

<promptStrategy language="JavaScript" implementation="cc.unitmesh.ide.webstorm.provider.JavaScriptPromptStrategyAdvisor"/>
<promptStrategy language="Typescript" implementation="cc.unitmesh.ide.webstorm.provider.JavaScriptPromptStrategyAdvisor"/>

<testContextProvider language="JavaScript" implementation="cc.unitmesh.ide.webstorm.provider.testing.JavaScriptWriteTestService"/>
<testContextProvider language="Typescript" implementation="cc.unitmesh.ide.webstorm.provider.testing.JavaScriptWriteTestService"/>
</extensions>
</idea-plugin>

0 comments on commit 750baff

Please sign in to comment.