3
3
4
4
package software.aws.toolkits.jetbrains.services.amazonq.lsp.artifacts
5
5
6
+ import com.intellij.openapi.project.Project
6
7
import com.intellij.util.text.SemVer
7
8
import io.mockk.Runs
9
+ import io.mockk.coEvery
8
10
import io.mockk.every
9
11
import io.mockk.just
12
+ import io.mockk.mockk
10
13
import io.mockk.mockkStatic
11
14
import io.mockk.spyk
12
15
import io.mockk.verify
16
+ import kotlinx.coroutines.runBlocking
13
17
import org.assertj.core.api.Assertions.assertThatThrownBy
14
18
import org.jetbrains.annotations.TestOnly
15
19
import org.junit.jupiter.api.BeforeEach
@@ -29,6 +33,7 @@ class ArtifactManagerTest {
29
33
private lateinit var artifactManager: ArtifactManager
30
34
private lateinit var manifestFetcher: ManifestFetcher
31
35
private lateinit var manifestVersionRanges: SupportedManifestVersionRange
36
+ private lateinit var mockProject: Project
32
37
33
38
@BeforeEach
34
39
fun setUp () {
@@ -38,15 +43,19 @@ class ArtifactManagerTest {
38
43
startVersion = SemVer (" 1.0.0" , 1 , 0 , 0 ),
39
44
endVersion = SemVer (" 2.0.0" , 2 , 0 , 0 )
40
45
)
41
- artifactManager = ArtifactManager (manifestFetcher, artifactHelper, manifestVersionRanges)
46
+ mockProject = mockk<Project >(relaxed = true ) {
47
+ every { basePath } returns tempDir.toString()
48
+ every { name } returns " TestProject"
49
+ }
50
+ artifactManager = ArtifactManager (mockProject, manifestFetcher, artifactHelper, manifestVersionRanges)
42
51
}
43
52
44
53
@Test
45
54
fun `fetch artifact fetcher throws exception if manifest is null` () {
46
55
every { manifestFetcher.fetch() }.returns(null )
47
56
48
57
assertThatThrownBy {
49
- artifactManager.fetchArtifact()
58
+ runBlocking { artifactManager.fetchArtifact() }
50
59
}
51
60
.isInstanceOf(LspException ::class .java)
52
61
.hasFieldOrPropertyWithValue(" errorCode" , LspException .ErrorCode .MANIFEST_FETCH_FAILED )
@@ -55,14 +64,14 @@ class ArtifactManagerTest {
55
64
@Test
56
65
fun `fetch artifact does not have any valid lsp versions` () {
57
66
every { manifestFetcher.fetch() }.returns(ManifestManager .Manifest ())
58
- artifactManager = spyk(ArtifactManager (manifestFetcher, artifactHelper, manifestVersionRanges))
67
+ artifactManager = spyk(ArtifactManager (mockProject, manifestFetcher, artifactHelper, manifestVersionRanges))
59
68
60
69
every { artifactManager.getLSPVersionsFromManifestWithSpecifiedRange(any()) }.returns(
61
70
ArtifactManager .LSPVersions (deListedVersions = emptyList(), inRangeVersions = emptyList())
62
71
)
63
72
64
73
assertThatThrownBy {
65
- artifactManager.fetchArtifact()
74
+ runBlocking { artifactManager.fetchArtifact() }
66
75
}
67
76
.isInstanceOf(LspException ::class .java)
68
77
.hasFieldOrPropertyWithValue(" errorCode" , LspException .ErrorCode .NO_COMPATIBLE_LSP_VERSION )
@@ -75,7 +84,7 @@ class ArtifactManagerTest {
75
84
every { manifestFetcher.fetch() }.returns(ManifestManager .Manifest ())
76
85
every { artifactHelper.getAllLocalLspArtifactsWithinManifestRange(any()) }.returns(expectedResult)
77
86
78
- artifactManager.fetchArtifact()
87
+ runBlocking { artifactManager.fetchArtifact() }
79
88
80
89
verify(exactly = 1 ) { manifestFetcher.fetch() }
81
90
verify(exactly = 1 ) { artifactHelper.getAllLocalLspArtifactsWithinManifestRange(any()) }
@@ -86,7 +95,7 @@ class ArtifactManagerTest {
86
95
val target = ManifestManager .VersionTarget (platform = " temp" , arch = " temp" )
87
96
val versions = listOf (ManifestManager .Version (" 1.0.0" , targets = listOf (target)))
88
97
89
- artifactManager = spyk(ArtifactManager (manifestFetcher, artifactHelper, manifestVersionRanges))
98
+ artifactManager = spyk(ArtifactManager (mockProject, manifestFetcher, artifactHelper, manifestVersionRanges))
90
99
91
100
every { artifactManager.getLSPVersionsFromManifestWithSpecifiedRange(any()) }.returns(
92
101
ArtifactManager .LSPVersions (deListedVersions = emptyList(), inRangeVersions = versions)
@@ -98,12 +107,12 @@ class ArtifactManagerTest {
98
107
every { getCurrentArchitecture() }.returns(" temp" )
99
108
100
109
every { artifactHelper.getExistingLspArtifacts(any(), any()) }.returns(false )
101
- every { artifactHelper.tryDownloadLspArtifacts(any(), any()) } just Runs
110
+ coEvery { artifactHelper.tryDownloadLspArtifacts(any(), any(), any()) } just Runs
102
111
every { artifactHelper.deleteOlderLspArtifacts(any()) } just Runs
103
112
104
- artifactManager.fetchArtifact()
113
+ runBlocking { artifactManager.fetchArtifact() }
105
114
106
- verify(exactly = 1 ) { artifactHelper.tryDownloadLspArtifacts(any(), any()) }
115
+ verify(exactly = 1 ) { runBlocking { artifactHelper.tryDownloadLspArtifacts(any(), any(), any()) } }
107
116
verify(exactly = 1 ) { artifactHelper.deleteOlderLspArtifacts(any()) }
108
117
}
109
118
@@ -112,7 +121,7 @@ class ArtifactManagerTest {
112
121
val target = ManifestManager .VersionTarget (platform = " temp" , arch = " temp" )
113
122
val versions = listOf (ManifestManager .Version (" 1.0.0" , targets = listOf (target)))
114
123
115
- artifactManager = spyk(ArtifactManager (manifestFetcher, artifactHelper, manifestVersionRanges))
124
+ artifactManager = spyk(ArtifactManager (mockProject, manifestFetcher, artifactHelper, manifestVersionRanges))
116
125
117
126
every { artifactManager.getLSPVersionsFromManifestWithSpecifiedRange(any()) }.returns(
118
127
ArtifactManager .LSPVersions (deListedVersions = emptyList(), inRangeVersions = versions)
@@ -126,9 +135,9 @@ class ArtifactManagerTest {
126
135
every { artifactHelper.getExistingLspArtifacts(any(), any()) }.returns(true )
127
136
every { artifactHelper.deleteOlderLspArtifacts(any()) } just Runs
128
137
129
- artifactManager.fetchArtifact()
138
+ runBlocking { artifactManager.fetchArtifact() }
130
139
131
- verify(exactly = 0 ) { artifactHelper.tryDownloadLspArtifacts(any(), any()) }
140
+ verify(exactly = 0 ) { runBlocking { artifactHelper.tryDownloadLspArtifacts(any(), any(), any()) } }
132
141
verify(exactly = 1 ) { artifactHelper.deleteOlderLspArtifacts(any()) }
133
142
}
134
143
}
0 commit comments