Skip to content

Commit 8de5a02

Browse files
committed
Default value of codegen language and test framework is improved in UI
1 parent 213555c commit 8de5a02

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ import javax.swing.JList
123123
import javax.swing.JPanel
124124
import kotlin.streams.toList
125125
import org.jetbrains.concurrency.thenRun
126+
import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
126127
import org.utbot.intellij.plugin.ui.utils.allLibraries
127128

128129
private const val RECENTS_KEY = "org.utbot.recents"
@@ -182,6 +183,15 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
182183
title = "Generate tests with UtBot"
183184
setResizable(false)
184185

186+
TestFramework.allItems.forEach {
187+
it.isInstalled = findFrameworkLibrary(model.project, model.testModule, it) != null
188+
}
189+
MockFramework.allItems.forEach {
190+
it.isInstalled = findFrameworkLibrary(model.project, model.testModule, it) != null
191+
}
192+
StaticsMocking.allItems.forEach { it.isConfigured = staticsMockingConfigured() }
193+
194+
185195
// Configure notification urls callbacks
186196
TestsReportNotifier.urlOpeningListener.callbacks[TestReportUrlOpeningListener.mockitoSuffix]?.plusAssign {
187197
if (createMockFrameworkNotificationDialog() == Messages.YES) {
@@ -426,7 +436,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
426436
.toSet()
427437

428438
val selectedMethods = selectedMembers.filter { it.member is PsiMethod }.toSet()
429-
model.selectedMethods = if (selectedMethods.isEmpty()) null else selectedMethods
439+
model.selectedMethods = selectedMethods.ifEmpty { null }
430440

431441
model.testFramework = testFrameworks.item
432442
model.mockStrategy = mockStrategies.item
@@ -572,7 +582,6 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
572582
cbSpecifyTestPackage.isEnabled = model.srcClasses.all { cl -> cl.packageName.isNotEmpty() }
573583

574584
val settings = model.project.service<Settings>()
575-
codegenLanguages.item = settings.codegenLanguage
576585
mockStrategies.item = settings.mockStrategy
577586
staticsMocking.item = settings.staticsMocking
578587
parametrizedTestSources.item = settings.parametrizedTestSource
@@ -581,15 +590,19 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
581590
mockStrategies.isEnabled = areMocksSupported
582591
staticsMocking.isEnabled = areMocksSupported && mockStrategies.item != MockStrategyApi.NO_MOCKS
583592

584-
//We do not support parameterized tests for JUnit4
593+
codegenLanguages.item =
594+
if (model.srcClasses.all { it is KtUltraLightClass }) CodegenLanguage.KOTLIN else CodegenLanguage.JAVA
595+
596+
597+
val installedTestFramework = TestFramework.allItems.singleOrNull { it.isInstalled }
585598
currentFrameworkItem = when (parametrizedTestSources.item) {
586-
ParametrizedTestSource.DO_NOT_PARAMETRIZE -> settings.testFramework
587-
ParametrizedTestSource.PARAMETRIZE ->
588-
if (settings.testFramework == Junit4) TestFramework.parametrizedDefaultItem else settings.testFramework
599+
ParametrizedTestSource.DO_NOT_PARAMETRIZE -> installedTestFramework ?: settings.testFramework
600+
ParametrizedTestSource.PARAMETRIZE -> installedTestFramework
601+
?: if (settings.testFramework != Junit4) settings.testFramework else TestFramework.parametrizedDefaultItem
589602
}
590603

591604
updateTestFrameworksList(settings.parametrizedTestSource)
592-
updateParametrizationVisibility(settings.testFramework)
605+
updateParametrizationEnabled(currentFrameworkItem)
593606

594607
updateMockStrategyList()
595608
updateStaticMockingStrategyList()
@@ -839,7 +852,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
839852
val item = comboBox.item as TestFramework
840853

841854
currentFrameworkItem = item
842-
updateParametrizationVisibility(currentFrameworkItem)
855+
updateParametrizationEnabled(currentFrameworkItem)
843856
}
844857

845858
parametrizedTestSources.addActionListener { event ->
@@ -889,10 +902,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
889902
ParametrizedTestSource.DO_NOT_PARAMETRIZE -> TestFramework.defaultItem
890903
ParametrizedTestSource.PARAMETRIZE -> TestFramework.parametrizedDefaultItem
891904
}
892-
enabledTestFrameworks.forEach {
893-
it.isInstalled = findFrameworkLibrary(model.project, model.testModule, it) != null
894-
if (it.isInstalled && !defaultItem.isInstalled) defaultItem = it
895-
}
905+
enabledTestFrameworks.forEach { if (it.isInstalled && !defaultItem.isInstalled) defaultItem = it }
896906

897907
testFrameworks.model = DefaultComboBoxModel(enabledTestFrameworks.toTypedArray())
898908
testFrameworks.item = if (currentFrameworkItem in enabledTestFrameworks) currentFrameworkItem else defaultItem
@@ -912,7 +922,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
912922
}
913923

914924
//We would like to disable parametrization options for JUnit4
915-
private fun updateParametrizationVisibility(testFramework: TestFramework) {
925+
private fun updateParametrizationEnabled(testFramework: TestFramework) {
916926
when (testFramework) {
917927
Junit4 -> parametrizedTestSources.isEnabled = false
918928
Junit5,
@@ -921,9 +931,6 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
921931
}
922932

923933
private fun updateMockStrategyList() {
924-
MOCKITO.isInstalled =
925-
findFrameworkLibrary(model.project, model.testModule, MOCKITO) != null
926-
927934
mockStrategies.renderer = object : ColoredListCellRenderer<MockStrategyApi>() {
928935
override fun customizeCellRenderer(
929936
list: JList<out MockStrategyApi>, value: MockStrategyApi?,
@@ -938,8 +945,6 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
938945
}
939946

940947
private fun updateStaticMockingStrategyList() {
941-
val staticsMockingConfigured = staticsMockingConfigured()
942-
StaticsMocking.allItems.forEach { it.isConfigured = staticsMockingConfigured }
943948
staticsMocking.renderer = object : ColoredListCellRenderer<StaticsMocking>() {
944949
override fun customizeCellRenderer(
945950
list: JList<out StaticsMocking>, value: StaticsMocking?,

0 commit comments

Comments
 (0)