Skip to content

Commit 670fdf7

Browse files
authored
Spring UI fixes and general UI refactoring #2266 #2353 (#2369)
1 parent 6eb5418 commit 670fdf7

File tree

2 files changed

+72
-63
lines changed

2 files changed

+72
-63
lines changed

utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,6 +1594,8 @@ enum class MockStrategyApi(
15941594
// We use OTHER_CLASSES strategy as default one in `No configuration` mode
15951595
// and as unique acceptable in other modes (combined with type replacement).
15961596
val springDefaultItem = OTHER_CLASSES
1597+
// We use NO_MOCKS strategy in integration tests because they are based on fuzzer that is not compatible with mocks
1598+
val springIntegrationTestItem = NO_MOCKS
15971599
}
15981600
}
15991601

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

Lines changed: 70 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -448,13 +448,15 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
448448
"Otherwise, mock nothing. Mockito will be installed, if you don't have one."
449449
)
450450
}.enabledIf(ComboBoxPredicate(springConfig) {
451-
model.projectType != ProjectType.Spring || !isSpringConfigSelected()
451+
model.projectType == ProjectType.PureJvm || !isSpringConfigSelected()
452452
})
453453
row { cell(staticsMocking)}
454454
row {
455455
cell(parametrizedTestSources)
456456
contextHelp("Parametrization is not supported in some configurations, e.g. if mocks are used.")
457-
}
457+
}.enabledIf(ComboBoxPredicate(springConfig) {
458+
model.projectType == ProjectType.PureJvm
459+
})
458460
row("Test generation timeout:") {
459461
cell(BorderLayoutPanel().apply {
460462
addToLeft(timeoutSpinner)
@@ -852,7 +854,8 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
852854
else -> settings.mockStrategy
853855
}
854856
staticsMocking.isSelected = settings.staticsMocking == MockitoStaticMocking
855-
parametrizedTestSources.isSelected = settings.parametrizedTestSource == ParametrizedTestSource.PARAMETRIZE
857+
parametrizedTestSources.isSelected = (settings.parametrizedTestSource == ParametrizedTestSource.PARAMETRIZE
858+
&& model.projectType == ProjectType.PureJvm)
856859

857860
mockStrategies.isEnabled = true
858861
staticsMocking.isEnabled = mockStrategies.item != MockStrategyApi.NO_MOCKS
@@ -1102,23 +1105,14 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
11021105
with((event.source as JComboBox<*>).selectedItem) {
11031106
if (this is VirtualFile) {
11041107
model.setSourceRootAndFindTestModule(this@with)
1105-
}
1106-
else {
1108+
} else {
11071109
model.setSourceRootAndFindTestModule(null)
11081110
}
11091111
}
11101112
}
11111113

1112-
mockStrategies.addActionListener { event ->
1113-
val comboBox = event.source as ComboBox<*>
1114-
val item = comboBox.item as MockStrategyApi
1115-
1116-
staticsMocking.isEnabled = item != MockStrategyApi.NO_MOCKS
1117-
if (!staticsMocking.isEnabled) {
1118-
staticsMocking.isSelected = false
1119-
}
1120-
1121-
updateParametrizationEnabled()
1114+
mockStrategies.addActionListener { _ ->
1115+
updateControlsEnabledStatus()
11221116
}
11231117

11241118
testFrameworks.addActionListener { event ->
@@ -1127,11 +1121,11 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
11271121

11281122
currentFrameworkItem = item
11291123

1130-
updateParametrizationEnabled()
1124+
updateControlsEnabledStatus()
11311125
}
11321126

11331127
codegenLanguages.addActionListener { _ ->
1134-
updateParametrizationEnabled()
1128+
updateControlsEnabledStatus()
11351129
}
11361130

11371131
parametrizedTestSources.addActionListener { _ ->
@@ -1141,62 +1135,49 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
11411135
ParametrizedTestSource.DO_NOT_PARAMETRIZE
11421136
}
11431137

1144-
when (parametrizedTestSource) {
1145-
ParametrizedTestSource.PARAMETRIZE -> {
1146-
mockStrategies.item = MockStrategyApi.NO_MOCKS
1147-
staticsMocking.isEnabled = false
1148-
staticsMocking.isSelected = false
1149-
}
1150-
ParametrizedTestSource.DO_NOT_PARAMETRIZE -> {
1151-
mockStrategies.isEnabled = true
1152-
if (mockStrategies.item != MockStrategyApi.NO_MOCKS) {
1153-
staticsMocking.isEnabled = true
1154-
staticsMocking.isSelected = true
1155-
}
1156-
}
1157-
}
1158-
11591138
updateTestFrameworksList(parametrizedTestSource)
1139+
updateControlsEnabledStatus()
11601140
}
11611141

11621142
springConfig.addActionListener { _ ->
11631143
if (isSpringConfigSelected()) {
1164-
mockStrategies.item = MockStrategyApi.springDefaultItem
1165-
mockStrategies.isEnabled = false
1166-
updateMockStrategyListForConfigGuidedTypeReplacements()
1167-
1168-
staticsMocking.isEnabled = false
1169-
staticsMocking.isSelected = true
1144+
if (isXmlSpringConfigUsed()) {
1145+
springTestsType.item = SpringTestsType.defaultItem
1146+
}
11701147

1171-
springTestsType.let {
1172-
it.isEnabled = !isXmlSpringConfigUsed()
1173-
if (!it.isEnabled) springTestsType.item = SpringTestsType.defaultItem
1148+
if (springTestsType.item == UNIT_TESTS) {
1149+
mockStrategies.item = MockStrategyApi.springDefaultItem
11741150
}
1175-
profileNames.isEnabled = true
11761151
} else {
11771152
mockStrategies.item = when (model.projectType) {
11781153
ProjectType.Spring -> MockStrategyApi.springDefaultItem
11791154
else -> MockStrategyApi.defaultItem
11801155
}
1181-
mockStrategies.isEnabled = true
1182-
updateMockStrategyList()
11831156

1184-
staticsMocking.isEnabled = true
1185-
staticsMocking.isSelected = mockStrategies.item != MockStrategyApi.NO_MOCKS
1186-
1187-
springTestsType.isEnabled = false
11881157
springTestsType.item = SpringTestsType.defaultItem
11891158

1190-
profileNames.isEnabled = false
11911159
profileNames.text = ""
11921160
}
1161+
updateMockStrategyList()
1162+
updateControlsEnabledStatus()
11931163
}
11941164

11951165
springTestsType.addActionListener { event ->
11961166
val comboBox = event.source as ComboBox<*>
11971167
val item = comboBox.item as SpringTestsType
11981168

11991169
updateTestFrameworkList(item)
1170+
1171+
when (item) {
1172+
UNIT_TESTS -> {
1173+
mockStrategies.item = MockStrategyApi.springDefaultItem
1174+
}
1175+
INTEGRATION_TESTS -> {
1176+
mockStrategies.item = MockStrategyApi.springIntegrationTestItem
1177+
}
1178+
}
1179+
updateMockStrategyList()
1180+
updateControlsEnabledStatus()
12001181
}
12011182

12021183
cbSpecifyTestPackage.addActionListener {
@@ -1263,27 +1244,28 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
12631244
}
12641245
}
12651246

1266-
private fun updateMockStrategyList() {
1267-
mockStrategies.renderer = object : ColoredListCellRenderer<MockStrategyApi>() {
1268-
override fun customizeCellRenderer(
1269-
list: JList<out MockStrategyApi>, value: MockStrategyApi,
1270-
index: Int, selected: Boolean, hasFocus: Boolean
1271-
) {
1272-
this.append(value.displayName, SimpleTextAttributes.REGULAR_ATTRIBUTES)
1273-
if (value != MockStrategyApi.NO_MOCKS && !MOCKITO.isInstalled) {
1274-
this.append(WILL_BE_INSTALLED_LABEL, SimpleTextAttributes.ERROR_ATTRIBUTES)
1275-
}
1276-
}
1277-
}
1247+
private fun updateStaticMockEnabled() {
1248+
val mockStrategyIsSupported = mockStrategies.item != MockStrategyApi.NO_MOCKS
1249+
1250+
staticsMocking.isEnabled = mockStrategyIsSupported && !isSpringConfigSelected()
1251+
staticsMocking.isSelected = mockStrategyIsSupported
12781252
}
12791253

1280-
private fun updateMockStrategyListForConfigGuidedTypeReplacements() {
1254+
private fun updateMockStrategyList() {
12811255
mockStrategies.renderer = object : ColoredListCellRenderer<MockStrategyApi>() {
12821256
override fun customizeCellRenderer(
12831257
list: JList<out MockStrategyApi>, value: MockStrategyApi,
12841258
index: Int, selected: Boolean, hasFocus: Boolean
12851259
) {
1286-
this.append("Mock using Spring configuration", SimpleTextAttributes.REGULAR_ATTRIBUTES)
1260+
if(mockStrategies.item == MockStrategyApi.springDefaultItem && isSpringConfigSelected()) {
1261+
this.append("Mock using Spring configuration", SimpleTextAttributes.REGULAR_ATTRIBUTES)
1262+
}
1263+
else{
1264+
this.append(value.displayName, SimpleTextAttributes.REGULAR_ATTRIBUTES)
1265+
if (value != MockStrategyApi.NO_MOCKS && !MOCKITO.isInstalled) {
1266+
this.append(WILL_BE_INSTALLED_LABEL, SimpleTextAttributes.ERROR_ATTRIBUTES)
1267+
}
1268+
}
12871269
}
12881270
}
12891271
}
@@ -1343,6 +1325,31 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
13431325

13441326
}
13451327
}
1328+
1329+
private fun updateControlsEnabledStatus() {
1330+
mockStrategies.isEnabled = true
1331+
1332+
updateParametrizationEnabled()
1333+
updateStaticMockEnabled()
1334+
1335+
if (model.projectType == ProjectType.Spring) {
1336+
updateSpringControlsEnabledStatus()
1337+
}
1338+
}
1339+
1340+
private fun updateSpringControlsEnabledStatus() {
1341+
// Parametrized tests are not supported for Spring
1342+
parametrizedTestSources.isEnabled = false
1343+
1344+
if (isSpringConfigSelected()) {
1345+
mockStrategies.isEnabled = false
1346+
profileNames.isEnabled = true
1347+
springTestsType.isEnabled = !isXmlSpringConfigUsed()
1348+
} else {
1349+
profileNames.isEnabled = false
1350+
springTestsType.isEnabled = false
1351+
}
1352+
}
13461353
}
13471354

13481355
fun GenerateTestsModel.getActionText() : String =

0 commit comments

Comments
 (0)