diff --git a/src/Microsoft.SqlTools.ServiceLayer/Scripting/ScriptingService.cs b/src/Microsoft.SqlTools.ServiceLayer/Scripting/ScriptingService.cs index 6fb25141..c53cdf17 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Scripting/ScriptingService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Scripting/ScriptingService.cs @@ -117,10 +117,10 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting // if a connection string wasn't provided as a parameter then // use the owner uri property to lookup its associated ConnectionInfo // and then build a connection string out of that - ConnectionInfo connInfo; - ScriptingService.ConnectionServiceInstance.TryFindConnection(parameters.OwnerUri, out connInfo); - if (parameters.ConnectionString == null) + ConnectionInfo connInfo = null; + if (parameters.ConnectionString == null || parameters.ScriptOptions.ScriptCreateDrop == "ScriptSelect") { + ScriptingService.ConnectionServiceInstance.TryFindConnection(parameters.OwnerUri, out connInfo); if (connInfo != null) { parameters.ConnectionString = ConnectionService.BuildConnectionString(connInfo.ConnectionDetails); diff --git a/test/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests/SqlScriptPublishModelTests.cs b/test/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests/SqlScriptPublishModelTests.cs index 4dd47206..bbed2e10 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests/SqlScriptPublishModelTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests/SqlScriptPublishModelTests.cs @@ -112,7 +112,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TestDriver.Tests }; ScriptingResult result = await testService.Script(requestParams); - ScriptingPlanNotificationParams planEvent = await testService.Driver.WaitForEvent(ScriptingPlanNotificationEvent.Type, TimeSpan.FromSeconds(30)); + ScriptingPlanNotificationParams planEvent = await testService.Driver.WaitForEvent(ScriptingPlanNotificationEvent.Type, TimeSpan.FromSeconds(1)); ScriptingCompleteParams parameters = await testService.Driver.WaitForEvent(ScriptingCompleteEvent.Type, TimeSpan.FromSeconds(30)); Assert.True(parameters.Success); Assert.Equal(1, planEvent.Count); @@ -284,6 +284,36 @@ namespace Microsoft.SqlTools.ServiceLayer.TestDriver.Tests } } + [Fact] + public async Task ScriptSelectTable() + { + using (TestServiceDriverProvider testService = new TestServiceDriverProvider()) + using (SelfCleaningTempFile tempFile = new SelfCleaningTempFile()) + { + await testService.Connect(tempFile.FilePath, testService.TestConnectionService.GetConnectionParameters(serverType: TestServerType.OnPrem)); + ScriptingParams requestParams = new ScriptingParams + { + ScriptDestination = "ToEditor", + OwnerUri = tempFile.FilePath, + ScriptOptions = new ScriptOptions + { + ScriptCreateDrop = "ScriptSelect" + }, + ScriptingObjects = new List + { + new ScriptingObject + { + Type = "Table", + Schema = "dbo", + Name = "Customers", + } + } + }; + ScriptingResult result = await testService.Script(requestParams); + Assert.True(result.Script.Contains("SELECT")); + } + } + private static void AssertSchemaInFile(string filePath, bool assert = true) { AssertFileContainsString( diff --git a/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Scripting/ScriptingObjectMatcherTests.cs b/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Scripting/ScriptingObjectMatcherTests.cs index 2c1ab329..0026bc21 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Scripting/ScriptingObjectMatcherTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Scripting/ScriptingObjectMatcherTests.cs @@ -415,7 +415,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.Scripting ScriptingObject scriptingObject1 = new ScriptingObject { Type = "Table", Schema = "test", Name = "test_table" }; ScriptingObject scriptingObject2 = new ScriptingObject { Type = "Table", Schema = "test", Name = "test_table" }; ScriptingObject scriptingObject3 = null; - Assert.Equal(scriptingObject1, scriptingObject2); + Assert.True(scriptingObject1.Equals(scriptingObject2)); Assert.False(scriptingObject1.Equals(scriptingObject3)); } }