From 38836371edb673b7faba082328960068fee4fc8d Mon Sep 17 00:00:00 2001 From: Benjin Dubishar Date: Thu, 2 Mar 2023 13:52:35 -0800 Subject: [PATCH] Adding missing properties to GetProjectProperties call; also renaming NoneScript to NoneItem (#1890) * Renaming NoneScript to NoneItem * missed a file * Fixing comments * Adding ProjectStyle to properties * Projects nuget bump * Adding DatabaseSchemaProvider to the props --- Packages.props | 2 +- ...rver.DacFx.Projects.161.8416.0-alpha.nupkg | Bin 54502 -> 0 bytes ...rver.DacFx.Projects.161.8420.0-alpha.nupkg | Bin 0 -> 54483 bytes .../GetDatabaseReferences.cs | 3 ++ .../Contracts/Folders/GetFolders.cs | 3 ++ .../AddNoneItem.cs} | 6 +-- .../DeleteNoneItem.cs} | 8 ++-- .../ExcludeNoneItem.cs} | 6 +-- .../GetNoneItems.cs} | 9 ++-- .../MoveNoneItem.cs} | 8 ++-- .../GetPostDeploymentScripts.cs | 5 ++- .../GetPreDeploymentScripts.cs | 5 ++- .../Projects/GetProjectProperties.cs | 10 +++++ .../SqlCmdVariables/GetSqlCmdVariables.cs | 3 ++ .../SqlObjectScripts/GetSqlObjectScripts.cs | 3 ++ .../SqlProjects/SqlProjectsService.cs | 36 ++++++++------- .../SqlProjects/SqlProjectsServiceTests.cs | 42 +++++++++--------- 17 files changed, 88 insertions(+), 61 deletions(-) delete mode 100644 bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8416.0-alpha.nupkg create mode 100644 bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8420.0-alpha.nupkg rename src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/{NoneScripts/AddNoneScript.cs => NoneItems/AddNoneItem.cs} (79%) rename src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/{NoneScripts/DeleteNoneScript.cs => NoneItems/DeleteNoneItem.cs} (78%) rename src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/{NoneScripts/ExcludeNoneScript.cs => NoneItems/ExcludeNoneItem.cs} (77%) rename src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/{NoneScripts/GetNoneScripts.cs => NoneItems/GetNoneItems.cs} (72%) rename src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/{NoneScripts/MoveNoneScript.cs => NoneItems/MoveNoneItem.cs} (78%) diff --git a/Packages.props b/Packages.props index ecac6949..f2568e1d 100644 --- a/Packages.props +++ b/Packages.props @@ -23,7 +23,7 @@ - + diff --git a/bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8416.0-alpha.nupkg b/bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8416.0-alpha.nupkg deleted file mode 100644 index f2d962219480fb918bff9f152458fff1eebefe68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54502 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 bf1e&ND**{y^75nYVL=js_knl%N9z9r93+I9 diff --git a/bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8420.0-alpha.nupkg b/bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8420.0-alpha.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..d829de097725ec4bc6b90a26885731d66c9836f2 GIT binary patch literal 54483 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 ZkCzdD1zhs-qwirrVuAO8V*E$x{{zx_ix&U@ literal 0 HcmV?d00001 diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/DatabaseReferences/GetDatabaseReferences.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/DatabaseReferences/GetDatabaseReferences.cs index 09d1ac68..1bf393b3 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/DatabaseReferences/GetDatabaseReferences.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/DatabaseReferences/GetDatabaseReferences.cs @@ -11,6 +11,9 @@ using Microsoft.SqlTools.ServiceLayer.Utility; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { + /// + /// Get all the database references in a project + /// public class GetDatabaseReferencesRequest { public static readonly RequestType Type = RequestType.Create("sqlProjects/getDatabaseReferences"); diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Folders/GetFolders.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Folders/GetFolders.cs index 12df1c57..a67e5f8d 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Folders/GetFolders.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Folders/GetFolders.cs @@ -10,6 +10,9 @@ using Microsoft.SqlTools.ServiceLayer.Utility; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { + /// + /// Get all the folders in a project + /// public class GetFoldersRequest { public static readonly RequestType Type = RequestType.Create("sqlProjects/getFolders"); diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/AddNoneScript.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/AddNoneItem.cs similarity index 79% rename from src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/AddNoneScript.cs rename to src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/AddNoneItem.cs index 99bc39b1..dae66e34 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/AddNoneScript.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/AddNoneItem.cs @@ -9,10 +9,10 @@ using Microsoft.SqlTools.ServiceLayer.Utility; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { /// - /// Add a SQL object script to a project + /// Add a None item to a project /// - public class AddNoneScriptRequest + public class AddNoneItemRequest { - public static readonly RequestType Type = RequestType.Create("sqlProjects/addNoneScript"); + public static readonly RequestType Type = RequestType.Create("sqlProjects/addNoneItem"); } } diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/DeleteNoneScript.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/DeleteNoneItem.cs similarity index 78% rename from src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/DeleteNoneScript.cs rename to src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/DeleteNoneItem.cs index 6940569b..85caae0c 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/DeleteNoneScript.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/DeleteNoneItem.cs @@ -4,15 +4,15 @@ // using Microsoft.SqlTools.Hosting.Protocol.Contracts; - using Microsoft.SqlTools.ServiceLayer.Utility; + namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { /// - /// Delete a SQL object script from a project + /// Delete a None item from a project /// - public class DeleteNoneScriptRequest + public class DeleteNoneItemRequest { - public static readonly RequestType Type = RequestType.Create("sqlProjects/deleteNoneScript"); + public static readonly RequestType Type = RequestType.Create("sqlProjects/deleteNoneItem"); } } diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/ExcludeNoneScript.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/ExcludeNoneItem.cs similarity index 77% rename from src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/ExcludeNoneScript.cs rename to src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/ExcludeNoneItem.cs index c96d1bda..2402063c 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/ExcludeNoneScript.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/ExcludeNoneItem.cs @@ -9,10 +9,10 @@ using Microsoft.SqlTools.ServiceLayer.Utility; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { /// - /// Exclude a SQL object script from a project + /// Exclude a None item from a project /// - public class ExcludeNoneScriptRequest + public class ExcludeNoneItemRequest { - public static readonly RequestType Type = RequestType.Create("sqlProjects/excludeNoneScript"); + public static readonly RequestType Type = RequestType.Create("sqlProjects/excludeNoneItem"); } } diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/GetNoneScripts.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/GetNoneItems.cs similarity index 72% rename from src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/GetNoneScripts.cs rename to src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/GetNoneItems.cs index b2eeef89..45b07321 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/GetNoneScripts.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/GetNoneItems.cs @@ -3,14 +3,15 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. // -#nullable disable - using Microsoft.SqlTools.Hosting.Protocol.Contracts; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { - public class GetNoneScriptsRequest + /// + /// Get all the None items in a project + /// + public class GetNoneItemsRequest { - public static readonly RequestType Type = RequestType.Create("sqlProjects/getNoneScripts"); + public static readonly RequestType Type = RequestType.Create("sqlProjects/getNoneItems"); } } diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/MoveNoneScript.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/MoveNoneItem.cs similarity index 78% rename from src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/MoveNoneScript.cs rename to src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/MoveNoneItem.cs index 72835c91..71aa18e5 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneScripts/MoveNoneScript.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/NoneItems/MoveNoneItem.cs @@ -3,18 +3,16 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. // -#nullable disable - using Microsoft.SqlTools.Hosting.Protocol.Contracts; using Microsoft.SqlTools.ServiceLayer.Utility; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { /// - /// Move a SQL object script in a project + /// Move a None item in a project /// - public class MoveNoneScriptRequest + public class MoveNoneItemRequest { - public static readonly RequestType Type = RequestType.Create("sqlProjects/moveNoneScript"); + public static readonly RequestType Type = RequestType.Create("sqlProjects/moveNoneItem"); } } diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/PrePostDeploymentScripts/GetPostDeploymentScripts.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/PrePostDeploymentScripts/GetPostDeploymentScripts.cs index f8c214f9..a3e5bfcf 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/PrePostDeploymentScripts/GetPostDeploymentScripts.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/PrePostDeploymentScripts/GetPostDeploymentScripts.cs @@ -3,12 +3,13 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. // -#nullable disable - using Microsoft.SqlTools.Hosting.Protocol.Contracts; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { + /// + /// Get all the post-deployment scripts in a project + /// public class GetPostDeploymentScriptsRequest { public static readonly RequestType Type = RequestType.Create("sqlProjects/getPostDeploymentScripts"); diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/PrePostDeploymentScripts/GetPreDeploymentScripts.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/PrePostDeploymentScripts/GetPreDeploymentScripts.cs index 44b14529..e29c2868 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/PrePostDeploymentScripts/GetPreDeploymentScripts.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/PrePostDeploymentScripts/GetPreDeploymentScripts.cs @@ -3,12 +3,13 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. // -#nullable disable - using Microsoft.SqlTools.Hosting.Protocol.Contracts; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { + /// + /// Get all the pre-deployment scripts in a project + /// public class GetPreDeploymentScriptsRequest { public static readonly RequestType Type = RequestType.Create("sqlProjects/getPreDeploymentScripts"); diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/GetProjectProperties.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/GetProjectProperties.cs index cb3033a8..bb59be09 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/GetProjectProperties.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/GetProjectProperties.cs @@ -3,6 +3,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. // +using Microsoft.SqlServer.Dac.Projects; using Microsoft.SqlTools.Hosting.Protocol.Contracts; using Microsoft.SqlTools.ServiceLayer.Utility; @@ -54,5 +55,14 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts /// public string? DatabaseSource { get; set; } + /// + /// Style of the .sqlproj file - SdkStyle or LegacyStyle + /// + public ProjectType ProjectStyle { get; set; } + + /// + /// Database Schema Provider, in the format "Microsoft.Data.Tools.Schema.Sql.SqlXYZDatabaseSchemaProvider" + /// + public string DatabaseSchemaProvider { get; set; } } } diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/SqlCmdVariables/GetSqlCmdVariables.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/SqlCmdVariables/GetSqlCmdVariables.cs index 1b5c554d..1cb87459 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/SqlCmdVariables/GetSqlCmdVariables.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/SqlCmdVariables/GetSqlCmdVariables.cs @@ -11,6 +11,9 @@ using Microsoft.SqlTools.ServiceLayer.Utility; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { + /// + /// Get all the SQLCMD variables in a project + /// public class GetSqlCmdVariablesRequest { public static readonly RequestType Type = RequestType.Create("sqlProjects/getSqlCmdVariables"); diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/SqlObjectScripts/GetSqlObjectScripts.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/SqlObjectScripts/GetSqlObjectScripts.cs index 71d1813a..b6af3a62 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/SqlObjectScripts/GetSqlObjectScripts.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/SqlObjectScripts/GetSqlObjectScripts.cs @@ -10,6 +10,9 @@ using Microsoft.SqlTools.ServiceLayer.Utility; namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts { + /// + /// Get all the SQL object scripts in a project + /// public class GetSqlObjectScriptsRequest { public static readonly RequestType Type = RequestType.Create("sqlProjects/getSqlObjectScripts"); diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs index cccc077e..6ecda7f2 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs @@ -70,11 +70,11 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects serviceHost.SetRequestHandler(MovePostDeploymentScriptRequest.Type, HandleMovePostDeploymentScriptRequest, isParallelProcessingSupported: false); // None script functions - serviceHost.SetRequestHandler(GetNoneScriptsRequest.Type, HandleGetNoneScriptsRequest, isParallelProcessingSupported: true); - serviceHost.SetRequestHandler(AddNoneScriptRequest.Type, HandleAddNoneScriptRequest, isParallelProcessingSupported: false); - serviceHost.SetRequestHandler(DeleteNoneScriptRequest.Type, HandleDeleteNoneScriptRequest, isParallelProcessingSupported: false); - serviceHost.SetRequestHandler(ExcludeNoneScriptRequest.Type, HandleExcludeNoneScriptRequest, isParallelProcessingSupported: false); - serviceHost.SetRequestHandler(MoveNoneScriptRequest.Type, HandleMoveNoneScriptRequest, isParallelProcessingSupported: false); + serviceHost.SetRequestHandler(GetNoneItemsRequest.Type, HandleGetNoneItemsRequest, isParallelProcessingSupported: true); + serviceHost.SetRequestHandler(AddNoneItemRequest.Type, HandleAddNoneItemRequest, isParallelProcessingSupported: false); + serviceHost.SetRequestHandler(DeleteNoneItemRequest.Type, HandleDeleteNoneItemRequest, isParallelProcessingSupported: false); + serviceHost.SetRequestHandler(ExcludeNoneItemRequest.Type, HandleExcludeNoneItemRequest, isParallelProcessingSupported: false); + serviceHost.SetRequestHandler(MoveNoneItemRequest.Type, HandleMoveNoneItemRequest, isParallelProcessingSupported: false); // Folder functions serviceHost.SetRequestHandler(GetFoldersRequest.Type, HandleGetFoldersRequest, isParallelProcessingSupported: true); @@ -139,18 +139,20 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects { await RunWithErrorHandling(() => { - SqlProjectProperties props = GetProject(requestParams.ProjectUri).Properties; + SqlProject project = GetProject(requestParams.ProjectUri); return new GetProjectPropertiesResult() { Success = true, ErrorMessage = null, - ProjectGuid = props.ProjectGuid, - Configuration = props.Configuration, - Platform = props.Platform, - OutputPath = props.OutputPath, - DefaultCollation = props.DefaultCollation, - DatabaseSource = props.DatabaseSource, + ProjectGuid = project.Properties.ProjectGuid, + Configuration = project.Properties.Configuration, + Platform = project.Properties.Platform, + OutputPath = project.Properties.OutputPath, + DefaultCollation = project.Properties.DefaultCollation, + DatabaseSource = project.Properties.DatabaseSource, + ProjectStyle = project.SqlProjStyle, + DatabaseSchemaProvider = project.DatabaseSchemaProvider }; }, requestContext); } @@ -273,7 +275,7 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects #region None script functions - internal async Task HandleGetNoneScriptsRequest(SqlProjectParams requestParams, RequestContext requestContext) + internal async Task HandleGetNoneItemsRequest(SqlProjectParams requestParams, RequestContext requestContext) { await RunWithErrorHandling(() => { @@ -286,22 +288,22 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects }, requestContext); } - internal async Task HandleAddNoneScriptRequest(SqlProjectScriptParams requestParams, RequestContext requestContext) + internal async Task HandleAddNoneItemRequest(SqlProjectScriptParams requestParams, RequestContext requestContext) { await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri).NoneScripts.Add(new NoneScript(requestParams.Path!)), requestContext); } - internal async Task HandleDeleteNoneScriptRequest(SqlProjectScriptParams requestParams, RequestContext requestContext) + internal async Task HandleDeleteNoneItemRequest(SqlProjectScriptParams requestParams, RequestContext requestContext) { await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri).NoneScripts.Delete(requestParams.Path!), requestContext); } - internal async Task HandleExcludeNoneScriptRequest(SqlProjectScriptParams requestParams, RequestContext requestContext) + internal async Task HandleExcludeNoneItemRequest(SqlProjectScriptParams requestParams, RequestContext requestContext) { await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri).NoneScripts.Exclude(requestParams.Path!), requestContext); } - internal async Task HandleMoveNoneScriptRequest(MoveItemParams requestParams, RequestContext requestContext) + internal async Task HandleMoveNoneItemRequest(MoveItemParams requestParams, RequestContext requestContext) { await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri).NoneScripts.Move(requestParams.Path, requestParams.DestinationPath), requestContext); } diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs index 1f53b387..fc414d13 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs @@ -190,12 +190,12 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects } [Test] - public async Task TestNoneScriptOperations() + public async Task TestNoneItemOperations() { // Setup SqlProjectsService service = new(); string projectUri = await service.CreateSqlProject(); - Assert.AreEqual(0, service.Projects[projectUri].NoneScripts.Count, "Baseline number of NoneScripts"); + Assert.AreEqual(0, service.Projects[projectUri].NoneScripts.Count, "Baseline number of NoneItems"); // Validate adding a None script MockRequest requestMock = new(); @@ -208,49 +208,49 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects Assert.IsTrue(File.Exists(absolutePath), $"{absolutePath} expected to be on disk"); - await service.HandleAddNoneScriptRequest(new SqlProjectScriptParams() + await service.HandleAddNoneItemRequest(new SqlProjectScriptParams() { ProjectUri = projectUri, Path = relativePath }, requestMock.Object); - requestMock.AssertSuccess(nameof(service.HandleAddNoneScriptRequest)); - Assert.AreEqual(1, service.Projects[projectUri].NoneScripts.Count, "NoneScripts count after add"); - Assert.IsTrue(service.Projects[projectUri].NoneScripts.Contains(relativePath), $"NoneScripts expected to contain {relativePath}"); + requestMock.AssertSuccess(nameof(service.HandleAddNoneItemRequest)); + Assert.AreEqual(1, service.Projects[projectUri].NoneScripts.Count, "NoneItems count after add"); + Assert.IsTrue(service.Projects[projectUri].NoneScripts.Contains(relativePath), $"NoneItems expected to contain {relativePath}"); // Validate getting a list of the None scripts MockRequest getMock = new(); - await service.HandleGetNoneScriptsRequest(new SqlProjectParams() + await service.HandleGetNoneItemsRequest(new SqlProjectParams() { ProjectUri = projectUri }, getMock.Object); - getMock.AssertSuccess(nameof(service.HandleGetNoneScriptsRequest)); + getMock.AssertSuccess(nameof(service.HandleGetNoneItemsRequest)); Assert.AreEqual(1, getMock.Result.Scripts.Length); Assert.AreEqual(relativePath, getMock.Result.Scripts[0]); // Validate excluding a None script requestMock = new(); - await service.HandleExcludeNoneScriptRequest(new SqlProjectScriptParams() + await service.HandleExcludeNoneItemRequest(new SqlProjectScriptParams() { ProjectUri = projectUri, Path = relativePath }, requestMock.Object); - requestMock.AssertSuccess(nameof(service.HandleExcludeNoneScriptRequest)); - Assert.AreEqual(0, service.Projects[projectUri].NoneScripts.Count, "NoneScripts count after exclude"); + requestMock.AssertSuccess(nameof(service.HandleExcludeNoneItemRequest)); + Assert.AreEqual(0, service.Projects[projectUri].NoneScripts.Count, "NoneItems count after exclude"); Assert.IsTrue(File.Exists(absolutePath), $"{absolutePath} expected to still exist on disk"); // Re-add to set up for Delete requestMock = new(); - await service.HandleAddNoneScriptRequest(new SqlProjectScriptParams() + await service.HandleAddNoneItemRequest(new SqlProjectScriptParams() { ProjectUri = projectUri, Path = relativePath }, requestMock.Object); - requestMock.AssertSuccess(nameof(service.HandleAddNoneScriptRequest)); - Assert.AreEqual(1, service.Projects[projectUri].NoneScripts.Count, "NoneScripts count after re-add"); + requestMock.AssertSuccess(nameof(service.HandleAddNoneItemRequest)); + Assert.AreEqual(1, service.Projects[projectUri].NoneScripts.Count, "NoneItems count after re-add"); // Validate moving a None script string movedScriptRelativePath = @"SubPath\RenamedNoneIncludeFile.json"; @@ -258,27 +258,27 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects Directory.CreateDirectory(Path.GetDirectoryName(movedScriptAbsolutePath)!); requestMock = new(); - await service.HandleMoveNoneScriptRequest(new MoveItemParams() + await service.HandleMoveNoneItemRequest(new MoveItemParams() { ProjectUri = projectUri, Path = relativePath, DestinationPath = movedScriptRelativePath }, requestMock.Object); - requestMock.AssertSuccess(nameof(service.HandleMoveNoneScriptRequest)); + requestMock.AssertSuccess(nameof(service.HandleMoveNoneItemRequest)); Assert.IsTrue(File.Exists(movedScriptAbsolutePath), "Script should exist at new location"); - Assert.AreEqual(1, service.Projects[projectUri].NoneScripts.Count, "NoneScripts count after move"); + Assert.AreEqual(1, service.Projects[projectUri].NoneScripts.Count, "NoneItems count after move"); // Validate deleting a None script requestMock = new(); - await service.HandleDeleteNoneScriptRequest(new SqlProjectScriptParams() + await service.HandleDeleteNoneItemRequest(new SqlProjectScriptParams() { ProjectUri = projectUri, Path = movedScriptRelativePath }, requestMock.Object); - requestMock.AssertSuccess(nameof(service.HandleDeleteNoneScriptRequest)); - Assert.AreEqual(0, service.Projects[projectUri].NoneScripts.Count, "NoneScripts count after delete"); + requestMock.AssertSuccess(nameof(service.HandleDeleteNoneItemRequest)); + Assert.AreEqual(0, service.Projects[projectUri].NoneScripts.Count, "NoneItems count after delete"); Assert.IsFalse(File.Exists(movedScriptAbsolutePath), $"{movedScriptAbsolutePath} expected to have been deleted from disk"); } @@ -840,6 +840,8 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects Assert.AreEqual(@"bin\Debug\", mock.Result.OutputPath); // default value is normalized to Windows slashes Assert.AreEqual("SQL_Latin1_General_CP1_CI_AS", mock.Result.DefaultCollation); Assert.IsNull(mock.Result.DatabaseSource, nameof(mock.Result.DatabaseSource)); // validate DatabaseSource is null when the tag isn't present + Assert.AreEqual(ProjectType.SdkStyle, mock.Result.ProjectStyle); + Assert.AreEqual("Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider", mock.Result.DatabaseSchemaProvider); // Validate that DatabaseSource can be set when the tag doesn't exist