コード例 #1
0
ファイル: ModelsServiceTests.cs プロジェクト: rl0pez/PoolIt
        public async Task UpdateAsync_WithNonExistentId_ReturnsFalse()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            context.CarModels.AddRange(
                new CarModel
            {
                Model = "OtherModel1"
            },
                new CarModel
            {
                Model = "OtherModel2"
            });

            context.SaveChanges();

            var modelsService = new ModelsService(new EfRepository <CarModel>(context));

            var serviceModel = new CarModelServiceModel
            {
                Id    = Guid.NewGuid().ToString(),
                Model = "TestName"
            };

            // Act
            var result = await modelsService.UpdateAsync(serviceModel);

            // Assert
            Assert.False(result);
        }
コード例 #2
0
ファイル: ModelsServiceTests.cs プロジェクト: rl0pez/PoolIt
        public async Task CreateAsync_WithValidModel_WorksCorrectly()
        {
            // Arrange
            const string testName = "TestName";

            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var modelsService = new ModelsService(new EfRepository <CarModel>(context));

            var serviceModel = new CarModelServiceModel
            {
                Model = testName
            };

            // Act
            var result = await modelsService.CreateAsync(serviceModel);

            // Assert
            Assert.True(result);

            var addedToDb = await context.CarModels.AnyAsync(m => m.Model == testName);

            Assert.True(addedToDb);
        }
コード例 #3
0
        public async Task <bool> CreateAsync(CarModelServiceModel serviceModel)
        {
            if (!this.IsEntityStateValid(serviceModel))
            {
                return(false);
            }

            var model = Mapper.Map <CarModel>(serviceModel);

            await this.carModelsRepository.AddAsync(model);

            await this.carModelsRepository.SaveChangesAsync();

            return(true);
        }
コード例 #4
0
        public async Task <IActionResult> Create(CarModelCreateBindingModel model, string returnUrl)
        {
            if (!this.ModelState.IsValid)
            {
                model.Manufacturers = await this.GetAllManufacturers();

                return(this.View(model));
            }

            var manufacturer = await this.manufacturersService.GetByNameAsync(model.Manufacturer)
                               ?? new CarManufacturerServiceModel
            {
                Name = model.Manufacturer
            };

            var carModel = new CarModelServiceModel
            {
                ManufacturerId = manufacturer.Id,
                Manufacturer   = manufacturer,
                Model          = model.CarModel
            };

            returnUrl = returnUrl ?? "/";

            if (await this.modelsService.ExistsAsync(carModel))
            {
                this.Success(NotificationMessages.ModelExistsNotCreated);
                return(this.LocalRedirect(returnUrl));
            }

            var result = await this.modelsService.CreateAsync(carModel);

            if (result)
            {
                this.Success(NotificationMessages.ModelCreated);
            }
            else
            {
                this.Error(NotificationMessages.ModelCreateError);

                model.Manufacturers = await this.GetAllManufacturers();

                return(this.View(model));
            }

            return(this.LocalRedirect(returnUrl));
        }
コード例 #5
0
ファイル: ModelsServiceTests.cs プロジェクト: rl0pez/PoolIt
        public async Task ExistsAsync_WithDifferentManufacturer_ReturnsFalse()
        {
            // Arrange
            const string testName = "TestName";

            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var manufacturer = new CarManufacturer
            {
                Name = "TestManufacturer"
            };

            context.CarModels.AddRange(
                new CarModel
            {
                Model        = testName,
                Manufacturer = new CarManufacturer
                {
                    Name = "OtherManufacturer"
                }
            },
                new CarModel
            {
                Model        = "OtherModel",
                Manufacturer = manufacturer
            });

            context.SaveChanges();

            var modelsService = new ModelsService(new EfRepository <CarModel>(context));

            var serviceModel = new CarModelServiceModel
            {
                Model          = testName,
                ManufacturerId = manufacturer.Id
            };

            // Act
            var result = await modelsService.ExistsAsync(serviceModel);

            // Assert
            Assert.False(result);
        }
コード例 #6
0
ファイル: ModelsServiceTests.cs プロジェクト: rl0pez/PoolIt
        public async Task UpdateAsync_WithInvalidModel_DoesNotChange()
        {
            // Arrange
            const string expectedResult = "InitialName";

            var model = new CarModel
            {
                Model = expectedResult
            };

            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            context.CarModels.AddRange(
                model,
                new CarModel
            {
                Model = "OtherModel1"
            },
                new CarModel
            {
                Model = "OtherModel2"
            });

            context.SaveChanges();

            var modelsService = new ModelsService(new EfRepository <CarModel>(context));

            var serviceModel = new CarModelServiceModel
            {
                Id    = model.Id,
                Model = "a"
            };

            // Act
            var result = await modelsService.UpdateAsync(serviceModel);

            // Assert
            Assert.False(result);

            var actualResult = (await context.CarModels.SingleAsync(m => m.Id == model.Id)).Model;

            Assert.Equal(expectedResult, actualResult);
        }
コード例 #7
0
ファイル: ModelsServiceTests.cs プロジェクト: rl0pez/PoolIt
        public async Task CreateAsync_WithInvalidModel_ReturnsFalse()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var modelsService = new ModelsService(new EfRepository <CarModel>(context));

            var serviceModel = new CarModelServiceModel();

            // Act
            var result = await modelsService.CreateAsync(serviceModel);

            // Assert
            Assert.False(result);

            var dbCount = await context.CarModels.CountAsync();

            Assert.Equal(0, dbCount);
        }
コード例 #8
0
        public async Task <bool> UpdateAsync(CarModelServiceModel model)
        {
            if (!this.IsEntityStateValid(model) || model.Id == null)
            {
                return(false);
            }

            var carManufacturer =
                await this.carModelsRepository.All().SingleOrDefaultAsync(c => c.Id == model.Id);

            if (carManufacturer == null)
            {
                return(false);
            }

            carManufacturer.Model = model.Model;

            this.carModelsRepository.Update(carManufacturer);
            await this.carModelsRepository.SaveChangesAsync();

            return(true);
        }
コード例 #9
0
 public async Task <bool> ExistsAsync(CarModelServiceModel serviceModel)
 => await this.carModelsRepository.All().AnyAsync(m =>
                                                  m.ManufacturerId == serviceModel.ManufacturerId &&
                                                  string.Equals(m.Model, serviceModel.Model, StringComparison.InvariantCultureIgnoreCase));