mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-13 17:23:02 -05:00
* Initial metadata service and scripting service files * Simple metadata lookup with SMO objects * Add metadata type class * Remove SMO from metadata service. * Cleanup metadata service SQL * Initial MetadataService test * Add scripting commands * Add metadata test case * Remove sleep used for testing * Use random table name in metadata test * Add scripting tests
119 lines
3.9 KiB
C#
119 lines
3.9 KiB
C#
//
|
|
// Copyright (c) Microsoft. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
//
|
|
|
|
using Microsoft.SqlTools.ServiceLayer.Workspace.Contracts;
|
|
using Xunit;
|
|
using Microsoft.SqlTools.ServiceLayer.IntegrationTests.Utility;
|
|
using Microsoft.SqlTools.ServiceLayer.Metadata.Contracts;
|
|
using Microsoft.SqlTools.ServiceLayer.Scripting;
|
|
using Moq;
|
|
using Microsoft.SqlTools.Hosting.Protocol;
|
|
using Microsoft.SqlTools.ServiceLayer.Scripting.Contracts;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.Scripting
|
|
{
|
|
/// <summary>
|
|
/// Tests for the scripting service component
|
|
/// </summary>
|
|
public class ScriptingServiceTests
|
|
{
|
|
private const string SchemaName = "sys";
|
|
private const string TableName = "all_objects";
|
|
|
|
private LiveConnectionHelper.TestConnectionResult GetLiveAutoCompleteTestObjects()
|
|
{
|
|
var textDocument = new TextDocumentPosition
|
|
{
|
|
TextDocument = new TextDocumentIdentifier { Uri = Test.Common.Constants.OwnerUri },
|
|
Position = new Position
|
|
{
|
|
Line = 0,
|
|
Character = 0
|
|
}
|
|
};
|
|
|
|
var result = LiveConnectionHelper.InitLiveConnectionInfo();
|
|
result.TextDocumentPosition = textDocument;
|
|
return result;
|
|
}
|
|
|
|
|
|
private async Task<Mock<RequestContext<ScriptingScriptAsResult>>> SendAndValidateScriptRequest(ScriptOperation operation)
|
|
{
|
|
var result = GetLiveAutoCompleteTestObjects();
|
|
var requestContext = new Mock<RequestContext<ScriptingScriptAsResult>>();
|
|
requestContext.Setup(x => x.SendResult(It.IsAny<ScriptingScriptAsResult>())).Returns(Task.FromResult(new object()));
|
|
|
|
var scriptingParams = new ScriptingScriptAsParams
|
|
{
|
|
OwnerUri = Test.Common.Constants.OwnerUri,
|
|
Operation = operation,
|
|
Metadata = new ObjectMetadata()
|
|
{
|
|
MetadataType = MetadataType.Table,
|
|
MetadataTypeName = "View",
|
|
Schema = SchemaName,
|
|
Name = TableName
|
|
}
|
|
};
|
|
|
|
await ScriptingService.HandleScriptingScriptAsRequest(scriptingParams, requestContext.Object);
|
|
|
|
requestContext.Verify(x => x.SendResult(It.Is<ScriptingScriptAsResult>(
|
|
i => i.Script.Contains(operation.ToString().ToUpper())
|
|
&& i.Script.Contains(TableName)
|
|
&& i.Script.Contains(SchemaName))));
|
|
|
|
return requestContext;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Verify the script as select request
|
|
/// </summary>
|
|
[Fact]
|
|
public async void ScriptingScriptAsSelect()
|
|
{
|
|
await SendAndValidateScriptRequest(ScriptOperation.Select);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Verify the script as create request
|
|
/// </summary>
|
|
[Fact]
|
|
public async void ScriptingScriptAsCreate()
|
|
{
|
|
await SendAndValidateScriptRequest(ScriptOperation.Create);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Verify the script as insert request
|
|
/// </summary>
|
|
[Fact]
|
|
public async void ScriptingScriptAsInsert()
|
|
{
|
|
await SendAndValidateScriptRequest(ScriptOperation.Insert);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Verify the script as update request
|
|
/// </summary>
|
|
[Fact]
|
|
public async void ScriptingScriptAsUpdate()
|
|
{
|
|
await SendAndValidateScriptRequest(ScriptOperation.Update);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Verify the script as delete request
|
|
/// </summary>
|
|
[Fact]
|
|
public async void ScriptingScriptAsDelete()
|
|
{
|
|
await SendAndValidateScriptRequest(ScriptOperation.Delete);
|
|
}
|
|
}
|
|
}
|