예제 #1
0
        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);
                    }
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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]]);
        }
예제 #4
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());
            }
        }