From 4fd0b22cdb955de2216bd4f578c48b39474d9ad3 Mon Sep 17 00:00:00 2001 From: Dzianis Lisiankou Date: Thu, 25 Jan 2024 07:52:46 +0100 Subject: [PATCH] IJMP-977: fix display of warning if create ws/jws without masks/filters --- .../config/ws/ui/AbstractWsDialog.kt | 17 +++++++ .../formainframe/config/ConfigTestSpec.kt | 48 ++++++++++++++++--- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/eu/ibagroup/formainframe/config/ws/ui/AbstractWsDialog.kt b/src/main/kotlin/eu/ibagroup/formainframe/config/ws/ui/AbstractWsDialog.kt index b778319b..f8b7cc82 100644 --- a/src/main/kotlin/eu/ibagroup/formainframe/config/ws/ui/AbstractWsDialog.kt +++ b/src/main/kotlin/eu/ibagroup/formainframe/config/ws/ui/AbstractWsDialog.kt @@ -54,6 +54,15 @@ abstract class AbstractWsDialog { + companion object { + + // TODO: Remove when it becomes possible to mock class constructor with init section. + /** Wrapper for init() method. It is necessary only for test purposes for now. */ + private fun initialize(init: () -> Unit) { + init() + } + } + abstract val wsConfigClass: Class abstract val connectionClass: Class @@ -155,6 +164,14 @@ abstract class AbstractWsDialog + isOKActionEnabled = map.isEmpty() + } + } + override fun createCenterPanel(): JComponent { return panel } diff --git a/src/test/kotlin/eu/ibagroup/formainframe/config/ConfigTestSpec.kt b/src/test/kotlin/eu/ibagroup/formainframe/config/ConfigTestSpec.kt index b41b6837..7e43eb4a 100644 --- a/src/test/kotlin/eu/ibagroup/formainframe/config/ConfigTestSpec.kt +++ b/src/test/kotlin/eu/ibagroup/formainframe/config/ConfigTestSpec.kt @@ -12,6 +12,8 @@ package eu.ibagroup.formainframe.config import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.progress.ProgressIndicator +import com.intellij.openapi.ui.DialogPanel +import com.intellij.openapi.ui.ValidationInfo import eu.ibagroup.formainframe.config.connect.ConnectionConfig import eu.ibagroup.formainframe.config.connect.Credentials import eu.ibagroup.formainframe.config.connect.CredentialsConfigDeclaration @@ -24,6 +26,9 @@ import eu.ibagroup.formainframe.config.connect.ui.zosmf.initEmptyUuids import eu.ibagroup.formainframe.config.connect.whoAmI import eu.ibagroup.formainframe.config.ws.FilesWorkingSetConfig import eu.ibagroup.formainframe.config.ws.JesWorkingSetConfig +import eu.ibagroup.formainframe.config.ws.ui.AbstractWsDialog +import eu.ibagroup.formainframe.config.ws.ui.FilesWorkingSetDialogState +import eu.ibagroup.formainframe.config.ws.ui.files.FilesWorkingSetDialog import eu.ibagroup.formainframe.dataops.DataOpsManager import eu.ibagroup.formainframe.dataops.Operation import eu.ibagroup.formainframe.dataops.operations.TsoOperation @@ -38,16 +43,14 @@ import eu.ibagroup.formainframe.utils.service import io.kotest.assertions.assertSoftly import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe -import io.mockk.clearAllMocks -import io.mockk.every -import io.mockk.mockk -import io.mockk.mockkObject -import io.mockk.mockkStatic -import io.mockk.unmockkAll +import io.mockk.* import org.zowe.kotlinsdk.MessageType import org.zowe.kotlinsdk.TsoData import org.zowe.kotlinsdk.TsoResponse import org.zowe.kotlinsdk.annotations.ZVersion +import java.util.* +import java.util.stream.Stream +import javax.swing.JComponent import kotlin.reflect.KFunction class ConfigTestSpec : WithApplicationShouldSpec({ @@ -322,6 +325,31 @@ class ConfigTestSpec : WithApplicationShouldSpec({ should("check if the sandbox is modified") {} } context("config module: ws") { + + lateinit var crudableMockk: Crudable + + beforeEach { + mockkObject(AbstractWsDialog) + every { AbstractWsDialog["initialize"](any<() -> Unit>()) } returns Unit + + crudableMockk = mockk() + every { crudableMockk.getAll(ConnectionConfig::class.java) } returns Stream.of() + every { + crudableMockk.getByUniqueKey(ConnectionConfig::class.java, any()) + } returns Optional.of(ConnectionConfig()) + + mockkConstructor(DialogPanel::class) + every { anyConstructed().registerValidators(any(), any()) } answers { + val componentValidityChangedCallback = secondArg<(Map) -> Unit>() + componentValidityChangedCallback(mapOf()) + } + } + + afterEach { + unmockkAll() + clearAllMocks() + } + // WSNameColumn.validateEntered should("check that the entered working set name is not empty") {} should("check that the entered working set name is not blank") {} @@ -335,5 +363,13 @@ class ConfigTestSpec : WithApplicationShouldSpec({ should("check that the error appears on any errors for file masks") {} should("check that the error appears on empty file working set") {} should("check that the error appears on adding the same file mask again") {} + // ui/AbstractWsDialog.init + should("check that OK action is enabled if validation map is empty") { + + val dialog = FilesWorkingSetDialog(crudableMockk, FilesWorkingSetDialogState()) + + verify { anyConstructed().registerValidators(any(), any()) } + assertSoftly { dialog.isOKActionEnabled shouldBe true } + } } })