public async Task InsertShouldCreateFile() { var resolver = new Mock <IPluginResolver>(); var uriResolver = new Mock <IUriResolver>(); using (var target = new MemoryStream()) { resolver.Setup(pr => pr.EnumerateAvailablePlugins()).Returns(new[] { new Plugin() }); uriResolver.Setup(ur => ur.ResolveToStream("file.xlsx", UriResolveMode.Write)).Returns(Task.FromResult <Stream>(target)); var context = new ConnectQlContext(resolver.Object) { UriResolver = uriResolver.Object }; var r = await context.ExecuteAsync("IMPORT PLUGIN 'Excel' INSERT INTO FILE('file.xlsx') SELECT * FROM SPLIT('file.xlsx', '.') f"); Assert.Equal(1, r.QueryResults.Count); using (var ms = new MemoryStream(target.ToArray())) using (var sheets = new ExcelPackage(ms).Workbook.Worksheets) { Assert.Equal(1, sheets.Count); Assert.Equal("Item", sheets[1].Cells[1, 1].Value); Assert.Equal("file", sheets[1].Cells[2, 1].Value); Assert.Equal("xlsx", sheets[1].Cells[3, 1].Value); } } }
public async Task ExecuteAsyncShouldReturnJoinedSet([NotNull] string query, object[] resultValues) { var context = new ConnectQlContext(); var result = await context.ExecuteAsync(query); Assert.Equal(1, result.QueryResults.Count); var array = await result.QueryResults[0].Rows.Select(r => r["Item"]).ToArrayAsync(); Assert.Equal(resultValues, array); }
public async Task ExecuteAsyncShouldReturnResult([NotNull] string query, int numResults, int firstResultSetCount, object firstResultValue) { var context = new ConnectQlContext(); var result = await context.ExecuteAsync(query); Assert.Equal(numResults, result.QueryResults.Count); Assert.Equal(firstResultSetCount, await result.QueryResults[0].Rows.CountAsync()); var row = await result.QueryResults[0].Rows.FirstAsync(); Assert.Equal(firstResultValue, row[row.ColumnNames[0]]); }
public async Task SelectShouldReturnRecords(string query, int expectedRecordCount) { var resolver = new Mock <IPluginResolver>(); var uriResolver = new Mock <IUriResolver>(); using (var target = new MemoryStream()) { var package = new ExcelPackage(); var sheet = package.Workbook.Worksheets.Add("Data"); sheet.Cells[1, 1].Value = "Id"; sheet.Cells[2, 1].Value = "1"; sheet.Cells[3, 1].Value = "2"; sheet.Cells[4, 1].Value = "3"; sheet.Cells[5, 1].Value = "4"; sheet.Cells[1, 2].Value = "Value"; sheet.Cells[2, 2].Value = "Test"; sheet.Cells[3, 2].Value = "A"; sheet.Cells[4, 2].Value = null; sheet.Cells[5, 2].Value = "4"; package.SaveAs(target); target.Seek(0, SeekOrigin.Begin); resolver.Setup(pr => pr.EnumerateAvailablePlugins()).Returns(new[] { new Plugin() }); uriResolver.Setup(ur => ur.ResolveToStream("file.xlsx", UriResolveMode.Read)).Returns(Task.FromResult <Stream>(target)); var context = new ConnectQlContext(resolver.Object) { UriResolver = uriResolver.Object }; var executeResult = await context.ExecuteAsync($"IMPORT PLUGIN 'Excel' {query}"); Assert.Equal(expectedRecordCount, await executeResult.QueryResults[0].Rows.CountAsync()); } }