mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-13 19:48:37 -05:00
* Enables being able to view and edit Coordinator node scheduling params (#15114) * Trying to save per role settings * Updated spec * Cleaning up * Removed unneccessary code and comments * Added separate type for { w?: string, c?: string}, PR fixes * Added methods to refresh mr,ml,cr,cl versus per role * Fixed spec * Put back optional properties, removed passing empty string to reset scheduling params * Spacing * vBump arc * Included roles in fake show output for testing (#15196) * Update arc specs (#15225) * Update azdata Arc specs to match April azdata * vcores -> cpu * fix spacing * Consolidate types and update storage volumes * Fix compile * Update min azdata version Co-authored-by: nasc17 <69922333+nasc17@users.noreply.github.com> Co-authored-by: nasc17 <nasc@microsoft.com>
81 lines
3.5 KiB
TypeScript
81 lines
3.5 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { PGResourceInfo, ResourceType } from 'arc';
|
|
import * as azdataExt from 'azdata-ext';
|
|
import * as should from 'should';
|
|
import * as sinon from 'sinon';
|
|
import * as TypeMoq from 'typemoq';
|
|
import * as vscode from 'vscode';
|
|
import { createModelViewMock } from '@microsoft/azdata-test/out/mocks/modelView/modelViewMock';
|
|
import { ControllerModel, Registration } from '../../../models/controllerModel';
|
|
import { PostgresModel } from '../../../models/postgresModel';
|
|
import { PostgresConnectionStringsPage } from '../../../ui/dashboards/postgres/postgresConnectionStringsPage';
|
|
import { AzureArcTreeDataProvider } from '../../../ui/tree/azureArcTreeDataProvider';
|
|
import { FakeControllerModel } from '../../mocks/fakeControllerModel';
|
|
import { FakeAzdataApi } from '../../mocks/fakeAzdataApi';
|
|
import { FakePostgresServerShowOutput } from '../../models/postgresModel.test';
|
|
|
|
describe('postgresConnectionStringsPage', function (): void {
|
|
let controllerModel: ControllerModel;
|
|
let postgresModel: PostgresModel;
|
|
let azdataApi: azdataExt.IAzdataApi;
|
|
let postgresConnectionStrings: PostgresConnectionStringsPage;
|
|
|
|
afterEach(function (): void {
|
|
sinon.restore();
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
// Stub the azdata CLI API
|
|
azdataApi = new FakeAzdataApi();
|
|
const azdataExt = TypeMoq.Mock.ofType<azdataExt.IExtension>();
|
|
azdataExt.setup(x => x.azdata).returns(() => azdataApi);
|
|
sinon.stub(vscode.extensions, 'getExtension').returns(<any>{ exports: azdataExt.object });
|
|
|
|
// Setup Controller Model
|
|
controllerModel = new FakeControllerModel();
|
|
|
|
//Stub calling azdata login and acquiring session
|
|
sinon.stub(controllerModel, 'login').returns(Promise.resolve());
|
|
|
|
// Setup PostgresModel
|
|
const postgresResource: PGResourceInfo = { name: 'pgt', resourceType: '' };
|
|
const registration: Registration = { instanceName: '', state: '', instanceType: ResourceType.postgresInstances };
|
|
postgresModel = new PostgresModel(controllerModel, postgresResource, registration, new AzureArcTreeDataProvider(TypeMoq.Mock.ofType<vscode.ExtensionContext>().object));
|
|
|
|
// Setup stub of show call
|
|
const postgresShow = sinon.stub().returns(FakePostgresServerShowOutput);
|
|
sinon.stub(azdataApi, 'arc').get(() => {
|
|
return { postgres: { server: { show(name: string) { return postgresShow(name); } } } };
|
|
});
|
|
|
|
// Setup the PostgresConnectionsStringsPage
|
|
let { modelViewMock } = createModelViewMock();
|
|
postgresConnectionStrings = new PostgresConnectionStringsPage(modelViewMock.object, undefined!, postgresModel);
|
|
});
|
|
|
|
describe('getConnectionStrings', function (): void {
|
|
|
|
it('Strings container should be empty since postgres model has not been refreshed', async function (): Promise<void> {
|
|
should(postgresConnectionStrings['getConnectionStrings']()).be.empty();
|
|
});
|
|
|
|
it('String contain correct ip and port', async function (): Promise<void> {
|
|
// Call to provide external endpoint
|
|
await postgresModel.refresh();
|
|
|
|
let endpoint = FakePostgresServerShowOutput.result.status.primaryEndpoint.split(':');
|
|
|
|
postgresConnectionStrings['getConnectionStrings']().forEach(k => {
|
|
should(k.value.includes(endpoint[0])).be.True();
|
|
should(k.value.includes(endpoint[1])).be.True();
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
});
|