Skip to content

Commit 42b9f81

Browse files
committed
fix(dev): update tests
1 parent 6f99d90 commit 42b9f81

File tree

8 files changed

+151
-129
lines changed

8 files changed

+151
-129
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/session/CodeGenerationState.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class CodeGenerationState(
3838
val messenger: MessagePublisher,
3939
override var codeGenerationRemainingIterationCount: Int? = null,
4040
override var codeGenerationTotalIterationCount: Int? = null,
41-
var currentCodeGenerationId: UUID? = null,
41+
var currentCodeGenerationId: String? = "EMPTY_CURRENT_CODE_GENERATION_ID",
4242
override var token: CancellationTokenSource?,
4343
) : SessionState {
4444
override val phase = SessionStatePhase.CODEGEN
@@ -64,7 +64,7 @@ class CodeGenerationState(
6464
)
6565

6666
if (action.token?.token()?.isCancellationRequested != true) {
67-
this.currentCodeGenerationId = codeGenerationId
67+
this.currentCodeGenerationId = codeGenerationId.toString()
6868
}
6969

7070
messenger.sendAnswerPart(

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/session/PrepareCodeGenerationState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class PrepareCodeGenerationState(
5757
config.conversationId,
5858
zipFileChecksum,
5959
zipFileLength,
60-
uploadId
60+
uploadId.toString()
6161
)
6262

6363
uploadArtifactToS3(uploadUrlResponse.uploadUrl(), fileToUpload, zipFileChecksum, zipFileLength, uploadUrlResponse.kmsKeyArn())

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/util/FeatureDevService.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.session.Export
3131
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.getStartUrl
3232
import software.aws.toolkits.telemetry.AmazonqTelemetry
3333
import software.aws.toolkits.telemetry.Result
34-
import java.util.UUID
3534

3635
private val logger = getLogger<FeatureDevClient>()
3736

@@ -83,15 +82,15 @@ class FeatureDevService(val proxyClient: FeatureDevClient, val project: Project)
8382
}
8483
}
8584

86-
fun createUploadUrl(conversationId: String, contentChecksumSha256: String, contentLength: Long, uploadId: UUID):
85+
fun createUploadUrl(conversationId: String, contentChecksumSha256: String, contentLength: Long, uploadId: String):
8786
CreateUploadUrlResponse {
8887
try {
8988
logger.debug { "Executing createUploadUrl with conversationId $conversationId" }
9089
val uploadUrlResponse = proxyClient.createTaskAssistUploadUrl(
9190
conversationId,
9291
contentChecksumSha256,
9392
contentLength,
94-
uploadId.toString()
93+
uploadId
9594
)
9695
logger.debug {
9796
"$FEATURE_NAME: Created upload url: {uploadId: $uploadId, requestId: ${uploadUrlResponse.responseMetadata().requestId()}}"

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/FeatureDevTestBase.kt

Lines changed: 100 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ import software.aws.toolkits.jetbrains.utils.rules.JavaCodeInsightTestFixtureRul
4242
import software.aws.toolkits.jetbrains.utils.rules.addModule
4343
import java.io.File
4444
import java.time.Instant
45-
import java.util.UUID
4645

4746
open class FeatureDevTestBase(
4847
@Rule @JvmField
@@ -61,7 +60,6 @@ open class FeatureDevTestBase(
6160
internal val testConversationId = "1234"
6261
internal val userMessage = "test-user-message"
6362
internal val codeGenerationId = "1234"
64-
internal val currentCodeGenerationId = UUID.randomUUID()
6563
internal val testUploadId = "5678"
6664
internal val testRepositorySize = 20.0 // Picked a random size
6765
internal val otherStatus = "Other"
@@ -71,55 +69,90 @@ open class FeatureDevTestBase(
7169
internal val testReferences = listOf(CodeReferenceGenerated())
7270
internal val testChecksumSha = "test-sha"
7371
internal val testContentLength: Long = 40
74-
internal val uploadId = UUID.randomUUID()
75-
76-
internal val exampleSendTelemetryEventResponse = SendTelemetryEventResponse.builder()
77-
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
78-
.build() as SendTelemetryEventResponse
79-
80-
internal val exampleCreateTaskAssistConversationResponse = CreateTaskAssistConversationResponse.builder()
81-
.conversationId(testConversationId)
82-
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
83-
.build() as CreateTaskAssistConversationResponse
84-
85-
internal val exampleCreateUploadUrlResponse = CreateUploadUrlResponse.builder()
86-
.uploadUrl("https://smth.com")
87-
.uploadId(testUploadId)
88-
.kmsKeyArn("0000000000000000000000000000000000:key/1234abcd")
89-
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
90-
.build() as CreateUploadUrlResponse
91-
92-
internal val exampleStartTaskAssistConversationResponse = StartTaskAssistCodeGenerationResponse.builder()
93-
.conversationId(testConversationId)
94-
.codeGenerationId(codeGenerationId)
95-
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
96-
.build() as StartTaskAssistCodeGenerationResponse
97-
98-
internal val exampleGetTaskAssistConversationResponse = GetTaskAssistCodeGenerationResponse.builder()
99-
.conversationId(testConversationId)
100-
.codeGenerationStatus(CodeGenerationStatus.builder().status(CodeGenerationWorkflowStatus.IN_PROGRESS).currentStage("InProgress").build())
101-
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
102-
.build() as GetTaskAssistCodeGenerationResponse
103-
104-
internal val exampleCompleteGetTaskAssistCodeGenerationResponse = GetTaskAssistCodeGenerationResponse.builder()
105-
.conversationId(testConversationId)
106-
.codeGenerationStatus(CodeGenerationStatus.builder().status(CodeGenerationWorkflowStatus.COMPLETE).currentStage("Complete").build())
107-
.codeGenerationRemainingIterationCount(2)
108-
.codeGenerationTotalIterationCount(3)
109-
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
110-
.build() as GetTaskAssistCodeGenerationResponse
111-
112-
internal val exampleFailedGetTaskAssistCodeGenerationResponse = GetTaskAssistCodeGenerationResponse.builder()
113-
.conversationId(testConversationId)
114-
.codeGenerationStatus(CodeGenerationStatus.builder().status(CodeGenerationWorkflowStatus.FAILED).currentStage("Failed").build())
115-
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
116-
.build() as GetTaskAssistCodeGenerationResponse
117-
118-
internal val exampleOtherGetTaskAssistCodeGenerationResponse = GetTaskAssistCodeGenerationResponse.builder()
119-
.conversationId(testConversationId)
120-
.codeGenerationStatus(CodeGenerationStatus.builder().status(CodeGenerationWorkflowStatus.UNKNOWN_TO_SDK_VERSION).currentStage(otherStatus).build())
121-
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
122-
.build() as GetTaskAssistCodeGenerationResponse
72+
73+
internal val exampleSendTelemetryEventResponse =
74+
SendTelemetryEventResponse
75+
.builder()
76+
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
77+
.build() as SendTelemetryEventResponse
78+
79+
internal val exampleCreateTaskAssistConversationResponse =
80+
CreateTaskAssistConversationResponse
81+
.builder()
82+
.conversationId(testConversationId)
83+
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
84+
.build() as CreateTaskAssistConversationResponse
85+
86+
internal val exampleCreateUploadUrlResponse =
87+
CreateUploadUrlResponse
88+
.builder()
89+
.uploadUrl("https://smth.com")
90+
.uploadId(testUploadId)
91+
.kmsKeyArn("0000000000000000000000000000000000:key/1234abcd")
92+
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
93+
.build() as CreateUploadUrlResponse
94+
95+
internal val exampleStartTaskAssistConversationResponse =
96+
StartTaskAssistCodeGenerationResponse
97+
.builder()
98+
.conversationId(testConversationId)
99+
.codeGenerationId(codeGenerationId)
100+
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
101+
.build() as StartTaskAssistCodeGenerationResponse
102+
103+
internal val exampleGetTaskAssistConversationResponse =
104+
GetTaskAssistCodeGenerationResponse
105+
.builder()
106+
.conversationId(testConversationId)
107+
.codeGenerationStatus(
108+
CodeGenerationStatus
109+
.builder()
110+
.status(CodeGenerationWorkflowStatus.IN_PROGRESS)
111+
.currentStage("InProgress")
112+
.build(),
113+
).responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
114+
.build() as GetTaskAssistCodeGenerationResponse
115+
116+
internal val exampleCompleteGetTaskAssistCodeGenerationResponse =
117+
GetTaskAssistCodeGenerationResponse
118+
.builder()
119+
.conversationId(testConversationId)
120+
.codeGenerationStatus(
121+
CodeGenerationStatus
122+
.builder()
123+
.status(CodeGenerationWorkflowStatus.COMPLETE)
124+
.currentStage("Complete")
125+
.build(),
126+
).codeGenerationRemainingIterationCount(2)
127+
.codeGenerationTotalIterationCount(3)
128+
.responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
129+
.build() as GetTaskAssistCodeGenerationResponse
130+
131+
internal val exampleFailedGetTaskAssistCodeGenerationResponse =
132+
GetTaskAssistCodeGenerationResponse
133+
.builder()
134+
.conversationId(testConversationId)
135+
.codeGenerationStatus(
136+
CodeGenerationStatus
137+
.builder()
138+
.status(CodeGenerationWorkflowStatus.FAILED)
139+
.currentStage("Failed")
140+
.build(),
141+
).responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
142+
.build() as GetTaskAssistCodeGenerationResponse
143+
144+
internal val exampleOtherGetTaskAssistCodeGenerationResponse =
145+
GetTaskAssistCodeGenerationResponse
146+
.builder()
147+
.conversationId(testConversationId)
148+
.codeGenerationStatus(
149+
CodeGenerationStatus
150+
.builder()
151+
.status(CodeGenerationWorkflowStatus.UNKNOWN_TO_SDK_VERSION)
152+
.currentStage(otherStatus)
153+
.build(),
154+
).responseMetadata(DefaultAwsResponseMetadata.create(mapOf(AwsHeader.AWS_REQUEST_ID to testRequestId)))
155+
.build() as GetTaskAssistCodeGenerationResponse
123156

124157
internal val exampleExportResultArchiveResponse = mutableListOf(byteArrayOf(100))
125158

@@ -130,18 +163,22 @@ open class FeatureDevTestBase(
130163
project = projectRule.project
131164
toolkitConnectionManager = spy(ToolkitConnectionManager.getInstance(project))
132165
val accessToken = DeviceAuthorizationGrantToken(aString(), aString(), aString(), aString(), Instant.MAX, Instant.now())
133-
val provider = mock<BearerTokenProvider> {
134-
doReturn(accessToken).whenever(it).refresh()
135-
}
136-
val mockBearerProvider = mock<ToolkitBearerTokenProvider> {
137-
doReturn(provider).whenever(it).delegate
138-
}
139-
val connectionSettingsMock = mock<TokenConnectionSettings> {
140-
whenever(it.tokenProvider).thenReturn(mockBearerProvider)
141-
}
142-
val toolkitConnection = mock<AwsBearerTokenConnection> {
143-
doReturn(connectionSettingsMock).whenever(it).getConnectionSettings()
144-
}
166+
val provider =
167+
mock<BearerTokenProvider> {
168+
doReturn(accessToken).whenever(it).refresh()
169+
}
170+
val mockBearerProvider =
171+
mock<ToolkitBearerTokenProvider> {
172+
doReturn(provider).whenever(it).delegate
173+
}
174+
val connectionSettingsMock =
175+
mock<TokenConnectionSettings> {
176+
whenever(it.tokenProvider).thenReturn(mockBearerProvider)
177+
}
178+
val toolkitConnection =
179+
mock<AwsBearerTokenConnection> {
180+
doReturn(connectionSettingsMock).whenever(it).getConnectionSettings()
181+
}
145182
doReturn(toolkitConnection).whenever(toolkitConnectionManager).activeConnectionForFeature(any())
146183
project.replaceService(ToolkitConnectionManager::class.java, toolkitConnectionManager, disposableRule.disposable)
147184
clientAdaptorSpy = spy(FeatureDevClient.getInstance(project))

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/controller/FeatureDevControllerTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ class FeatureDevControllerTest : FeatureDevTestBase() {
225225
PrepareCodeGenerationState(
226226
testTabId,
227227
GradleConnector.newCancellationTokenSource(),
228-
mock(),
228+
"test-command",
229229
sessionStateConfig,
230230
newFileContents,
231231
deletedFiles,
@@ -234,9 +234,10 @@ class FeatureDevControllerTest : FeatureDevTestBase() {
234234
0,
235235
messenger,
236236
0,
237-
0
237+
0,
238238
),
239239
)
240+
240241
doNothing().`when`(spySession).insertChanges(any(), any(), any())
241242

242243
spySession.preloader(userMessage, messenger)

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/session/CodeGenerationStateTest.kt

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,18 @@ class CodeGenerationStateTest : FeatureDevTestBase() {
4848
val repoContext = mock<FeatureDevSessionContext>()
4949
val sessionStateConfig = SessionStateConfig(testConversationId, repoContext, featureDevService)
5050

51-
codeGenerationState = CodeGenerationState(
52-
testTabId,
53-
"",
54-
sessionStateConfig,
55-
testUploadId,
56-
0,
57-
testRepositorySize,
58-
messenger,
59-
token = null
60-
)
51+
codeGenerationState =
52+
CodeGenerationState(
53+
testTabId,
54+
"",
55+
sessionStateConfig,
56+
testUploadId,
57+
0,
58+
testRepositorySize,
59+
messenger,
60+
token = null,
61+
currentCodeGenerationId = "EMPTY_CURRENT_CODE_GENERATION_ID",
62+
)
6163

6264
mockkStatic(MessagePublisher::sendAnswerPart)
6365
coEvery { messenger.sendAnswerPart(any(), any()) } just runs
@@ -80,13 +82,12 @@ class CodeGenerationStateTest : FeatureDevTestBase() {
8082
val actual = codeGenerationState.interact(action)
8183
assertThat(actual.nextState).isInstanceOf(PrepareCodeGenerationState::class.java)
8284
val nextState = actual.nextState as PrepareCodeGenerationState
83-
assertThat(nextState.uploadId).isEqualTo(testUploadId)
8485
assertThat(nextState.phase).isEqualTo(SessionStatePhase.CODEGEN)
8586
assertThat(nextState.filePaths).isEqualTo(
86-
listOf(NewFileZipInfo("test.ts", "This is a comment", false))
87+
listOf(NewFileZipInfo("test.ts", "This is a comment", false)),
8788
)
8889
assertThat(nextState.deletedFiles).isEqualTo(
89-
listOf(DeletedFileInfo("deleted.ts", false))
90+
listOf(DeletedFileInfo("deleted.ts", false)),
9091
)
9192
assertThat(nextState.references).isEqualTo(testReferences)
9293
assertThat(nextState.codeGenerationRemainingIterationCount).isEqualTo(2)
@@ -96,26 +97,22 @@ class CodeGenerationStateTest : FeatureDevTestBase() {
9697
}
9798
assertThat(codeGenerationState.phase).isEqualTo(SessionStatePhase.CODEGEN)
9899
coVerify(exactly = 1) { messenger.sendAnswerPart(testTabId, message("amazonqFeatureDev.code_generation.generating_code")) }
99-
verify(
100-
exactly = 1
101-
) { featureDevService.startTaskAssistCodeGeneration(testConversationId, testUploadId, userMessage, codeGenerationId, null) }
102-
verify(exactly = 1) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId.toString()) }
100+
101+
verify(exactly = 1) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId) }
103102
coVerify(exactly = 1) { featureDevService.exportTaskAssistArchiveResult(testConversationId) }
104103
}
105104

106105
@Test(expected = FeatureDevException::class)
107-
fun `test code generation failed`() = runTest {
108-
every { featureDevService.startTaskAssistCodeGeneration(any(), any(), any(), any(), any()) } returns exampleStartTaskAssistConversationResponse
109-
every { featureDevService.getTaskAssistCodeGeneration(any(), any()) } returns exampleFailedGetTaskAssistCodeGenerationResponse
106+
fun `test code generation failed`() =
107+
runTest {
108+
every { featureDevService.startTaskAssistCodeGeneration(any(), any(), any(), any(), any()) } returns exampleStartTaskAssistConversationResponse
109+
every { featureDevService.getTaskAssistCodeGeneration(any(), any()) } returns exampleFailedGetTaskAssistCodeGenerationResponse
110110

111-
codeGenerationState.interact(action)
111+
codeGenerationState.interact(action)
112112

113-
verify(
114-
exactly = 1
115-
) { featureDevService.startTaskAssistCodeGeneration(testConversationId, testUploadId, userMessage, codeGenerationId, null) }
116-
verify(exactly = 1) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId.toString()) }
117-
coVerify(exactly = 0) { featureDevService.exportTaskAssistArchiveResult(any()) }
118-
}
113+
verify(exactly = 1) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId) }
114+
coVerify(exactly = 0) { featureDevService.exportTaskAssistArchiveResult(any()) }
115+
}
119116

120117
@Test
121118
fun `test code generation returns any other handled status`() {
@@ -128,10 +125,7 @@ class CodeGenerationStateTest : FeatureDevTestBase() {
128125
}
129126
}.isExactlyInstanceOf(IllegalStateException::class.java).withFailMessage("Unknown status: $otherStatus")
130127

131-
verify(
132-
exactly = 1
133-
) { featureDevService.startTaskAssistCodeGeneration(testConversationId, testUploadId, userMessage, codeGenerationId, null) }
134-
verify(exactly = 1) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId.toString()) }
128+
verify(exactly = 1) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId) }
135129
coVerify(exactly = 0) { featureDevService.exportTaskAssistArchiveResult(any()) }
136130
}
137131

@@ -147,10 +141,7 @@ class CodeGenerationStateTest : FeatureDevTestBase() {
147141
codeGenerationState.interact(action)
148142
}
149143

150-
verify(
151-
exactly = 1
152-
) { featureDevService.startTaskAssistCodeGeneration(testConversationId, testUploadId, userMessage, codeGenerationId, null) }
153-
verify(exactly = 2) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId.toString()) }
144+
verify(exactly = 2) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId) }
154145
coVerify(exactly = 1) { featureDevService.exportTaskAssistArchiveResult(testConversationId) }
155146
}
156147

@@ -172,10 +163,7 @@ class CodeGenerationStateTest : FeatureDevTestBase() {
172163
assertThat(actual.interaction.content).isEqualTo("")
173164
}
174165

175-
verify(
176-
exactly = 1
177-
) { featureDevService.startTaskAssistCodeGeneration(testConversationId, testUploadId, userMessage, codeGenerationId, null) }
178-
verify(exactly = 180) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId.toString()) }
166+
verify(exactly = 180) { featureDevService.getTaskAssistCodeGeneration(testConversationId, codeGenerationId) }
179167
coVerify(exactly = 0) { featureDevService.exportTaskAssistArchiveResult(testConversationId) }
180168
}
181169
}

0 commit comments

Comments
 (0)