mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-14 01:25:40 -05:00
Test-only code coverage changes. Please review the commit and I'll follow-up on next iteration.
184 lines
5.8 KiB
C#
184 lines
5.8 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 System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.SqlTools.ServiceLayer.LanguageServices.Contracts;
|
|
using Microsoft.SqlTools.ServiceLayer.TestDriver.Utility;
|
|
using Microsoft.SqlTools.ServiceLayer.Workspace.Contracts;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.SqlTools.ServiceLayer.TestDriver.Tests
|
|
{
|
|
/// <summary>
|
|
/// Language Service end-to-end integration tests
|
|
/// </summary>
|
|
public class LanguageServiceTests : TestBase
|
|
{
|
|
/// <summary>
|
|
/// Validate hover tooltip scenarios
|
|
/// </summary>
|
|
[Fact]
|
|
public async Task HoverTest()
|
|
{
|
|
try
|
|
{
|
|
string ownerUri = System.IO.Path.GetTempFileName();
|
|
bool connected = await Connect(ownerUri, ConnectionTestUtils.LocalhostConnection);
|
|
Assert.True(connected, "Connection is successful");
|
|
|
|
Thread.Sleep(500);
|
|
|
|
string query = "SELECT * FROM sys.objects";
|
|
|
|
DidOpenTextDocumentNotification openParams = new DidOpenTextDocumentNotification()
|
|
{
|
|
TextDocument = new TextDocumentItem()
|
|
{
|
|
Uri = ownerUri,
|
|
LanguageId = "enu",
|
|
Version = 1,
|
|
Text = query
|
|
}
|
|
};
|
|
|
|
await RequestOpenDocumentNotification(openParams);
|
|
|
|
Hover hover = await RequestHover(ownerUri, query, 0, 15);
|
|
|
|
Assert.True(hover != null, "Hover tooltop is not null");
|
|
|
|
await Disconnect(ownerUri);
|
|
}
|
|
finally
|
|
{
|
|
WaitForExit();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Validation autocompletion suggestions scenarios
|
|
/// </summary>
|
|
[Fact]
|
|
public async Task CompletionTest()
|
|
{
|
|
try
|
|
{
|
|
string ownerUri = System.IO.Path.GetTempFileName();
|
|
bool connected = await Connect(ownerUri, ConnectionTestUtils.LocalhostConnection);
|
|
Assert.True(connected, "Connection is successful");
|
|
|
|
Thread.Sleep(500);
|
|
|
|
string query = "SELECT * FROM sys.objects";
|
|
|
|
DidOpenTextDocumentNotification openParams = new DidOpenTextDocumentNotification()
|
|
{
|
|
TextDocument = new TextDocumentItem()
|
|
{
|
|
Uri = ownerUri,
|
|
LanguageId = "enu",
|
|
Version = 1,
|
|
Text = query
|
|
}
|
|
};
|
|
|
|
await RequestOpenDocumentNotification(openParams);
|
|
|
|
var contentChanges = new TextDocumentChangeEvent[1];
|
|
contentChanges[0] = new TextDocumentChangeEvent()
|
|
{
|
|
Range = new Range()
|
|
{
|
|
Start = new Position()
|
|
{
|
|
Line = 0,
|
|
Character = 5
|
|
},
|
|
End = new Position()
|
|
{
|
|
Line = 0,
|
|
Character = 6
|
|
}
|
|
},
|
|
RangeLength = 1,
|
|
Text = "z"
|
|
};
|
|
|
|
DidChangeTextDocumentParams changeParams = new DidChangeTextDocumentParams()
|
|
{
|
|
ContentChanges = contentChanges,
|
|
TextDocument = new VersionedTextDocumentIdentifier()
|
|
{
|
|
Version = 2,
|
|
Uri = ownerUri
|
|
}
|
|
};
|
|
|
|
await RequestChangeTextDocumentNotification(changeParams);
|
|
|
|
CompletionItem[] completions = await RequestCompletion(ownerUri, query, 0, 15);
|
|
|
|
Assert.True(completions != null && completions.Length > 0, "Completion items list is not null and not empty");
|
|
|
|
CompletionItem item = await RequestResolveCompletion(completions[0]);
|
|
|
|
Assert.True(completions != null && completions.Length > 0, "Completion items list is not null and not empty");
|
|
|
|
await Disconnect(ownerUri);
|
|
}
|
|
finally
|
|
{
|
|
WaitForExit();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Validate diagnostic scenarios
|
|
/// </summary>
|
|
[Fact]
|
|
public async Task DiagnosticsTests()
|
|
{
|
|
try
|
|
{
|
|
string ownerUri = System.IO.Path.GetTempFileName();
|
|
bool connected = await Connect(ownerUri, ConnectionTestUtils.LocalhostConnection);
|
|
Assert.True(connected, "Connection is successful");
|
|
|
|
Thread.Sleep(500);
|
|
|
|
string query = "SELECT *** FROM sys.objects";
|
|
|
|
|
|
DidOpenTextDocumentNotification openParams = new DidOpenTextDocumentNotification()
|
|
{
|
|
TextDocument = new TextDocumentItem()
|
|
{
|
|
Uri = ownerUri,
|
|
LanguageId = "enu",
|
|
Version = 1,
|
|
Text = query
|
|
}
|
|
};
|
|
|
|
await RequestOpenDocumentNotification(openParams);
|
|
|
|
|
|
Thread.Sleep(5000);
|
|
|
|
await Disconnect(ownerUri);
|
|
}
|
|
finally
|
|
{
|
|
WaitForExit();
|
|
}
|
|
}
|
|
}
|
|
}
|