示例#1
0
        public async Task GetAdsByCategorySubcategoryViewModelsAsync_WithInvalidCategoryId_ShouldThrowAndInvalidArgumentException()
        {
            //Arrange
            var expectedErrorMessage = "Category with the given id doesn't exist!";

            var context = InitializeContext.CreateContextForInMemory();

            subcategoriesService = new SubCategoriesService(context);

            //Act and assert
            var ex = await Assert.ThrowsAsync <ArgumentException>(() =>
                                                                  subcategoriesService.GetAdsByCategorySubcategoryViewModelsAsync(1));

            Assert.Equal(expectedErrorMessage, ex.Message);
        }
示例#2
0
        public async Task <AdsByCategoryViewModel> GetAdsByCategoryViewModelAsync(int categoryId, int pageNumber,
                                                                                  int pageSize)
        {
            if (!await context.Categories.AnyAsync(x => x.Id == categoryId))
            {
                throw new ArgumentException(GlobalConstants.InvalidCategoryIdErrorMessage);
            }

            var adsViewModel          = GetAllAdsByCategory(categoryId);
            var paginatedAdsViewModel =
                await PaginatedList <AdViewModel> .CreateAsync(adsViewModel, pageNumber, pageSize);

            var allCategoriesViewModel = await categoriesService.GetAllCategoryViewModelsAsync();

            var subcategoryViewModels =
                await subCategoriesService.GetAdsByCategorySubcategoryViewModelsAsync(categoryId);

            string categoryName = await categoriesService.GetCategoryNameByIdAsync(categoryId);

            var adsByCategoryViewModel = CreateAdsByCategoryViewModel(paginatedAdsViewModel,
                                                                      allCategoriesViewModel, categoryName, subcategoryViewModels, categoryId);

            return(adsByCategoryViewModel);
        }
示例#3
0
        public async Task GetAdsByCategorySubcategoryViewModelsAsync_WithValidData_ShouldReturnCorrectResult()
        {
            //Arrange
            var expected = new List <AdsByCategorySubcategoryViewModel>
            {
                new AdsByCategorySubcategoryViewModel
                {
                    Id   = 1,
                    Name = "Phones"
                },
                new AdsByCategorySubcategoryViewModel
                {
                    Id   = 2,
                    Name = "Displays"
                }
            };

            var context = InitializeContext.CreateContextForInMemory();

            subcategoriesService = new SubCategoriesService(context);

            var testSubcategories = new List <SubCategory>
            {
                new SubCategory
                {
                    Id         = 1,
                    CategoryId = 1,
                    Name       = "Phones"
                },
                new SubCategory
                {
                    Id         = 2,
                    CategoryId = 1,
                    Name       = "Displays"
                }
            };

            var testCategory = new Category
            {
                Id   = 1,
                Name = "Electronics"
            };

            await context.Categories.AddAsync(testCategory);

            await context.SubCategories.AddRangeAsync(testSubcategories);

            await context.SaveChangesAsync();

            //Act
            var actual = await subcategoriesService.GetAdsByCategorySubcategoryViewModelsAsync(1);

            Assert.Collection(actual,
                              elem1 =>
            {
                Assert.Equal(expected[0].Id, elem1.Id);
                Assert.Equal(expected[0].Name, elem1.Name);
            },
                              elem2 =>
            {
                Assert.Equal(expected[1].Id, elem2.Id);
                Assert.Equal(expected[1].Name, elem2.Name);
            });

            Assert.Equal(expected.Count, actual.Count);
        }