private TestDrive SheduleTestDrive(ApplicationDbContext dbContext, string userId = "")
        {
            var dbStatus    = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbTestDrive = SeedTestDrivesMethods.SeedTestDriveWithCar <NewCar>(dbContext, userId, dbStatus);

            return(dbTestDrive);
        }
Example #2
0
        public async void WithotPassedStatus_ShouldTrowException()
        {
            var dbContext   = this.GetDbContext();
            var service     = this.GetService(dbContext);
            var dbTestDrive = SeedTestDrivesMethods.SeedTestDriveWithStatus(dbContext, TestDriveStatus.Canceled);

            var exception = await Assert.ThrowsAsync <InvalidOperationException>(
                async() => await service.ChangeTestDriveStatusToPassedAsync(dbTestDrive.Id));
        }
        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);
        }
Example #4
0
        public async void WithUpcomingTestDrive_ShouldChangeStatusToPassed()
        {
            var dbContext   = this.GetDbContext();
            var service     = this.GetService(dbContext);
            var dbTestDrive = SeedTestDrivesMethods.SeedTestDrive(dbContext, "", this.UpcomingStatus);

            await service.ChangeTestDriveStatusToPassedAsync(dbTestDrive.Id);

            Assert.Equal(TestDriveStatus.Passed.ToString(), dbTestDrive.Status.Name);
        }
Example #5
0
        public async void WithCorrectId_ShouldDeleteTestDrive()
        {
            var dbContext   = this.GetDbContext();
            var dbTestDrive = SeedTestDrivesMethods.SeedTestDriveWithStatus(dbContext);
            var service     = this.GetService(dbContext);

            await service.DeleteAsync(dbTestDrive.Id);

            Assert.Empty(dbContext.TestDrives);
        }
Example #6
0
        public void WithTestDrive_ShouldReturnTestDrive()
        {
            var dbContext = this.GetDbContext();

            SeedTestDrivesMethods.SeedTestDriveWithEverything(dbContext);

            var models = this.CallGetAllSorted(dbContext);

            Assert.Single(models);
        }
Example #7
0
        public async void WithTestDriveOnAnotherUser_ShouldThrowException()
        {
            var dbContext        = this.GetDbContext();
            var dbUser           = SeedUsersMethods.SeedUser(dbContext);
            var dbUpcomingStatus = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbTestDrive      = SeedTestDrivesMethods.SeedTestDriveWithCar <NewCar>(dbContext, "", dbUpcomingStatus);
            var service          = this.GetService(dbContext, dbUser.Id);
            var user             = new Mock <ClaimsPrincipal>().Object;

            await Assert.ThrowsAnyAsync <Exception>(async() => await service.GetByIdAsync(dbTestDrive.Id, user));
        }
Example #8
0
        public async void WithCanceledTestDrive_ShouldThrowException()
        {
            var dbContext   = this.GetDbContext();
            var service     = this.GetService(dbContext);
            var dbTestDrive = SeedTestDrivesMethods.SeedTestDriveWithStatus(dbContext, TestDriveStatus.Canceled);

            var exception = await Assert.ThrowsAsync <InvalidOperationException>(
                async() => await service.ChangeTestDriveStatusToPassedAsync(dbTestDrive.Id));

            Assert.Equal(ErrorConstants.StatusIsNotUpcoming, exception.Message);
        }
Example #9
0
        public void WithBiggerPageNumber_ShouldReturnEmptyCollection()
        {
            var dbContext = this.GetDbContext();

            SeedTestDrivesMethods.SeedTestDriveWithEverything(dbContext);
            var pageNumber = 2;

            var models = this.CallGetAllSorted(dbContext, pageNumber);

            Assert.Empty(models);
        }
        public async void WithUpcomingTestDrive_ShouldCancelTestDrive()
        {
            var dbContext        = this.GetDbContext();
            var dbUser           = SeedUsersMethods.SeedUser(dbContext);
            var dbUpcomingStatus = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbTestDrive      = SeedTestDrivesMethods.SeedTestDriveWithCar <NewCar>(dbContext, dbUser.Id, dbUpcomingStatus);

            await this.CallCancelTestDriveAsync(dbContext, dbTestDrive.Id, dbUser.Id);

            Assert.Equal(TestDriveStatus.Canceled.ToString(), dbTestDrive.Status.Name);
        }
        public async void WithCanceledTestDrive_ShouldThrowExcpetion()
        {
            var dbContext = this.GetDbContext();
            var dbUser    = SeedUsersMethods.SeedUser(dbContext);

            SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbTestDrive = SeedTestDrivesMethods.SeedTestDriveWithCar <NewCar>(dbContext, dbUser.Id, this.CanceledStatus);

            var exception = await Assert.ThrowsAsync <ArgumentException>(async() =>
                                                                         await this.CallCancelTestDriveAsync(dbContext, dbTestDrive.Id, dbUser.Id));

            Assert.Equal(ErrorConstants.UpcomingStatusRequired, exception.Message);
        }
        public async void WithUpcomingTestDriveFromAnotherUser_ShouldThrowExcpetion()
        {
            var dbContext        = this.GetDbContext();
            var notSignInUser    = SeedUsersMethods.SeedUser(dbContext);
            var signInUser       = SeedUsersMethods.SeedUser(dbContext);
            var dbUpcomingStatus = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbTestDrive      = SeedTestDrivesMethods.SeedTestDriveWithCar <NewCar>(dbContext, notSignInUser.Id, dbUpcomingStatus);

            var exception = await Assert.ThrowsAsync <ArgumentException>(async() =>
                                                                         await this.CallCancelTestDriveAsync(dbContext, dbTestDrive.Id, signInUser.Id));

            Assert.Equal(ErrorConstants.IncorrectId, exception.Message);
        }
Example #13
0
        public async void WithCorrectId_ShouldReturnTestDrive()
        {
            var dbContext        = this.GetDbContext();
            var dbUser           = SeedUsersMethods.SeedUser(dbContext);
            var dbUpcomingStatus = SeedStatusesMethods.SeedStatus(dbContext, TestDriveStatus.Upcoming);
            var dbTestDrive      = SeedTestDrivesMethods.SeedTestDriveWithCar <NewCar>(dbContext, dbUser.Id, dbUpcomingStatus);
            var service          = this.GetService(dbContext, dbUser.Id);
            var user             = new Mock <ClaimsPrincipal>().Object;

            var model = await service.GetByIdAsync(dbTestDrive.Id, user);

            Assert.Equal(dbTestDrive.Id, model.Id);
        }
        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 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);
        }
        public async void WithTestDrives_ShouldReturnModelWithCorrectUsedCarsTestDrivesFromPast24HoursCount()
        {
            var dbContext = this.GetDbContext();
            var service   = this.GetService(dbContext);

            var yeasterday = this.GetYearterdayTime();
            var today      = DateTime.UtcNow;

            this.SeedTestDrivesWithCars(dbContext, today);
            SeedTestDrivesMethods.SeedTestDriveWithCar <UsedCar>(dbContext, yeasterday);
            this.SeedTestDrivesWithCars(dbContext, yeasterday);
            dbContext.SaveChanges();

            var model = await service.GetStatisticsAsync();

            Assert.Equal(1, model.UsedCarsTestDrivesFromPast24HoursCount);
        }
 private void SeedTestDrivesWithCars(ApplicationDbContext dbContext, DateTime scheduleDate)
 {
     SeedTestDrivesMethods.SeedTestDriveWithCar <NewCar>(dbContext, scheduleDate);
     SeedTestDrivesMethods.SeedTestDriveWithCar <UsedCar>(dbContext, scheduleDate);
 }