public async Task OneOrder_ReturnOneRow()
        {
            CategoriesTemplate category = await TestRunner.InsertTemplateAsync(new CategoriesTemplate()
                                                                               .WithCategoryName("Category1"));

            ProductsTemplate product = await TestRunner.InsertTemplateAsync(new ProductsTemplate()
                                                                            .WithProductName("Product1")
                                                                            .WithCategoryID(category.Identity));

            await TestRunner.InsertTemplateAsync(new OrdersTemplate()
                                                 .WithOrderID(1001)
                                                 .WithOrderDate(DateTime.Parse("05-Mar-1998")));

            await TestRunner.InsertTemplateAsync(new Order_DetailsTemplate()
                                                 .WithOrderID(1001)
                                                 .WithProductID(product.Identity)
                                                 .WithUnitPrice(10)
                                                 .WithQuantity(5)
                                                 .WithDiscount(0));

            QueryResult data = await TestRunner.ExecuteStoredProcedureQueryAsync("dbo.[SalesByCategory]",
                                                                                 new SqlQueryParameter("CategoryName", "Category1"),
                                                                                 new SqlQueryParameter("OrdYear", "1998")
                                                                                 );

            data
            .AssertRowCount(1)
            .AssertRowValues(0, new DataSetRow
            {
                { "ProductName", "Product1" },
                { "TotalPurchase", 50m }
            });
        }
        public async Task OneOrderForDifferentYear_NoRows()
        {
            CategoriesTemplate category = await TestRunner.InsertTemplateAsync(new CategoriesTemplate()
                                                                               .WithCategoryName("Category1"));

            ProductsTemplate product = await TestRunner.InsertTemplateAsync(new ProductsTemplate()
                                                                            .WithProductName("Product1")
                                                                            .WithCategoryID(category.Identity));

            await TestRunner.InsertTemplateAsync(new OrdersTemplate()
                                                 .WithOrderID(1001)
                                                 .WithOrderDate(DateTime.Parse("05-Mar-1997")));

            await TestRunner.InsertTemplateAsync(new Order_DetailsTemplate()
                                                 .WithOrderID(1001)
                                                 .WithProductID(product.Identity)
                                                 .WithUnitPrice(10)
                                                 .WithQuantity(5)
                                                 .WithDiscount(0));

            QueryResult data = await TestRunner.ExecuteStoredProcedureQueryAsync("dbo.[SalesByCategory]",
                                                                                 new SqlQueryParameter("CategoryName", "Category2"),
                                                                                 new SqlQueryParameter("OrdYear", "1998")
                                                                                 );

            data
            .AssertRowCount(0);
        }
        public async Task OneOrderFor1998Year_ValidValue(int year, int expectedTotal)
        {
            CategoriesTemplate category = await TestRunner.InsertTemplateAsync(new CategoriesTemplate()
                                                                               .WithCategoryName("Category1"));

            ProductsTemplate product = await TestRunner.InsertTemplateAsync(new ProductsTemplate()
                                                                            .WithProductName("Product1")
                                                                            .WithCategoryID(category.Identity));

            await TestRunner.InsertTemplateAsync(new OrdersTemplate()
                                                 .WithOrderID(1001)
                                                 .WithOrderDate(DateTime.Parse($"05-Mar-1996")));

            await TestRunner.InsertTemplateAsync(new OrdersTemplate()
                                                 .WithOrderID(1002)
                                                 .WithOrderDate(DateTime.Parse($"05-Mar-1997")));

            await TestRunner.InsertTemplateAsync(new OrdersTemplate()
                                                 .WithOrderID(1003)
                                                 .WithOrderDate(DateTime.Parse($"05-Mar-1998")));

            await TestRunner.InsertTemplateAsync(new Order_DetailsTemplate()
                                                 .WithOrderID(1001)
                                                 .WithProductID(product.Identity)
                                                 .WithUnitPrice(10)
                                                 .WithQuantity(10)
                                                 .WithDiscount(0));

            await TestRunner.InsertTemplateAsync(new Order_DetailsTemplate()
                                                 .WithOrderID(1002)
                                                 .WithProductID(product.Identity)
                                                 .WithUnitPrice(10)
                                                 .WithQuantity(5)
                                                 .WithDiscount(0));

            await TestRunner.InsertTemplateAsync(new Order_DetailsTemplate()
                                                 .WithOrderID(1003)
                                                 .WithProductID(product.Identity)
                                                 .WithUnitPrice(10)
                                                 .WithQuantity(8)
                                                 .WithDiscount(0));

            QueryResult data = await TestRunner.ExecuteStoredProcedureQueryAsync("dbo.[SalesByCategory]",
                                                                                 new SqlQueryParameter("CategoryName", "Category1"),
                                                                                 new SqlQueryParameter("OrdYear", year)
                                                                                 );

            data
            .AssertRowCount(1)
            .AssertValue(0, "TotalPurchase", Convert.ToDecimal(expectedTotal));
        }