public async Task CreateAsyncGenericShouldWorkCorrectlyWithOneItemUsingDbContext() { AutoMapperConfig.RegisterMappings(typeof(ErrorViewModel).GetTypeInfo().Assembly); var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: "CreateAsyncGenericShouldWorkCorrectlyWithOneItemUsingDbContextMainCategoriesServiceTests").Options; var dbContext = new ApplicationDbContext(options); await dbContext.MainCategories.AddAsync(new MainCategory { Name = "Test1", FontAwesomeIcon = "TestIcon1" }); await dbContext.SaveChangesAsync(); using var repository = new EfDeletableEntityRepository <MainCategory>(dbContext); var service = new MainCategoriesService(repository); var model = new CreateMainCategoryInputViewModel { Name = "Test2", FontAwesomeIcon = "TestIcon2", }; await service.CreateAsync <CreateMainCategoryInputViewModel>(model); Assert.Equal(2, service.GetAll().Count()); Assert.Equal("Test2", service.GetAll().ElementAt(1).Name); Assert.Equal("TestIcon2", service.GetAll().ElementAt(1).FontAwesomeIcon); }
public async Task CreateAsyncGenericShouldWorkCorrectlyWithOneItemUsingMoq() { AutoMapperConfig.RegisterMappings(typeof(ErrorViewModel).GetTypeInfo().Assembly); var repository = new Mock <IDeletableEntityRepository <MainCategory> >(); var categoriesList = new List <MainCategory> { new MainCategory { Id = 1, CreatedOn = DateTime.UtcNow, Name = "Test1", FontAwesomeIcon = "TestIcon1" }, }; repository.Setup(r => r.AllAsNoTracking()).Returns(categoriesList.AsQueryable()); repository.Setup(r => r.AddAsync(It.IsAny <MainCategory>())).Callback((MainCategory item) => categoriesList.Add(item)); repository.Setup(r => r.SaveChangesAsync()).Verifiable(); var service = new MainCategoriesService(repository.Object); var model = new CreateMainCategoryInputViewModel { Name = "Test2", FontAwesomeIcon = "TestIcon2", }; await service.CreateAsync <CreateMainCategoryInputViewModel>(model); Assert.Equal(2, service.GetAll().Count()); Assert.Equal("Test2", service.GetAll().ElementAt(1).Name); Assert.Equal("TestIcon2", service.GetAll().ElementAt(1).FontAwesomeIcon); repository.Verify(x => x.AddAsync(It.IsAny <MainCategory>()), Times.Once); repository.Verify(x => x.SaveChangesAsync()); }
public async Task <IActionResult> Create(CreateMainCategoryInputViewModel model) { if (!this.ModelState.IsValid) { return(this.View(model)); } await this.mainCategoriesService.CreateAsync <CreateMainCategoryInputViewModel>(model); this.TempData["Alert"] = "Successfully created main category."; return(this.RedirectToAction(nameof(this.All))); }