using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.Kusto.ServiceLayer.Connection; using Microsoft.Kusto.ServiceLayer.Connection.Contracts; using Microsoft.Kusto.ServiceLayer.DataSource; using Microsoft.Kusto.ServiceLayer.DataSource.Metadata; using Microsoft.Kusto.ServiceLayer.Metadata; using Microsoft.Kusto.ServiceLayer.Metadata.Contracts; using Microsoft.SqlTools.Hosting.Protocol; using Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection; using Moq; using NUnit.Framework; namespace Microsoft.Kusto.ServiceLayer.UnitTests.Metadata { public class MetadataServiceTests { [Test] public async Task HandleMetadataListRequest_Sets_MetadataListTask() { var serviceHostMock = new Mock(); var connectionServiceMock = new Mock(); var connectionFactoryMock = new Mock(); var requestContextMock = new Mock>(); requestContextMock.Setup(x => x.SendResult(It.IsAny())).Returns(Task.CompletedTask); var dataSourceMock = new Mock(); dataSourceMock.Setup(x => x.GetChildObjects(It.IsAny(), It.IsAny())) .Returns(new List {new DataSourceObjectMetadata {PrettyName = "TestName"}}); var dataSourceFactoryMock = new Mock(); dataSourceFactoryMock.Setup(x => x.Create(It.IsAny(), It.IsAny())) .Returns(dataSourceMock.Object); var reliableDataSource = new ReliableDataSourceConnection(new ConnectionDetails(), RetryPolicyFactory.NoRetryPolicy, RetryPolicyFactory.NoRetryPolicy, dataSourceFactoryMock.Object, ""); var connectionDetails = new ConnectionDetails { ServerName = "ServerName", DatabaseName = "DatabaseName" }; var connectionInfo = new ConnectionInfo(connectionFactoryMock.Object, "", connectionDetails); connectionInfo.AddConnection(ConnectionType.Default, reliableDataSource); connectionServiceMock.Setup(x => x.TryFindConnection(It.IsAny(), out connectionInfo)); var metadataService = new MetadataService(); metadataService.InitializeService(serviceHostMock.Object, connectionServiceMock.Object); await metadataService.HandleMetadataListRequest(new MetadataQueryParams(), requestContextMock.Object); requestContextMock.Verify(x => x.SendResult(It.Is(result => result.Metadata.First().Name == "TestName")), Times.Once()); } } }