Skip to content

Commit ab89021

Browse files
committed
tst
1 parent 0cf1d1d commit ab89021

File tree

3 files changed

+92
-1
lines changed

3 files changed

+92
-1
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,22 @@ import com.intellij.openapi.wm.impl.status.widget.StatusBarWidgetsManager
1313
import com.intellij.testFramework.replaceService
1414
import com.intellij.testFramework.runInEdtAndWait
1515
import com.intellij.util.xmlb.XmlSerializer
16+
import io.mockk.every
17+
import io.mockk.junit4.MockKRule
18+
import io.mockk.mockkObject
1619
import org.assertj.core.api.Assertions.assertThat
1720
import org.jdom.output.XMLOutputter
1821
import org.junit.Before
1922
import org.junit.Ignore
23+
import org.junit.Rule
2024
import org.junit.Test
2125
import org.mockito.kotlin.any
2226
import org.mockito.kotlin.never
2327
import org.mockito.kotlin.spy
2428
import org.mockito.kotlin.verify
2529
import org.mockito.kotlin.whenever
2630
import software.aws.toolkits.jetbrains.core.ToolWindowHeadlessManagerImpl
31+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
2732
import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererLoginType
2833
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExploreActionState
2934
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isCodeWhispererEnabled
@@ -40,6 +45,9 @@ class CodeWhispererSettingsTest : CodeWhispererTestBase() {
4045
private lateinit var codewhispererServiceSpy: CodeWhispererService
4146
private lateinit var toolWindowHeadlessManager: ToolWindowHeadlessManagerImpl
4247

48+
@get:Rule
49+
val mockkRule = MockKRule(this)
50+
4351
@Before
4452
override fun setUp() {
4553
super.setUp()
@@ -212,6 +220,18 @@ class CodeWhispererSettingsTest : CodeWhispererTestBase() {
212220
assertThat(actual.autoBuildSetting).hasSize(1)
213221
assertThat(actual.autoBuildSetting["project1"]).isTrue()
214222
}
223+
224+
@Test
225+
fun `toggleMetricOptIn should trigger LSP didChangeConfiguration`() {
226+
mockkObject(AmazonQLspService)
227+
every { AmazonQLspService.didChangeConfiguration(any()) } returns Unit
228+
settingsManager.toggleMetricOptIn(true)
229+
settingsManager.toggleMetricOptIn(false)
230+
231+
io.mockk.verify(atLeast = 2) {
232+
AmazonQLspService.didChangeConfiguration(any())
233+
}
234+
}
215235
}
216236

217237
class CodeWhispererSettingUnitTest {

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,8 @@ private class AmazonQServerInstance(private val project: Project, private val cs
244244

245245
init {
246246
val cmd = GeneralCommandLine(
247-
"amazon-q-lsp",
247+
"/Users/richali/idetools/lsp-exp/contrib/servers/node",
248+
"/Users/richali/idetools/language-servers/app/aws-lsp-codewhisperer-runtimes/out/token-standalone.js",
248249
"--stdio",
249250
"--set-credentials-encryption-key",
250251
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
@file:Suppress("BannedImports")
4+
5+
package software.aws.toolkits.jetbrains.services.amazonq.lsp
6+
7+
import com.google.gson.Gson
8+
import com.intellij.testFramework.ApplicationExtension
9+
import org.assertj.core.api.Assertions.assertThat
10+
import org.eclipse.lsp4j.ConfigurationItem
11+
import org.eclipse.lsp4j.ConfigurationParams
12+
import org.junit.jupiter.api.Test
13+
import org.junit.jupiter.api.extension.ExtendWith
14+
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
15+
16+
@ExtendWith(ApplicationExtension::class)
17+
class AmazonQLanguageClientImplTest {
18+
private val sut = AmazonQLanguageClientImpl()
19+
20+
@Test
21+
fun `configuration null if no attributes requested`() {
22+
assertThat(sut.configuration(configurationParams()).get()).isNull()
23+
}
24+
25+
@Test
26+
fun `configuration for codeWhisperer respects opt-out`() {
27+
CodeWhispererSettings.getInstance().toggleMetricOptIn(false)
28+
assertThat(sut.configuration(configurationParams("aws.codeWhisperer")).get())
29+
.singleElement()
30+
.isEqualTo(
31+
CodeWhispererLspConfiguration(shouldShareData = false)
32+
)
33+
}
34+
35+
@Test
36+
fun `configuration for codeWhisperer respects opt-in`() {
37+
CodeWhispererSettings.getInstance().toggleMetricOptIn(true)
38+
assertThat(sut.configuration(configurationParams("aws.codeWhisperer")).get())
39+
.singleElement()
40+
.isEqualTo(
41+
CodeWhispererLspConfiguration(shouldShareData = true)
42+
)
43+
}
44+
45+
@Test
46+
fun `configuration empty if attributes unknown`() {
47+
CodeWhispererSettings.getInstance().toggleMetricOptIn(true)
48+
assertThat(sut.configuration(configurationParams("something random")).get()).isEmpty()
49+
}
50+
51+
@Test
52+
fun `Gson serializes CodeWhispererLspConfiguration serializes correctly`() {
53+
val sut = CodeWhispererLspConfiguration(shouldShareData = true)
54+
assertThat(Gson().toJson(sut)).isEqualToIgnoringWhitespace(
55+
"""
56+
{
57+
"shareCodeWhispererContentWithAWS": true
58+
}
59+
""".trimIndent()
60+
)
61+
}
62+
63+
private fun configurationParams(vararg attributes: String) = ConfigurationParams(
64+
attributes.map {
65+
ConfigurationItem().apply {
66+
section = it
67+
}
68+
}
69+
)
70+
}

0 commit comments

Comments
 (0)