Skip to content

Commit 6efd912

Browse files
committed
refactor(regionProvider): use globalState abstraction
1 parent 0097c6f commit 6efd912

File tree

6 files changed

+18
-21
lines changed

6 files changed

+18
-21
lines changed

packages/core/src/shared/constants.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import * as vscode from 'vscode'
77

88
import { isCloud9 } from './extensionUtilities'
99

10-
export const regionSettingKey = 'region'
1110
export const profileSettingKey = 'profile'
1211
export const productName: string = 'aws-toolkit-vscode'
1312

packages/core/src/shared/regions/regionProvider.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ const localize = nls.loadMessageBundle()
1111
import * as vscode from 'vscode'
1212
import { getLogger } from '../logger'
1313
import { Endpoints, loadEndpoints, Region } from './endpoints'
14-
import { regionSettingKey } from '../constants'
1514
import { AwsContext } from '../awsContext'
1615
import { getIdeProperties, isAmazonQ, isCloud9 } from '../extensionUtilities'
1716
import { ResourceFetcher } from '../resourcefetcher/resourcefetcher'
@@ -38,7 +37,6 @@ export class RegionProvider {
3837

3938
public constructor(
4039
endpoints: Endpoints = { partitions: [] },
41-
private readonly globalState = globals.context.globalState,
4240
private readonly awsContext: Pick<AwsContext, 'getCredentialDefaultRegion'> = globals.awsContext
4341
) {
4442
this.loadFromEndpoints(endpoints)
@@ -83,11 +81,11 @@ export class RegionProvider {
8381
}
8482

8583
public getExplorerRegions(): string[] {
86-
return this.globalState.get<string[]>(regionSettingKey, [])
84+
return globals.globalState.tryGet<string[]>('region', Object, [])
8785
}
8886

8987
public async updateExplorerRegions(regions: string[]): Promise<void> {
90-
return this.globalState.update(regionSettingKey, Array.from(new Set(regions)))
88+
return globals.globalState.update('region', Array.from(new Set(regions)))
9189
}
9290

9391
/**
@@ -114,7 +112,7 @@ export class RegionProvider {
114112
return this.lastTouchedRegion
115113
}
116114

117-
const lastWizardResponse = this.globalState.get<Region>('lastSelectedRegion')
115+
const lastWizardResponse = globals.globalState.tryGet<Region>('lastSelectedRegion', Object)
118116
if (lastWizardResponse && lastWizardResponse.id) {
119117
return lastWizardResponse.id
120118
}

packages/core/src/test/awsExplorer/awsExplorer.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import * as sinon from 'sinon'
88
import { AwsExplorer } from '../../awsexplorer/awsExplorer'
99
import { RegionNode } from '../../awsexplorer/regionNode'
1010
import { RegionProvider } from '../../shared/regions/regionProvider'
11-
import { FakeExtensionContext, FakeMemento } from '../fakeExtensionContext'
11+
import { FakeExtensionContext } from '../fakeExtensionContext'
1212
import {
1313
createTestRegionProvider,
1414
DEFAULT_TEST_REGION_CODE,
@@ -32,7 +32,7 @@ describe('AwsExplorer', function () {
3232
this.skip()
3333

3434
const awsContext = makeFakeAwsContextWithPlaceholderIds({} as any as AWS.Credentials)
35-
const regionProvider = createTestRegionProvider({ awsContext, globalState: new FakeMemento() })
35+
const regionProvider = createTestRegionProvider({ awsContext })
3636
await regionProvider.updateExplorerRegions([DEFAULT_TEST_REGION_CODE])
3737

3838
const fakeContext = await FakeExtensionContext.create()

packages/core/src/test/fakeExtensionContext.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ export class FakeExtensionContext implements vscode.ExtensionContext {
126126
validator: new FakeSamCliValidator(minSamCliVersionForGoSupport),
127127
} as SamCliContext
128128
}
129-
const regionProvider = createTestRegionProvider({ globalState: ctx.globalState, awsContext })
129+
const regionProvider = createTestRegionProvider({ awsContext })
130130
const outputChannel = new MockOutputChannel()
131131
const fakeTelemetryPublisher = new FakeTelemetryPublisher()
132132
const telemetryService = await DefaultTelemetryService.create(

packages/core/src/test/shared/regions/regionProvider.test.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import assert from 'assert'
77
import { RegionProvider } from '../../../shared/regions/regionProvider'
88
import { createRegionPrompter } from '../../../shared/ui/common/region'
9-
import { FakeMemento } from '../../fakeExtensionContext'
109
import { createQuickPickPrompterTester } from '../ui/testUtils'
1110
import { createSsoProfile, createTestAuth } from '../../credentials/testUtil'
1211
import { Auth } from '../../../auth/auth'
@@ -149,7 +148,7 @@ describe('RegionProvider', async function () {
149148
let regionProvider: RegionProvider
150149

151150
beforeEach(function () {
152-
regionProvider = new RegionProvider(endpoints, new FakeMemento())
151+
regionProvider = new RegionProvider(endpoints)
153152
})
154153

155154
it('remembers saved regions', async function () {
@@ -165,6 +164,11 @@ describe('RegionProvider', async function () {
165164
})
166165

167166
describe('guessDefaultRegion', function () {
167+
beforeEach(async function () {
168+
// guessDefaultRegion is informed by the current SSO connection.
169+
await Auth.instance.logout()
170+
})
171+
168172
afterEach(() => {
169173
sinon.restore()
170174
})
@@ -199,27 +203,27 @@ describe('RegionProvider', async function () {
199203
})
200204

201205
it('prioritizes the AWS explorer region if there is only one', async function () {
202-
const regionProvider = new RegionProvider(endpoints, new FakeMemento())
206+
const regionProvider = new RegionProvider(endpoints)
203207
await regionProvider.updateExplorerRegions(['us-east-2'])
204208
regionProvider.setLastTouchedRegion('us-west-1')
205209
assert.strictEqual(regionProvider.guessDefaultRegion(), 'us-east-2')
206210
})
207211

208212
it('returns undefined when unable to determine last used region', function () {
209-
const regionProvider = new RegionProvider(endpoints, new FakeMemento())
213+
const regionProvider = new RegionProvider(endpoints)
210214
assert.strictEqual(regionProvider.guessDefaultRegion(), undefined)
211215
})
212216

213217
it('returns undefined when no active amazon Q connection', function () {
214-
const regionProvider = new RegionProvider(endpoints, new FakeMemento())
218+
const regionProvider = new RegionProvider(endpoints)
215219
sinon.stub(extUtils, 'isAmazonQ').returns(true)
216220

217221
assert.strictEqual(regionProvider.guessDefaultRegion(), undefined)
218222
})
219223

220224
it('returns connection region with active amazon Q connection', async function () {
221225
const region = 'us-west-2'
222-
const regionProvider = new RegionProvider(endpoints, new FakeMemento())
226+
const regionProvider = new RegionProvider(endpoints)
223227
const auth = createTestAuth()
224228
await auth.useConnection(await auth.createConnection(createSsoProfile({ ssoRegion: region })))
225229

packages/core/src/test/shared/regions/testUtil.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
import { Memento } from 'vscode'
76
import { AwsContext } from '../../../shared/awsContext'
87
import { RegionProvider } from '../../../shared/regions/regionProvider'
98

@@ -41,9 +40,6 @@ const endpoints = {
4140
],
4241
}
4342

44-
export function createTestRegionProvider(opts?: {
45-
globalState?: Memento & { setKeysForSync(keys: readonly string[]): void }
46-
awsContext?: AwsContext
47-
}): RegionProvider {
48-
return new RegionProvider(endpoints, opts?.globalState, opts?.awsContext)
43+
export function createTestRegionProvider(opts?: { awsContext?: AwsContext }): RegionProvider {
44+
return new RegionProvider(endpoints, opts?.awsContext)
4945
}

0 commit comments

Comments
 (0)