Example #1
0
        public void EntityDataToDTO_WithTestProductData()
        {
            // arrange
            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <Category, CategoryDTO>();
                cfg.CreateMap <SubCategory, SubCategoryDTO>();
                cfg.CreateMap <Review, ReviewDTO>();
                cfg.CreateMap <SubImage, SubImageDTO>();
                cfg.CreateMap <Product, ProductDTO>()
                .ForMember(dest => dest.ReviewList, opt => opt.MapFrom(src => src.Reviews))
                .ForMember(dest => dest.SubImageURLList, opt => opt.MapFrom(src => src.SubImages));
            });

            var products = AllQueryStringProductTestData.GetProducts();

            _output.WriteLine(JsonConvert.SerializeObject(products, Formatting.Indented));

            // act
            var mapper = config.CreateMapper();
            IList <ProductDTO> productDTOList = mapper.Map <IList <Product>, IList <ProductDTO> >(products);

            _output.WriteLine(JsonConvert.SerializeObject(productDTOList, Formatting.Indented));



            Assert.True(false);
        }
Example #2
0
        private async Task <CatalogApiDbContext> SetupInitialDBForAllQueryString(CatalogApiDbContext context)
        {
            // this make sure clearing up the data from previous test
            context.Database.EnsureDeleted();
            // recreate database for current test
            context.Database.EnsureCreated();
            // 1.2. seed test data
            var productsTestData = AllQueryStringProductTestData.GetProducts();

            // wrap with Async IQueryable and add it to context
            context.AddRange(productsTestData);
            await context.SaveChangesAsync();

            return(context);
        }
Example #3
0
        public async Task GET_RequestWithAllQueryString_ShouldReturnAllProdcutWhoseAllMatchesWithQueryString(string url)
        {
            // Arrange
            var client = _factory
                         .WithWebHostBuilder(builder =>
            {
                builder.ConfigureServices(services =>
                {
                    var serviceProvider = services.BuildServiceProvider();

                    using (var scope = serviceProvider.CreateScope())
                    {
                        var scopedServices = scope.ServiceProvider;
                        var db             = scopedServices
                                             .GetRequiredService <CatalogApiDbContext>();
                        var logger = scopedServices
                                     .GetRequiredService <ILogger <GetEndpoint> >();

                        try
                        {
                            db.Database.EnsureDeleted();
                            db.Database.EnsureCreated();

                            var productsTestData = AllQueryStringProductTestData.GetProducts();

                            // wrap with Async IQueryable and add it to context
                            db.AddRange(productsTestData);
                            db.SaveChanges();
                        }
                        catch (Exception ex)
                        {
                            logger.LogError(ex, "An error occurred seeding " +
                                            "the database with test messages. Error: " +
                                            ex.Message);
                        }
                    }
                });
            })
                         .CreateClient();
            // queryString Dummy
            var categoryIdDummy    = 0;
            var subcategoryIdDummy = 0;
            var keywordDummy       = "Shoes";
            var reviewscoreDummy   = 5;
            var maxpriceDummy      = 70000m;
            var minpriceDummy      = 60000m;
            var sortDummy          = 3;

            string allQueryStringDummy =
                "?category=" + categoryIdDummy
                + "&subcategory=" + subcategoryIdDummy
                + "&keyword=" + keywordDummy
                + "&reviewscore=" + reviewscoreDummy
                + "&maxprice=" + maxpriceDummy
                + "&minprice=" + minpriceDummy
                + "&sort=" + sortDummy;

            // Act
            var response = await client.GetAsync(url + allQueryStringDummy);

            var body = await response.Content.ReadAsStringAsync();

            // convert json to JObject
            JArray bodyJArray = JArray.Parse(body);
            var    products   = bodyJArray.ToList();
            var    result     = products.All(p =>
            {
                return((int)p["subCategory"]["categoryId"] == categoryIdDummy &&
                       (int)p["subCategory"]["id"] == subcategoryIdDummy &&
                       p["name"].ToString().Contains(keywordDummy) || p["description"].ToString().Contains(keywordDummy) &&
                       Math.Round(p["reviewList"].DefaultIfEmpty().Average(r => (int)r["score"])) == reviewscoreDummy &&
                       Convert.ToDecimal(p["price"]) < maxpriceDummy &&
                       Convert.ToDecimal(p["price"]) > minpriceDummy
                       );
            });

            _output.WriteLine(JsonConvert.SerializeObject(products, Formatting.Indented));

            // Assert
            response.EnsureSuccessStatusCode(); // Status Code 200-299

            Assert.True(result);
        }