Beispiel #1
0
        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);
        }
Beispiel #2
0
        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)));
        }