Пример #1
0
        private void SeedCarWithYear(ApplicationDbContext dbContext, string year)
        {
            var dbCar = SeedCarsMethods.SeedCar <NewCar>(dbContext);

            dbCar.Year = year;

            dbContext.SaveChanges();
        }
        private void SeedTestDrivesWithCars(ApplicationDbContext dbContext)
        {
            var newCar = SeedCarsMethods.SeedCar <NewCar>(dbContext);

            SeedTestDrivesMethods.SeedTestDrive(dbContext, newCar);
            var usedCar = SeedCarsMethods.SeedCar <UsedCar>(dbContext);

            SeedTestDrivesMethods.SeedTestDrive(dbContext, usedCar);
        }
Пример #3
0
        public async void WithCorrectId_ShouldDeleteCar()
        {
            var dbContext = this.GetDbContext();
            var dbCar     = SeedCarsMethods.SeedCar <NewCar>(dbContext);
            var service   = this.GetService(dbContext);

            await service.DeleteAsync(dbCar.Id);

            Assert.Empty(dbContext.BaseCars);
        }
        public async void WithTestDrivesAndCarAndNotSignInUser_ShouldReturnIsTestDriveScheduledFalse()
        {
            var dbContext = this.GetDbContext();
            var dbStatus  = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbCar     = SeedCarsMethods.SeedCarWithTestDrive <NewCar>(dbContext, "", dbStatus);

            var model = await this.CallGetCarViewModelAsync(dbContext, dbCar.Id, false, null);

            Assert.False(model.IsTestDriveScheduled);
        }
        public async void WithModel_ShouldScheduleTestDriveWithUpcomingStatus()
        {
            var dbContext = this.GetDbContext();
            var dbUser    = SeedUsersMethods.SeedUser(dbContext);
            var dbCar     = SeedCarsMethods.SeedCar <NewCar>(dbContext);
            var model     = this.GetModel(dbCar.Id);

            await this.CallScheduleTestDriveAsync(model, dbContext, dbUser.Id);

            Assert.Equal(TestDriveStatus.Upcoming.ToString(), dbContext.TestDrives.First().Status.Name);
        }
        public async void WithSignInUserWithTestDrive_ShouldReturnIsTestDriveScheduledTrue()
        {
            var dbContext = this.GetDbContext();
            var dbUser    = SeedUsersMethods.SeedUser(dbContext);
            var dbStatus  = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbCar     = SeedCarsMethods.SeedCarWithTestDrive <NewCar>(dbContext, dbUser.Id, dbStatus);

            var model = await this.CallGetCarViewModelAsync(dbContext, dbCar.Id, true, dbUser.Id);

            Assert.True(model.IsTestDriveScheduled);
        }
Пример #7
0
        public async void WithCar_ShouldReturnModelWithCorrectValue()
        {
            var dbContext = this.GetDbContext();
            var service   = this.GetService();
            var dbCar     = SeedCarsMethods.SeedCarWithEverything <UsedCar>(dbContext);

            var models = await service.GetSeriesFilterModelsAsync(dbContext.BaseCars);

            Assert.Equal(dbCar.Series.Name, models.First().Value);
            Assert.Single(models);
        }
        public async void WithNotSignInUser_ShouldThrowException()
        {
            var dbContext = this.GetDbContext();
            var dbCar     = SeedCarsMethods.SeedCar <NewCar>(dbContext);
            var model     = this.GetModel(dbCar.Id);

            var exception = await Assert.ThrowsAsync <InvalidOperationException>(async() =>
                                                                                 await this.CallScheduleTestDriveAsync(model, dbContext, null));

            Assert.Equal(ErrorConstants.NotSignIn, exception.Message);
        }
        public async void WithCarsAndNewCarType_ShouldFilterModelTypesByNewCars()
        {
            var dbContext = this.GetDbContext();
            var dbNewCar  = SeedCarsMethods.SeedCarWithEverything <NewCar>(dbContext);
            var dbUsedCar = SeedCarsMethods.SeedCarWithEverything <UsedCar>(dbContext);
            var service   = this.GetService(dbContext);

            var model = await service.GetSearchModelAsync(dbContext.BaseCars, CarType.NewCar);

            Assert.Single(model.ModelTypes);
            Assert.Single(model.ModelTypes, mt => mt.Value == dbNewCar.ModelType.Name);
        }
        public async void WithSignInUserWithTestDrive_ShouldReturnCorrectTestDriveId()
        {
            var dbContext = this.GetDbContext();
            var dbUser    = SeedUsersMethods.SeedUser(dbContext);
            var dbStatus  = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbCar     = SeedCarsMethods.SeedCarWithTestDrive <NewCar>(dbContext, dbUser.Id, dbStatus);


            var model = await this.CallGetCarViewModelAsync(dbContext, dbCar.Id, true, dbUser.Id);

            Assert.Equal(dbCar.TestDrives.First().Id, model.TestDriveId);
        }
Пример #11
0
        public async void WithNewAndUsedCars_ShouldReturnModelWithCorrectTotalUsedCarsCount()
        {
            var dbContext = this.GetDbContext();
            var service   = this.GetService(dbContext);

            SeedCarsMethods.SeedCar <NewCar>(dbContext);
            SeedCarsMethods.SeedCar <UsedCar>(dbContext);

            var model = await service.GetStatisticsAsync();

            Assert.Equal(1, model.UsedCarsCount);
        }
Пример #12
0
        public async void WithCarsWithDifferentModels_ShouldReturnCorrectModelTypes()
        {
            var dbContext = this.GetDbContext();
            var service   = this.GetService();
            var dbCar1    = SeedCarsMethods.SeedCarWithEverything <UsedCar>(dbContext);
            var dbCar2    = SeedCarsMethods.SeedCarWithEverything <UsedCar>(dbContext);

            var models = await service.GetSeriesFilterModelsAsync(dbContext.BaseCars);

            Assert.Contains(models, m => m.Value == dbCar1.Series.Name);
            Assert.Contains(models, m => m.Value == dbCar2.Series.Name);
            Assert.Equal(2, models.Count);
        }
        public async void WithScheduledTestDriveFromAnother_ShouldSheduleTestDrive()
        {
            var dbContext = this.GetDbContext();

            this.SheduleTestDrive(dbContext);
            var dbUser = SeedUsersMethods.SeedUser(dbContext);
            var dbCar  = SeedCarsMethods.SeedCar <NewCar>(dbContext);
            var model  = this.GetModel(dbCar.Id);

            await this.CallScheduleTestDriveAsync(model, dbContext, dbUser.Id);

            Assert.Equal(2, dbContext.TestDrives.Count());
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
        public async void WithFilteredCars_ShouldReturnModelWithCorrectSeries()
        {
            var dbContext = this.GetDbContext();
            var dbCar1    = SeedCarsMethods.SeedCarWithEverything <NewCar>(dbContext);
            var dbCar2    = SeedCarsMethods.SeedCarWithEverything <NewCar>(dbContext);
            var service   = this.GetService(dbContext);

            var model = await service.GetCarFilterModelAsync(dbContext.BaseCars, dbContext.BaseCars);

            Assert.Equal(2, model.Series.Count);
            Assert.Contains(model.Series, mt => mt.Value == dbCar1.Series.Name && mt.Text == dbCar1.Series.Name);
            Assert.Contains(model.Series, mt => mt.Value == dbCar2.Series.Name && mt.Text == dbCar2.Series.Name);
            Assert.True(model.Series.All(s => s.CarsCount == 1));
        }
        public async void WithSignInUser_ShouldReturnCorrectIsTestDriveScheduledForTheCurrentUser()
        {
            var dbContext = this.GetDbContext();

            var dbSignInUser    = SeedUsersMethods.SeedUser(dbContext);
            var dbNotSignInUser = SeedUsersMethods.SeedUser(dbContext);

            var dbCar = SeedCarsMethods.SeedCarWithEverything <NewCar>(dbContext);

            SeedTestDrivesMethods.SeedUpcomingTestDrive(dbContext, dbCar, dbNotSignInUser.Id);

            var model = await this.CallGetCarViewModelAsync(dbContext, dbCar.Id, true, dbSignInUser.Id);

            Assert.False(model.IsTestDriveScheduled);
        }
        public async void WithCarsAndNewCarType_ShouldFilterYearsByNewCars()
        {
            var dbContext   = this.GetDbContext();
            var newCarYear  = "2020";
            var usedCarYear = "2018";

            SeedCarsMethods.SeedCar <NewCar>(dbContext, newCarYear);
            SeedCarsMethods.SeedCar <UsedCar>(dbContext, usedCarYear);
            var service = this.GetService(dbContext);

            var model = await service.GetSearchModelAsync(dbContext.BaseCars, CarType.NewCar);

            Assert.Single(model.Years);
            Assert.Single(model.Years, m => m.Value == newCarYear);
        }
Пример #19
0
        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 WithUsersWithTestDrivesWithTheSameCar_ShouldReturnCorrectTestDriveIdForTheCurrentUser()
        {
            var dbContext = this.GetDbContext();

            var dbSignInUser    = SeedUsersMethods.SeedUser(dbContext);
            var dbNotSignInUser = SeedUsersMethods.SeedUser(dbContext);

            var dbCar = SeedCarsMethods.SeedCarWithEverything <NewCar>(dbContext);

            var dbSignInUserTestDrive    = SeedTestDrivesMethods.SeedUpcomingTestDrive(dbContext, dbCar, dbSignInUser.Id);
            var dbNotSignInUserTestDrive = SeedTestDrivesMethods.SeedUpcomingTestDrive(dbContext, dbCar, dbNotSignInUser.Id);

            var model = await this.CallGetCarViewModelAsync(dbContext, dbCar.Id, true, dbSignInUser.Id);

            Assert.Equal(dbSignInUserTestDrive.Id, model.TestDriveId);
        }
Пример #21
0
        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));
        }
Пример #22
0
        public void WithTestDrives_ShouldReturnOnlyUserTestDrives()
        {
            var dbContext      = this.GetDbContext();
            var dbUser         = SeedUsersMethods.SeedUser(dbContext);
            var upcomingStatus = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);

            SeedCarsMethods.SeedCarWithTestDrive <NewCar>(dbContext, dbUser.Id, upcomingStatus);
            SeedCarsMethods.SeedCarWithTestDrive <NewCar>(dbContext, "", upcomingStatus);

            var user    = new Mock <ClaimsPrincipal>().Object;
            var service = this.GetService(dbContext, dbUser.Id);

            var models = service.GetAll(user);

            Assert.Equal(dbUser.TestDrives.First().Id, models.First().Id);
            Assert.Single(models);
        }