mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-05 17:24:59 -05:00
3278 Kusto Unit Tests - Part 2 (#1063)
* 3278 Added unit tests in MetadataFactoryTests and Microsoft.Kusto.ServiceLayer.UnitTests project * 3278 Removed todo and changed unit test to validate megabytes * 3278 Added file and unit tests in AutoCompleteHelperTests.cs * 3278 Removed unused functions from Kusto > ScriptAsScriptingOperation * 3278 Added unit tests for DataSourceFactory * 3278 Refactored AdminService to pass in ConnectionService rather than through instance variable. Added unit test for AdminServiceTests * 3278 Refactored DataSourceFactory to not have static functions for future unit tests * 3278 Re-added properties that were flagged as unused but are being used by ADS in ReliableDataSourceConnection.cs * 3278 Re-added properties that were flagged as unused but are being used by ADS in ReliableDataSourceConnection.cs * adding pipeline to execute tests (#1062) * 3278 Converted GetDefaultAutoComplete and GetDefaultSemanticMarkers to static functions in DataSourceFactory. Removed unused constructor in ScriptFile. Added positive unit tests for both functions * undoing release version bump * adding additional configs * 3278 Minor refactors in ConnectionInfo, BindingQueue, DiagnosticsHelper, MetadataService, and HostLoader. Changed AssemblyInfo to only allow Kusto Unit Tests for internal access. Added lots of unit tests. * 3278 Commented out bindingContext.IsConnected in AddConnectionContext_Sets_BindingContext * 3278 Reversed order of unit tests in ConnectedBindingQueueTests and added throw to Catch block. * 3278 Reverted change to ConnectedBindingQueue. Removed unit test from AddConnectionContext for NeedsMetaData True Co-authored-by: Jorge Berumen <52225468+joberume@users.noreply.github.com> Co-authored-by: joberume <jberumen3@miners.utep.edu>
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Kusto.ServiceLayer.LanguageServices;
|
||||
using Microsoft.Kusto.ServiceLayer.LanguageServices.Contracts;
|
||||
using Microsoft.Kusto.ServiceLayer.Workspace.Contracts;
|
||||
using Microsoft.SqlTools.Hosting.Protocol;
|
||||
using Microsoft.SqlTools.Hosting.Protocol.Contracts;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace Microsoft.Kusto.ServiceLayer.UnitTests.LanguageServices
|
||||
{
|
||||
public class DiagnosticsHelperTests
|
||||
{
|
||||
[TestCase("")]
|
||||
[TestCase(null)]
|
||||
public void ClearScriptDiagnostics_Throws_Exception_InvalidUri(string uri)
|
||||
{
|
||||
Assert.ThrowsAsync<ArgumentException>(() => DiagnosticsHelper.ClearScriptDiagnostics(uri, new EventContext()));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ClearScriptDiagnostics_Throws_Exception_InvalidEventContext()
|
||||
{
|
||||
Assert.ThrowsAsync<ArgumentNullException>(() => DiagnosticsHelper.ClearScriptDiagnostics("uri", null));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ClearScriptDiagnostics_SendsEvent_ValidParams()
|
||||
{
|
||||
var uri = "uri";
|
||||
var eventContextMock = new Mock<EventContext>();
|
||||
var task = DiagnosticsHelper.ClearScriptDiagnostics(uri, eventContextMock.Object);
|
||||
task.Wait();
|
||||
|
||||
eventContextMock.Verify(
|
||||
e => e.SendEvent(PublishDiagnosticsNotification.Type,
|
||||
It.Is<PublishDiagnosticsNotification>(x => x.Uri == uri && x.Diagnostics.Length == 0)), Times.Once);
|
||||
}
|
||||
|
||||
[TestCase(ScriptFileMarkerLevel.Error, DiagnosticSeverity.Error)]
|
||||
[TestCase(ScriptFileMarkerLevel.Warning, DiagnosticSeverity.Warning)]
|
||||
[TestCase(ScriptFileMarkerLevel.Information, DiagnosticSeverity.Information)]
|
||||
public async Task PublishScriptDiagnostics_Maps_Severity(ScriptFileMarkerLevel markerLevel, DiagnosticSeverity expected)
|
||||
{
|
||||
var uri = "uri";
|
||||
var scriptFile = new ScriptFile("", uri, "");
|
||||
ScriptFileMarker[] semanticMarkers =
|
||||
{
|
||||
new ScriptFileMarker
|
||||
{
|
||||
Level = markerLevel,
|
||||
ScriptRegion = new ScriptRegion
|
||||
{
|
||||
StartLineNumber = 1,
|
||||
StartColumnNumber = 1,
|
||||
EndLineNumber = 2,
|
||||
EndColumnNumber = 2
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var actualEventType = new EventType<PublishDiagnosticsNotification>();
|
||||
var actualNotification = new PublishDiagnosticsNotification();
|
||||
var eventContextMock = new Mock<EventContext>();
|
||||
eventContextMock.Setup(x => x.SendEvent(It.IsAny<EventType<PublishDiagnosticsNotification>>(),
|
||||
It.IsAny<PublishDiagnosticsNotification>()))
|
||||
.Callback<EventType<PublishDiagnosticsNotification>, PublishDiagnosticsNotification>(
|
||||
(eventType, notification) =>
|
||||
{
|
||||
actualEventType = eventType;
|
||||
actualNotification = notification;
|
||||
})
|
||||
.Returns(Task.FromResult(0));
|
||||
await DiagnosticsHelper.PublishScriptDiagnostics(scriptFile, semanticMarkers, eventContextMock.Object);
|
||||
|
||||
eventContextMock.Verify(e => e.SendEvent(PublishDiagnosticsNotification.Type,
|
||||
It.IsAny<PublishDiagnosticsNotification>()), Times.Once);
|
||||
|
||||
Assert.AreEqual(PublishDiagnosticsNotification.Type.MethodName, actualEventType.MethodName);
|
||||
Assert.AreEqual(uri, actualNotification.Uri);
|
||||
Assert.AreEqual(1, actualNotification.Diagnostics.Length);
|
||||
|
||||
var diagnostic = actualNotification.Diagnostics.First();
|
||||
Assert.AreEqual(expected, diagnostic.Severity);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task PublishScriptDiagnostics_Creates_Diagnostic()
|
||||
{
|
||||
var uri = "uri";
|
||||
var scriptFile = new ScriptFile("", uri, "");
|
||||
var fileMarker = new ScriptFileMarker
|
||||
{
|
||||
Message = "Message",
|
||||
Level = ScriptFileMarkerLevel.Information,
|
||||
ScriptRegion = new ScriptRegion
|
||||
{
|
||||
StartLineNumber = 1,
|
||||
StartColumnNumber = 1,
|
||||
EndLineNumber = 2,
|
||||
EndColumnNumber = 2
|
||||
}
|
||||
};
|
||||
|
||||
var actualEventType = new EventType<PublishDiagnosticsNotification>();
|
||||
var actualNotification = new PublishDiagnosticsNotification();
|
||||
var eventContextMock = new Mock<EventContext>();
|
||||
eventContextMock.Setup(x => x.SendEvent(It.IsAny<EventType<PublishDiagnosticsNotification>>(),
|
||||
It.IsAny<PublishDiagnosticsNotification>()))
|
||||
.Callback<EventType<PublishDiagnosticsNotification>, PublishDiagnosticsNotification>(
|
||||
(eventType, notification) =>
|
||||
{
|
||||
actualEventType = eventType;
|
||||
actualNotification = notification;
|
||||
})
|
||||
.Returns(Task.FromResult(0));
|
||||
|
||||
await DiagnosticsHelper.PublishScriptDiagnostics(scriptFile, new[] {fileMarker}, eventContextMock.Object);
|
||||
|
||||
Assert.AreEqual(PublishDiagnosticsNotification.Type.MethodName, actualEventType.MethodName);
|
||||
Assert.AreEqual(uri, actualNotification.Uri);
|
||||
Assert.AreEqual(1, actualNotification.Diagnostics.Length);
|
||||
|
||||
var diagnostic = actualNotification.Diagnostics.First();
|
||||
Assert.AreEqual(null, diagnostic.Code);
|
||||
Assert.AreEqual(fileMarker.Message, diagnostic.Message);
|
||||
Assert.AreEqual(0, diagnostic.Range.Start.Character);
|
||||
Assert.AreEqual(0, diagnostic.Range.Start.Line);
|
||||
Assert.AreEqual(1, diagnostic.Range.End.Character);
|
||||
Assert.AreEqual(1, diagnostic.Range.End.Line);
|
||||
Assert.AreEqual(DiagnosticSeverity.Information, diagnostic.Severity);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user