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); }
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); }
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); }