public async void WithIncorrectId_ShouldThrowException()
        {
            var dbContext   = this.GetDbContext();
            var incorrectId = Guid.NewGuid().ToString();
            var model       = CarServiceModelCreateMethods.Create(incorrectId);
            var service     = this.GetService(dbContext);

            var exception =
                await Assert.ThrowsAsync <ArgumentException>(async() => await service.EditAsync <UsedCar>(model));

            Assert.Equal(ErrorConstants.IncorrectId, exception.Message);
        }
        public async void WithTCarUsedCarAndMileage_ShouldCreateCarWithMileage()
        {
            var dbContext = this.GetDbContext();
            var service   = this.GetService(dbContext);
            var model     = CarServiceModelCreateMethods.Create("", 10);

            await service.CreateNewAsync <UsedCar>(model);

            var dbCar = dbContext.UsedCars.First();

            Assert.Equal(model.Mileage, dbCar.Mileage);
        }
        public async void WithUsedCarAndModelWithMileage_ShouldEditMiles()
        {
            var dbContext = this.GetDbContext();
            var dbCar     = SeedCarsMethods.SeedCar <UsedCar>(dbContext);

            var service = this.GetService(dbContext);
            var mileage = 10.0;
            var model   = CarServiceModelCreateMethods.Create(dbCar.Id, mileage);

            await service.EditAsync <UsedCar>(model);

            Assert.Equal(mileage, dbCar.Mileage);
        }
        public async void WithCarWithPicture_ShouldCreateCarWithPicture()
        {
            var dbContext = this.GetDbContext();
            var service   = this.GetService(dbContext);
            var model     = CarServiceModelCreateMethods.Create("", Guid.NewGuid().ToString());

            await service.CreateNewAsync <UsedCar>(model);

            var dbCar = dbContext.UsedCars.First();

            Assert.Single(dbContext.Pictures);
            Assert.Equal(model.Pictures.First().PublicId, dbCar.Pictures.First().PublicId);
        }
        public async void WithoutPictures_ShouldNotChangePictures()
        {
            var dbContext = this.GetDbContext();
            var dbPicture = EntitiesCreateMethods.CreatePicture(Guid.NewGuid().ToString());
            var dbCar     = SeedCarsMethods.SeedCar <NewCar>(dbContext, dbPicture);

            var service = this.GetService(dbContext);
            var model   = CarServiceModelCreateMethods.Create(dbCar.Id);

            var exception = await Assert.ThrowsAsync <RepositoryUpdateNoRowsAffectedException>(
                async() => await service.EditAsync <NewCar>(model));

            Assert.Equal(ErrorConstants.UnitOfWorkNoRowsAffected, exception.Message);
        }
        public async void WithPictures_ShouldReplacePictures()
        {
            var dbContext  = this.GetDbContext();
            var dbPictures = EntitiesCreateMethods.CreatePicture(Guid.NewGuid().ToString());
            var dbCar      = SeedCarsMethods.SeedCar <NewCar>(dbContext, dbPictures);

            var picturePublicId = Guid.NewGuid().ToString();
            var model           = CarServiceModelCreateMethods.Create(dbCar.Id, picturePublicId);
            var service         = this.GetService(dbContext);

            await service.EditAsync <NewCar>(model);

            Assert.Single(dbContext.Pictures);
            Assert.Equal(picturePublicId, dbContext.Pictures.First().PublicId);
        }
        public async void WithOptions_ShouldReplaceOptions()
        {
            var dbContext    = this.GetDbContext();
            var carOption    = SeedOptionsMethods.SeedOption(dbContext);
            var dbCarOptions = EntitiesCreateMethods.CreateCarOption(carOption);
            var dbCar        = SeedCarsMethods.SeedCar <NewCar>(dbContext, dbCarOptions);

            var service = this.GetService(dbContext);

            var inputOption = SeedOptionsMethods.SeedOption(dbContext);
            var model       = CarServiceModelCreateMethods.Create(dbCar.Id, inputOption);

            await service.EditAsync <NewCar>(model);

            Assert.True(dbCar.Options.All(o => inputOption.Id == o.OptionId));
        }