@@ -24,6 +24,7 @@ import com.stackspot.intellij.services.enums.ProjectWizardState
2424import com.stackspot.model.ImportedStacks
2525import com.stackspot.model.Stack
2626import com.stackspot.model.Stackfile
27+ import com.stackspot.model.StkVersion
2728import io.kotest.assertions.asClue
2829import io.kotest.matchers.shouldBe
2930import io.mockk.*
@@ -41,7 +42,7 @@ import java.util.stream.Stream
4142internal class CreateProjectServiceTest {
4243
4344 private val gitConfigCmd: GitConfig = mockk(relaxUnitFun = true )
44- private val version: Version = mockk(relaxUnitFun = true )
45+ private val version: Version = mockk(relaxed = true )
4546 private val stackInfoList: CommandInfoList = mockk(relaxed = true )
4647 private val stackfileInfoList: CommandInfoList = mockk(relaxed = true )
4748 private val templateInfoList: CommandInfoList = mockk(relaxed = true )
@@ -52,6 +53,7 @@ internal class CreateProjectServiceTest {
5253 clearAllMocks()
5354 stubbing()
5455 ImportedStacks .getInstance(stackInfoList, stackfileInfoList, templateInfoList, pluginInfoList)
56+ mockkObject(StkVersion )
5557 mockkObject(ImportedStacks )
5658 }
5759
@@ -68,27 +70,42 @@ internal class CreateProjectServiceTest {
6870 @Test
6971 fun `service state should be STACKFILES_EMPTY` () {
7072 every { ImportedStacks .getInstance(any(), any(), any(), any()).hasStackFiles() } returns false
71- every { version.runSync().stdout } returns " stk version"
73+ coEvery { version.runAsync().await().stdout } returns " stk version"
74+ StkVersion .getInstance(version)
75+ every { StkVersion .getInstance(any()).isInstalled() } returns true
76+
7277 val service = CreateProjectService (version = version)
78+
7379 service.state shouldBe ProjectWizardState .STACKFILES_EMPTY
7480 verify { ImportedStacks .getInstance(any(), any(), any(), any()).hasStackFiles() }
81+ verify { StkVersion .getInstance(any()).isInstalled() }
7582 confirmVerified(ImportedStacks )
83+ confirmVerified(StkVersion )
7684 }
7785
7886 @Test
7987 fun `service state should be NOT_INSTALLED` () {
80- every { version.runSync().stdout } returns " "
88+ coEvery { version.runAsync().await().stdout } returns " "
89+ StkVersion .getInstance(version)
90+ every { StkVersion .getInstance(any()).isInstalled() } returns false
91+
8192 val service = CreateProjectService (version = version)
93+
8294 service.state shouldBe ProjectWizardState .NOT_INSTALLED
83- verify { version.runSync() }
95+ verify { StkVersion .getInstance(any()).isInstalled() }
96+ confirmVerified(StkVersion )
8497 }
8598
8699 @Test
87100 fun `service state should be GIT_CONFIG_NOT_OK` () {
88101 every { ImportedStacks .getInstance(any(), any(), any(), any()).hasStackFiles() } returns true
89- every { version.runSync().stdout } returns " stk version"
102+ coEvery { version.runAsync().await().stdout } returns " stk version"
103+ StkVersion .getInstance(version)
104+ every { StkVersion .getInstance(any()).isInstalled() } returns true
90105 every { (gitConfigCmd.runner as BackgroundCommandRunner ).stdout } returns " "
106+
91107 val service = CreateProjectService (gitConfigCmd = gitConfigCmd, version = version)
108+
92109 service.state shouldBe ProjectWizardState .GIT_CONFIG_NOT_OK
93110 verify { ImportedStacks .getInstance(any(), any(), any(), any()).hasStackFiles() }
94111 verify { gitConfigCmd.run () }
@@ -102,6 +119,10 @@ internal class CreateProjectServiceTest {
102119 stackfile : Stackfile ? ,
103120 expected : Boolean
104121 ) {
122+ coEvery { version.runAsync().await().stdout } returns " stk version"
123+ StkVersion .getInstance(version)
124+ every { StkVersion .getInstance(any()).isInstalled() } returns true
125+
105126 val service = CreateProjectService ().saveInfo(stack, stackfile)
106127 Assertions .assertEquals(service.isStackfileSelected(), expected)
107128 }
@@ -131,9 +152,13 @@ internal class CreateProjectServiceTest {
131152 @Test
132153 fun `service state should be OK` () {
133154 every { ImportedStacks .getInstance(any(), any(), any(), any()).hasStackFiles() } returns true
134- every { version.runSync().stdout } returns " stk version"
155+ coEvery { version.runAsync().await().stdout } returns " stk version"
156+ StkVersion .getInstance(version)
157+ every { StkVersion .getInstance(any()).isInstalled() } returns true
135158 every { (gitConfigCmd.runner as BackgroundCommandRunner ).stdout } returns " ok"
159+
136160 val service = CreateProjectService (gitConfigCmd = gitConfigCmd, version = version)
161+
137162 service.state shouldBe ProjectWizardState .OK
138163 verify { ImportedStacks .getInstance(any(), any(), any(), any()).hasStackFiles() }
139164 verify(exactly = 2 ) { gitConfigCmd.run () }
@@ -154,6 +179,10 @@ internal class CreateProjectServiceTest {
154179 @ParameterizedTest
155180 @MethodSource(" saveInfoArgs" )
156181 fun `should saveInfo when args aren't null` (stack : Stack ? , stackfile : Stackfile ? ) {
182+ coEvery { version.runAsync().await().stdout } returns " stk version"
183+ StkVersion .getInstance(version)
184+ every { StkVersion .getInstance(any()).isInstalled() } returns true
185+
157186 val service = CreateProjectService ().saveInfo(stack, stackfile)
158187 service.asClue {
159188 it.stack shouldBe stack
@@ -164,6 +193,7 @@ internal class CreateProjectServiceTest {
164193 @ParameterizedTest
165194 @MethodSource(" saveInfoNullArgs" )
166195 fun `should saveInfo when args are null` (stack : Stack ? , stackfile : Stackfile ? ) {
196+
167197 val service = CreateProjectService ().saveInfo(stack, stackfile)
168198 service.asClue {
169199 it.stack shouldBe stack
@@ -178,6 +208,10 @@ internal class CreateProjectServiceTest {
178208 stackfile : Stackfile ? ,
179209 expected : Boolean
180210 ) {
211+ coEvery { version.runAsync().await().stdout } returns " stk version"
212+ StkVersion .getInstance(version)
213+ every { StkVersion .getInstance(any()).isInstalled() } returns true
214+
181215 val service = CreateProjectService ().saveInfo(stack, stackfile)
182216 Assertions .assertEquals(service.isStackfileSelected(), expected)
183217 }
0 commit comments