@@ -117,6 +117,7 @@ import javax.swing.JList
117117import javax.swing.JPanel
118118import kotlin.streams.toList
119119import org.jetbrains.concurrency.thenRun
120+ import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
120121import org.utbot.intellij.plugin.ui.utils.allLibraries
121122
122123private const val RECENTS_KEY = " org.utbot.recents"
@@ -176,6 +177,15 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
176177 title = " Generate tests with UtBot"
177178 setResizable(false )
178179
180+ TestFramework .allItems.forEach {
181+ it.isInstalled = findFrameworkLibrary(model.project, model.testModule, it) != null
182+ }
183+ MockFramework .allItems.forEach {
184+ it.isInstalled = findFrameworkLibrary(model.project, model.testModule, it) != null
185+ }
186+ StaticsMocking .allItems.forEach { it.isConfigured = staticsMockingConfigured() }
187+
188+
179189 // Configure notification urls callbacks
180190 TestsReportNotifier .urlOpeningListener.callbacks[TestReportUrlOpeningListener .mockitoSuffix]?.plusAssign {
181191 if (createMockFrameworkNotificationDialog() == Messages .YES ) {
@@ -420,7 +430,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
420430 .toSet()
421431
422432 val selectedMethods = selectedMembers.filter { it.member is PsiMethod }.toSet()
423- model.selectedMethods = if ( selectedMethods.isEmpty()) null else selectedMethods
433+ model.selectedMethods = selectedMethods.ifEmpty { null }
424434
425435 model.testFramework = testFrameworks.item
426436 model.mockStrategy = mockStrategies.item
@@ -566,7 +576,6 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
566576 cbSpecifyTestPackage.isEnabled = model.srcClasses.all { cl -> cl.packageName.isNotEmpty() }
567577
568578 val settings = model.project.service<Settings >()
569- codegenLanguages.item = settings.codegenLanguage
570579 mockStrategies.item = settings.mockStrategy
571580 staticsMocking.item = settings.staticsMocking
572581 parametrizedTestSources.item = settings.parametrizedTestSource
@@ -575,15 +584,19 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
575584 mockStrategies.isEnabled = areMocksSupported
576585 staticsMocking.isEnabled = areMocksSupported && mockStrategies.item != MockStrategyApi .NO_MOCKS
577586
578- // We do not support parameterized tests for JUnit4
587+ codegenLanguages.item =
588+ if (model.srcClasses.all { it is KtUltraLightClass }) CodegenLanguage .KOTLIN else CodegenLanguage .JAVA
589+
590+
591+ val installedTestFramework = TestFramework .allItems.singleOrNull { it.isInstalled }
579592 currentFrameworkItem = when (parametrizedTestSources.item) {
580- ParametrizedTestSource .DO_NOT_PARAMETRIZE -> settings.testFramework
581- ParametrizedTestSource .PARAMETRIZE ->
582- if (settings.testFramework == Junit4 ) TestFramework .parametrizedDefaultItem else settings.testFramework
593+ ParametrizedTestSource .DO_NOT_PARAMETRIZE -> installedTestFramework ? : settings.testFramework
594+ ParametrizedTestSource .PARAMETRIZE -> installedTestFramework
595+ ? : if (settings.testFramework != Junit4 ) settings.testFramework else TestFramework .parametrizedDefaultItem
583596 }
584597
585598 updateTestFrameworksList(settings.parametrizedTestSource)
586- updateParametrizationVisibility(settings.testFramework )
599+ updateParametrizationEnabled(currentFrameworkItem )
587600
588601 updateMockStrategyList()
589602 updateStaticMockingStrategyList()
@@ -833,7 +846,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
833846 val item = comboBox.item as TestFramework
834847
835848 currentFrameworkItem = item
836- updateParametrizationVisibility (currentFrameworkItem)
849+ updateParametrizationEnabled (currentFrameworkItem)
837850 }
838851
839852 parametrizedTestSources.addActionListener { event ->
@@ -883,10 +896,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
883896 ParametrizedTestSource .DO_NOT_PARAMETRIZE -> TestFramework .defaultItem
884897 ParametrizedTestSource .PARAMETRIZE -> TestFramework .parametrizedDefaultItem
885898 }
886- enabledTestFrameworks.forEach {
887- it.isInstalled = findFrameworkLibrary(model.project, model.testModule, it) != null
888- if (it.isInstalled && ! defaultItem.isInstalled) defaultItem = it
889- }
899+ enabledTestFrameworks.forEach { if (it.isInstalled && ! defaultItem.isInstalled) defaultItem = it }
890900
891901 testFrameworks.model = DefaultComboBoxModel (enabledTestFrameworks.toTypedArray())
892902 testFrameworks.item = if (currentFrameworkItem in enabledTestFrameworks) currentFrameworkItem else defaultItem
@@ -906,7 +916,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
906916 }
907917
908918 // We would like to disable parametrization options for JUnit4
909- private fun updateParametrizationVisibility (testFramework : TestFramework ) {
919+ private fun updateParametrizationEnabled (testFramework : TestFramework ) {
910920 when (testFramework) {
911921 Junit4 -> parametrizedTestSources.isEnabled = false
912922 Junit5 ,
@@ -915,9 +925,6 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
915925 }
916926
917927 private fun updateMockStrategyList () {
918- MOCKITO .isInstalled =
919- findFrameworkLibrary(model.project, model.testModule, MOCKITO ) != null
920-
921928 mockStrategies.renderer = object : ColoredListCellRenderer <MockStrategyApi >() {
922929 override fun customizeCellRenderer (
923930 list : JList <out MockStrategyApi >, value : MockStrategyApi ? ,
@@ -932,8 +939,6 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
932939 }
933940
934941 private fun updateStaticMockingStrategyList () {
935- val staticsMockingConfigured = staticsMockingConfigured()
936- StaticsMocking .allItems.forEach { it.isConfigured = staticsMockingConfigured }
937942 staticsMocking.renderer = object : ColoredListCellRenderer <StaticsMocking >() {
938943 override fun customizeCellRenderer (
939944 list : JList <out StaticsMocking >, value : StaticsMocking ? ,
0 commit comments