diff --git a/extensions/schema-compare/src/dialogs/schemaCompareDialog.ts b/extensions/schema-compare/src/dialogs/schemaCompareDialog.ts index 55250d0999..43756fcc13 100644 --- a/extensions/schema-compare/src/dialogs/schemaCompareDialog.ts +++ b/extensions/schema-compare/src/dialogs/schemaCompareDialog.ts @@ -549,13 +549,19 @@ export class SchemaCompareDialog { count++; let usr = c.options.user; - let srv = c.options.server; if (!usr) { usr = loc.defaultText; } + let srv = c.options.server; + let finalName = `${srv} (${usr})`; + + if (c.options.connectionName) { + finalName = c.options.connectionName; + } + // use previously selected server or current connection if there is one if (endpointInfo && !isNullOrUndefined(endpointInfo.serverName) && !isNullOrUndefined(endpointInfo.serverDisplayName) && c.options.server.toLowerCase() === endpointInfo.serverName.toLowerCase() diff --git a/extensions/schema-compare/src/schemaCompareMainWindow.ts b/extensions/schema-compare/src/schemaCompareMainWindow.ts index db79f88686..fd99603fbe 100644 --- a/extensions/schema-compare/src/schemaCompareMainWindow.ts +++ b/extensions/schema-compare/src/schemaCompareMainWindow.ts @@ -98,7 +98,7 @@ export class SchemaCompareMainWindow { this.sourceEndpointInfo = { endpointType: mssql.SchemaCompareEndpointType.Database, - serverDisplayName: `${profile.serverName} (${usr})`, + serverDisplayName: profile.connectionName ? profile.connectionName : profile.serverName, serverName: profile.serverName, databaseName: profile.databaseName, ownerUri: ownerUri, diff --git a/extensions/schema-compare/src/test/testUtils.ts b/extensions/schema-compare/src/test/testUtils.ts index ffd8c89cd1..7940a1aef8 100644 --- a/extensions/schema-compare/src/test/testUtils.ts +++ b/extensions/schema-compare/src/test/testUtils.ts @@ -111,11 +111,13 @@ export function setDacpacEndpointInfo(path: string): mssql.SchemaCompareEndpoint export function setDatabaseEndpointInfo(): mssql.SchemaCompareEndpointInfo { let endpointInfo: mssql.SchemaCompareEndpointInfo; - let dbName = 'My Database'; - let serverName = 'My Server'; + const serverName = 'My Server'; + const dbName = 'My Database'; + const serverDisplayName = 'My Connection'; endpointInfo = { ...mockDatabaseEndpoint }; endpointInfo.databaseName = dbName; + endpointInfo.serverDisplayName = serverDisplayName; endpointInfo.serverName = serverName; return endpointInfo; diff --git a/extensions/schema-compare/src/test/utils.test.ts b/extensions/schema-compare/src/test/utils.test.ts index af3ca9bd89..afbf74a8d4 100644 --- a/extensions/schema-compare/src/test/utils.test.ts +++ b/extensions/schema-compare/src/test/utils.test.ts @@ -33,21 +33,29 @@ describe('utils: Tests to verify getEndpointName @DacFx@', function (): void { should(getEndpointName(mockDatabaseEndpoint)).equal(' '); }); - it('Should get endpoint information from ConnectionInfo', () => { - let testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; + it('Should get only database information from ConnectionInfo if connection', () => { + const testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; + testDatabaseEndpoint.serverDisplayName = 'My Connection'; + testDatabaseEndpoint.connectionDetails = { ...mockConnectionInfo }; + + should(getEndpointName(testDatabaseEndpoint)).equal('My Connection.My Database'); + }); + + it('Should get information from ConnectionInfo if no connection', () => { + const testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; testDatabaseEndpoint.connectionDetails = { ...mockConnectionInfo }; should(getEndpointName(testDatabaseEndpoint)).equal('My Server.My Database'); }); it('Should get correct endpoint information from SchemaCompareEndpointInfo', () => { - let dbName = 'My Database'; - let serverName = 'My Server'; - let testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; + const dbName = 'My Database'; + const serverDisplayName = 'My Connection'; + const testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; testDatabaseEndpoint.databaseName = dbName; - testDatabaseEndpoint.serverName = serverName; + testDatabaseEndpoint.serverDisplayName = serverDisplayName; - should(getEndpointName(testDatabaseEndpoint)).equal('My Server.My Database'); + should(getEndpointName(testDatabaseEndpoint)).equal('My Connection.My Database'); }); }); @@ -65,7 +73,7 @@ describe('utils: Basic tests to verify verifyConnectionAndGetOwnerUri', function it('Should return undefined for endpoint as database and no ConnectionInfo', async function (): Promise { let ownerUri = undefined; - let testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; + const testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; testDatabaseEndpoint.connectionDetails = undefined; ownerUri = await verifyConnectionAndGetOwnerUri(testDatabaseEndpoint, 'test'); @@ -84,9 +92,9 @@ describe('utils: In-depth tests to verify verifyConnectionAndGetOwnerUri', funct }); it('Should throw an error asking to make a connection', async function (): Promise { - let getConnectionsResults: azdata.connection.ConnectionProfile[] = []; - let connection = { ...mockConnectionResult }; - let testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; + const getConnectionsResults: azdata.connection.ConnectionProfile[] = []; + const connection = { ...mockConnectionResult }; + const testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; testDatabaseEndpoint.connectionDetails = { ...mockConnectionInfo }; const getConnectionString = loc.getConnectionString('test'); @@ -101,9 +109,9 @@ describe('utils: In-depth tests to verify verifyConnectionAndGetOwnerUri', funct }); it('Should throw an error for login failure', async function (): Promise { - let getConnectionsResults: azdata.connection.ConnectionProfile[] = [{ ...mockConnectionProfile }]; - let connection = { ...mockConnectionResult }; - let testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; + const getConnectionsResults: azdata.connection.ConnectionProfile[] = [{ ...mockConnectionProfile }]; + const connection = { ...mockConnectionResult }; + const testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; testDatabaseEndpoint.connectionDetails = { ...mockConnectionInfo }; sinon.stub(azdata.connection, 'connect').returns(Promise.resolve(connection)); @@ -118,9 +126,9 @@ describe('utils: In-depth tests to verify verifyConnectionAndGetOwnerUri', funct }); it('Should throw an error for login failure with openConnectionDialog but no ownerUri', async function (): Promise { - let getConnectionsResults: azdata.connection.ConnectionProfile[] = []; - let connection = { ...mockConnectionResult }; - let testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; + const getConnectionsResults: azdata.connection.ConnectionProfile[] = []; + const connection = { ...mockConnectionResult }; + const testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; testDatabaseEndpoint.connectionDetails = { ...mockConnectionInfo }; sinon.stub(azdata.connection, 'connect').returns(Promise.resolve(connection)); @@ -139,9 +147,9 @@ describe('utils: In-depth tests to verify verifyConnectionAndGetOwnerUri', funct it('Should not throw an error and set ownerUri appropriately', async function (): Promise { let ownerUri = undefined; - let connection = { ...mockConnectionResult }; - let testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; - let expectedOwnerUri: string = 'providerName:MSSQL|authenticationType:SqlLogin|database:My Database|server:My Server|user:My User|databaseDisplayName:My Database'; + const connection = { ...mockConnectionResult }; + const testDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = { ...mockDatabaseEndpoint }; + const expectedOwnerUri: string = 'providerName:MSSQL|authenticationType:SqlLogin|database:My Database|server:My Server|user:My User|databaseDisplayName:My Database'; testDatabaseEndpoint.connectionDetails = { ...mockConnectionInfo }; sinon.stub(azdata.connection, 'connect').returns(Promise.resolve(connection)); diff --git a/extensions/schema-compare/src/utils.ts b/extensions/schema-compare/src/utils.ts index 3ef7d58c31..d038389702 100644 --- a/extensions/schema-compare/src/utils.ts +++ b/extensions/schema-compare/src/utils.ts @@ -49,14 +49,14 @@ export function getEndpointName(endpoint: mssql.SchemaCompareEndpointInfo): stri } if (endpoint.endpointType === mssql.SchemaCompareEndpointType.Database) { - if (!endpoint.serverName && endpoint.connectionDetails) { - endpoint.serverName = endpoint.connectionDetails['serverName']; + if (!endpoint.serverDisplayName && endpoint.connectionDetails) { + endpoint.serverDisplayName = endpoint.connectionDetails['serverName']; } if (!endpoint.databaseName && endpoint.connectionDetails) { endpoint.databaseName = endpoint.connectionDetails['databaseName']; } - if (endpoint.serverName && endpoint.databaseName) { - return `${endpoint.serverName}.${endpoint.databaseName}`; + if (endpoint.serverDisplayName && endpoint.databaseName) { + return `${endpoint.serverDisplayName}.${endpoint.databaseName}`; } else { return ' '; }