@@ -3,10 +3,11 @@ package presentation.audit
33import domain.models.AuditLog
44import domain.models.AuditLog.AuditType
55import domain.usecases.audit.ViewAuditLogsByProjectUseCase
6- import io.mockk.every
6+ import io.mockk.coEvery
7+ import io.mockk.coVerify
8+ import io.mockk.coVerifySequence
79import io.mockk.mockk
8- import io.mockk.verify
9- import io.mockk.verifySequence
10+ import kotlinx.coroutines.test.runTest
1011import kotlinx.datetime.Instant
1112import kotlinx.datetime.TimeZone
1213import kotlinx.datetime.toLocalDateTime
@@ -47,16 +48,16 @@ class ViewAuditLogsByProjectUITest {
4748 }
4849
4950 @Test
50- fun `should display logs and return on exit command` () {
51+ fun `should display logs and return on exit command` () = runTest {
5152 // Given
52- every { consoleIO.read() } returnsMany listOf (projectIdString, " exit" )
53- every { viewAuditLogsByProjectUseCase(projectId) } returns sampleAuditLogs
53+ coEvery { consoleIO.read() } returnsMany listOf (projectIdString, " exit" )
54+ coEvery { viewAuditLogsByProjectUseCase(projectId) } returns sampleAuditLogs
5455
5556 // When
5657 viewAuditLogsByProjectUI.invoke()
5758
5859 // Then
59- verifySequence {
60+ coVerifySequence {
6061 consoleIO.write(" Enter project ID (or type 'exit' to quit): " )
6162 consoleIO.read()
6263 viewAuditLogsByProjectUseCase(projectId)
@@ -71,16 +72,16 @@ class ViewAuditLogsByProjectUITest {
7172 }
7273
7374 @Test
74- fun `should handle empty logs` () {
75+ fun `should handle empty logs` () = runTest {
7576 // Given
76- every { consoleIO.read() } returnsMany listOf (projectIdString, " exit" )
77- every { viewAuditLogsByProjectUseCase(projectId) } returns emptyList()
77+ coEvery { consoleIO.read() } returnsMany listOf (projectIdString, " exit" )
78+ coEvery { viewAuditLogsByProjectUseCase(projectId) } returns emptyList()
7879
7980 // When
8081 viewAuditLogsByProjectUI.invoke()
8182
8283 // Then
83- verifySequence {
84+ coVerifySequence {
8485 consoleIO.write(" Enter project ID (or type 'exit' to quit): " )
8586 consoleIO.read()
8687 viewAuditLogsByProjectUseCase(projectId)
@@ -91,17 +92,17 @@ class ViewAuditLogsByProjectUITest {
9192 }
9293
9394 @Test
94- fun `should handle exception when retrieving logs` () {
95+ fun `should handle exception when retrieving logs` () = runTest {
9596 // Given
9697 val errorMessage = " Database connection error"
97- every { consoleIO.read() } returnsMany listOf (projectIdString, " exit" )
98- every { viewAuditLogsByProjectUseCase(projectId) } throws RuntimeException (errorMessage)
98+ coEvery { consoleIO.read() } returnsMany listOf (projectIdString, " exit" )
99+ coEvery { viewAuditLogsByProjectUseCase(projectId) } throws RuntimeException (errorMessage)
99100
100101 // When
101102 viewAuditLogsByProjectUI.invoke()
102103
103104 // Then
104- verifySequence {
105+ coVerifySequence {
105106 consoleIO.write(" Enter project ID (or type 'exit' to quit): " )
106107 consoleIO.read()
107108 viewAuditLogsByProjectUseCase(projectId)
@@ -112,16 +113,16 @@ class ViewAuditLogsByProjectUITest {
112113 }
113114
114115 @Test
115- fun `should handle invalid UUID input and retry` () {
116+ fun `should handle invalid UUID input and retry` () = runTest {
116117 // Given
117- every { consoleIO.read() } returnsMany listOf (" invalid-uuid" , projectIdString, " exit" )
118- every { viewAuditLogsByProjectUseCase(projectId) } returns sampleAuditLogs
118+ coEvery { consoleIO.read() } returnsMany listOf (" invalid-uuid" , projectIdString, " exit" )
119+ coEvery { viewAuditLogsByProjectUseCase(projectId) } returns sampleAuditLogs
119120
120121 // When
121122 viewAuditLogsByProjectUI.invoke()
122123
123124 // Then
124- verifySequence {
125+ coVerifySequence {
125126 consoleIO.write(" Enter project ID (or type 'exit' to quit): " )
126127 consoleIO.read()
127128 consoleIO.write(match { it.contains(" ❌ Invalid UUID format" ) })
@@ -139,42 +140,42 @@ class ViewAuditLogsByProjectUITest {
139140 }
140141
141142 @Test
142- fun `should exit immediately when exit command is entered` () {
143+ fun `should exit immediately when exit command is entered` () = runTest {
143144 // Given
144- every { consoleIO.read() } returns " exit"
145+ coEvery { consoleIO.read() } returns " exit"
145146
146147 // When
147148 viewAuditLogsByProjectUI.invoke()
148149
149150 // Then
150- verifySequence {
151+ coVerifySequence {
151152 consoleIO.write(" Enter project ID (or type 'exit' to quit): " )
152153 consoleIO.read()
153154 }
154- verify (exactly = 0 ) {
155+ coVerify (exactly = 0 ) {
155156 viewAuditLogsByProjectUseCase(any())
156157 }
157158 }
158159
159160 @Test
160- fun `should handle multiple valid queries before exiting` () {
161+ fun `should handle multiple valid queries before exiting` () = runTest {
161162 // Given
162163 val secondProjectId = UUID .randomUUID()
163- every { consoleIO.read() } returnsMany listOf (
164+ coEvery { consoleIO.read() } returnsMany listOf (
164165 projectIdString,
165166 secondProjectId.toString(),
166167 " exit"
167168 )
168- every { viewAuditLogsByProjectUseCase(projectId) } returns sampleAuditLogs
169- every { viewAuditLogsByProjectUseCase(secondProjectId) } returns listOf (sampleAuditLogs.first())
169+ coEvery { viewAuditLogsByProjectUseCase(projectId) } returns sampleAuditLogs
170+ coEvery { viewAuditLogsByProjectUseCase(secondProjectId) } returns listOf (sampleAuditLogs.first())
170171
171172 // When
172173 viewAuditLogsByProjectUI.invoke()
173174
174175 // Then
175- verify (exactly = 3 ) { consoleIO.write(" Enter project ID (or type 'exit' to quit): " ) }
176- verify (exactly = 3 ) { consoleIO.read() }
177- verify (exactly = 1 ) { viewAuditLogsByProjectUseCase(projectId) }
178- verify (exactly = 1 ) { viewAuditLogsByProjectUseCase(secondProjectId) }
176+ coVerify (exactly = 3 ) { consoleIO.write(" Enter project ID (or type 'exit' to quit): " ) }
177+ coVerify (exactly = 3 ) { consoleIO.read() }
178+ coVerify (exactly = 1 ) { viewAuditLogsByProjectUseCase(projectId) }
179+ coVerify (exactly = 1 ) { viewAuditLogsByProjectUseCase(secondProjectId) }
179180 }
180- }
181+ }
0 commit comments