public void DeleteVehicleSubmission_ShouldDeleteVehicle()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            //When
            var submission = new VehicleSubmissions()
            {
                UserId    = "abc123",
                TimeStamp = new DateTime(12, 12, 12),
                VehicleId = 1
            };

            databaseContext.VehicleSubmissions.Add(submission);
            databaseContext.SaveChanges();
            submission.TimeStamp = new DateTime(1999, 1, 13, 3, 57, 32, 11);
            vehicleSubmissionsService.DeleteVehicleSubmission(submission);
            //Then
            var result = databaseContext.VehicleSubmissions.ToList().Count;

            result.Should().Be(0);
        }
        public void GetVehicleSubmissionByVin_ShouldReturnNull_WhenUserDoesntExist()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            var vehicle = new Vehicle
            {
                Id   = 1, Make = "testMake", MarketValue = 10000, Model = "TestModel", VinNumber = "1GCCT19X738198141",
                Year = 2020
            };

            databaseContext.VehicleSubmissions.Add(new VehicleSubmissions {
                UserId = "12", VehicleId = 2, Vehicle = vehicle
            });
            databaseContext.SaveChanges();
            //When
            Action action = () => vehicleSubmissionsService.GetVehicleSubmissionsByVIN("1GCCT19X738198141");

            //Then
            action.Should().Throw <NullReferenceException>();
            databaseContext.Database.EnsureDeleted();
        }
        public void GetVehicleSubmissionByVin_ShouldReturnVehicleSubmission_WhenCalled()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            var user = new User
            {
                Id = "1", Email = "*****@*****.**", UserName = "******", FirstName = "ha", LastName = "Ha"
            };

            databaseContext.UserTable.Add(user);
            //setup Vehicles
            var vehicle = new Vehicle
            {
                Id = 2, Make = "toyoya", MarketValue = 12313, Model = "camry", VinNumber = "1GCCT19X738198141", Year = 1997
            };

            databaseContext.VehicleInventory.Add(vehicle);
            databaseContext.VehicleSubmissions.Add(new VehicleSubmissions {
                UserId = "1", VehicleId = 2
            });
            databaseContext.SaveChanges();
            //When
            var response = vehicleSubmissionsService.GetVehicleSubmissionsByVIN("1GCCT19X738198141");

            //Then
            response.Vehicle.Should().Be(vehicle);
            databaseContext.Database.EnsureDeleted();
        }
        public void AddVehicleSubmissionUnitTest_ShouldThrowArgumentException_WhenThereIsNoVehicle()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext = new CarDealerContext(options);
            var user            = new User {
                Id = "1", Email = "*****@*****.**", UserName = "******"
            };

            databaseContext.UserTable.Add(user);
            databaseContext.SaveChanges();
            marketMock.Setup(x => x.GetAverageVehiclePrice("jnksjnf")).ReturnsAsync("nice");
            //When
            var service = new VehicleSubmissionsService(databaseContext, marketMock.Object);
            var sub     = new VehicleSubmissions {
                TimeStamp = new DateTime(), UserId = "1"
            };
            Func <Task> action = async() => await service.AddVehicleSubmission(sub, 4984982);

            //Then
            action.Should().Throw <ArgumentException>().WithMessage("Vehicle not found");
            databaseContext.Database.EnsureDeleted();
        }
Exemple #5
0
        public void GetAllSubmissions_ShouldReturn1_WhenListHas1Element()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            //When
            User MyUser = new User()
            {
                Id = "abc123", Email = "*****@*****.**", PasswordHash = "xxxxxx"
            };
            Vehicle vehicle = new Vehicle()
            {
                Id = 1
            };

            databaseContext.UserTable.Add(MyUser);
            databaseContext.VehicleInventory.Add(vehicle);
            var submission = new VehicleSubmissions()
            {
                User      = MyUser,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle
            };

            databaseContext.VehicleSubmissions.Add(submission);
            databaseContext.SaveChanges();
            var result = vehicleSubmissionsService.GetAllVehicleSubmissionsByUser("abc123").Count;

            //Then
            result.Should().Be(1);
        }
Exemple #6
0
        public void GetAllSubmissions_ShouldReturn3_WhenListHas3Elements()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            //When
            User MyUser = new User()
            {
                Id = "abc123"
            };
            Vehicle vehicle1 = new Vehicle()
            {
                Id = 1, Make = "Toyota"
            };
            Vehicle vehicle2 = new Vehicle()
            {
                Id = 2, Make = "Chevy"
            };
            Vehicle vehicle3 = new Vehicle()
            {
                Id = 3, Make = "SUV"
            };
            var submission1 = new VehicleSubmissions()
            {
                User      = MyUser,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle1
            };
            var submission2 = new VehicleSubmissions()
            {
                User      = MyUser,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle2
            };
            var submission3 = new VehicleSubmissions()
            {
                User      = MyUser,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle3
            };

            databaseContext.VehicleSubmissions.Add(submission1);
            databaseContext.VehicleSubmissions.Add(submission2);
            databaseContext.VehicleSubmissions.Add(submission3);
            databaseContext.SaveChanges();
            var result = vehicleSubmissionsService.GetAllVehicleSubmissionsByUser("abc123");

            //Then
            result.Count.Should().Be(3);
        }
Exemple #7
0
        public void DeleteVehicleSubmissionByVIN_ShouldThrowException_WhenCalledWithAVINThatDoesntExist()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext = new CarDealerContext(options);
            //When
            var    service = new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            Action action  = () => service.DeleteVehicleSubmissionByVIN("4T1BF3EK5BU638805");

            //Then
            action.Should().Throw <InvalidOperationException>().WithMessage("delete vehicle submission is null ");
        }
Exemple #8
0
        public void DeleteVehicleSubmissionByVIN_ShouldThrowException_WhenCalledWithoutVIN()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext = new CarDealerContext(options);
            //When
            var    service = new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            Action action  = () => service.DeleteVehicleSubmissionByVIN(null);

            //Then
            action.Should().Throw <ArgumentNullException>();
        }
Exemple #9
0
        public void UpdateVehicleSubmission_ShouldThrowException_WhenPassedNull()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            //When
            Action action = () => vehicleSubmissionsService.UpdateVehicleSubmission(null);

            //Then
            action.Should().Throw <System.ArgumentNullException>();
        }
Exemple #10
0
        public void GetAllSubmissions_ShouldReturn0_WhenListIsEmpty()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            //When
            var result = vehicleSubmissionsService.GetAllVehicleSubmissionsByUser("abc123").Count;

            //Then
            result.Should().Be(0);
        }
        public void AddVehicleSubmissionUnitTest_ShouldThrowArgumentException_WhenThereIsNoUser()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext = new CarDealerContext(options);


            marketMock.Setup(x => x.GetAverageVehiclePrice("jnksjnf")).ReturnsAsync("nice");
            //When
            var service = new VehicleSubmissionsService(databaseContext, marketMock.Object);
            var sub     = new VehicleSubmissions()
            {
                TimeStamp = new DateTime(), UserId = "1"
            };
            Func <Task> action = async() => await service.AddVehicleSubmission(sub, 1461);

            //Then
            action.Should().Throw <ArgumentException>().WithMessage("User not found");
            databaseContext.Database.EnsureDeleted();
        }
        public async Task VehicleSubmissionDeleteByID_ShouldThrowError_WhenCalledWithNoUser()
        {
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            //When
            var vehicle = new Vehicle()
            {
                Id = 1, Make = "Toyota", Model = "camry", VinNumber = "WDBUF83J75X173935", Year = 1997
            };
            var user = new User {
                Id = "abc123", Email = "*****@*****.**", UserName = "******", FirstName = "kevin", LastName = "huynh", PasswordHash = "sjkdfsf"
            };
            var submission = new VehicleSubmissions()
            {
                UserId    = "abc123",
                TimeStamp = new DateTime(12, 12, 12),
                VehicleId = 1,
                Vehicle   = vehicle
            };
            await databaseContext.VehicleInventory.AddAsync(vehicle);

            await databaseContext.UserTable.AddAsync(user);

            await databaseContext.SaveChangesAsync();

            await vehicleSubmissionsService.AddVehicleSubmission(submission, 51519);

            databaseContext.VehicleSubmissions.Count().Should().Be(1);
            var    deleteUser = databaseContext.UserTable.FirstOrDefault(x => true);
            var    subId      = databaseContext.VehicleSubmissions.FirstOrDefault(x => true).Id;
            Action action     = () => vehicleSubmissionsService.DeleteVehicleSubmissionById("1sdf");

            //Then
            action.Should().Throw <ArgumentOutOfRangeException>();
        }
        public async Task AddVehicleSubmission_ShouldIncreaseListCountTo1_WhenValidInfoIsPassed()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext = new CarDealerContext(options);

            mockMarketValueService.Setup(x => x.GetAverageVehiclePrice("abc123xyzz")).ReturnsAsync("123");
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            User user = new User()
            {
                Id = "abc123"
            };
            Vehicle vehicle = new Vehicle()
            {
                Make = "Toyota", Model = "Camry", Year = 1994, VinNumber = "abc123xyzz"
            };

            databaseContext.UserTable.Add(user);
            databaseContext.VehicleInventory.Add(vehicle);
            databaseContext.SaveChanges();
            var submission = new VehicleSubmissions()
            {
                UserId    = user.Id,
                User      = user,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle,
                VehicleId = vehicle.Id
            };
            //When
            await vehicleSubmissionsService.AddVehicleSubmission(submission, 4529);

            //Then
            databaseContext.VehicleSubmissions.Count().Should().Be(1);
            databaseContext.Database.EnsureDeleted();
        }
        public void GetVehicleSubmissionByVin_ShouldReturnNull_WhenVehicleDoesntExist()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext           = new CarDealerContext(options);
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            var user = new User
            {
                Id = "1", Email = "*****@*****.**", UserName = "******", FirstName = "ha", LastName = "Ha"
            };

            databaseContext.UserTable.Add(user);
            databaseContext.SaveChanges();
            //When
            Action action = () => vehicleSubmissionsService.GetVehicleSubmissionsByVIN("1GCCT19X738198141");

            //Then
            action.Should().Throw <NullReferenceException>();
            databaseContext.Database.EnsureDeleted();
        }
        public async Task AddVehicleSubmission_ShouldIncreaseListCountTo3_WhenInvoked3Times()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext = new CarDealerContext(options);

            mockMarketValueService.Setup(x => x.GetAverageVehiclePrice("abc1213xyzz")).ReturnsAsync("123");
            mockMarketValueService.Setup(x => x.GetAverageVehiclePrice("abc2123xyzz")).ReturnsAsync("123");
            mockMarketValueService.Setup(x => x.GetAverageVehiclePrice("abc123xyz3z")).ReturnsAsync("123");
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            //When
            User user = new User()
            {
                Id = "abc123"
            };
            Vehicle vehicle1 = new Vehicle()
            {
                Id = 1, Make = "Toyota", Model = "Camry", Year = 1994, VinNumber = "abc1213xyzz"
            };
            Vehicle vehicle2 = new Vehicle()
            {
                Id = 2, Make = "Toyota", Model = "Camry", Year = 1994, VinNumber = "abc2123xyzz"
            };
            Vehicle vehicle3 = new Vehicle()
            {
                Id = 3, Make = "Toyota", Model = "Camry", Year = 1994, VinNumber = "abc123xyz3z"
            };

            databaseContext.UserTable.Add(user);
            databaseContext.VehicleInventory.Add(vehicle1);
            databaseContext.VehicleInventory.Add(vehicle2);
            databaseContext.VehicleInventory.Add(vehicle3);
            databaseContext.SaveChanges();
            var submission1 = new VehicleSubmissions()
            {
                UserId    = user.Id,
                User      = user,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle1,
                VehicleId = 1
            };
            var submission2 = new VehicleSubmissions()
            {
                UserId    = user.Id,
                User      = user,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle2,
                VehicleId = 2
            };
            var submission3 = new VehicleSubmissions()
            {
                UserId    = user.Id,
                User      = user,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle3,
                VehicleId = 3
            };
            await vehicleSubmissionsService.AddVehicleSubmission(submission1, 74524);

            await vehicleSubmissionsService.AddVehicleSubmission(submission2, 12345);

            await vehicleSubmissionsService.AddVehicleSubmission(submission3, 75465);

            var result = vehicleSubmissionsService.GetAllVehicleSubmissionsByUser("abc123").Count;

            //Then
            result.Should().Be(3);
            databaseContext.Database.EnsureDeleted();
        }
        public async Task DuplicateVehicleIdShouldThrowException()
        {
            //Given
            var options = new DbContextOptionsBuilder <CarDealerContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;
            var databaseContext = new CarDealerContext(options);

            mockMarketValueService.Setup(x => x.GetAverageVehiclePrice("abc1213xyzz")).ReturnsAsync("123");
            mockMarketValueService.Setup(x => x.GetAverageVehiclePrice("abc2123xyzz")).ReturnsAsync("123");
            var vehicleSubmissionsService =
                new VehicleSubmissionsService(databaseContext, mockMarketValueService.Object);
            //When
            User user = new User()
            {
                Id = "abc123"
            };
            Vehicle vehicle1 = new Vehicle()
            {
                Make = "Toyota", Model = "Camry", Year = 1994, VinNumber = "abc1213xyzz"
            };
            Vehicle vehicle2 = new Vehicle()
            {
                Make = "Toyota", Model = "Camry", Year = 1994, VinNumber = "abc2123xyzz"
            };
            await databaseContext.UserTable.AddAsync(user);

            await databaseContext.VehicleInventory.AddAsync(vehicle1);

            await databaseContext.VehicleInventory.AddAsync(vehicle2);

            await databaseContext.SaveChangesAsync();

            var submission1 = new VehicleSubmissions()
            {
                UserId    = user.Id,
                User      = user,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle1,
                VehicleId = 1
            };
            var submission2 = new VehicleSubmissions()
            {
                UserId    = user.Id,
                User      = user,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle2,
                VehicleId = 2
            };
            var submission3 = new VehicleSubmissions()
            {
                UserId    = user.Id,
                User      = user,
                TimeStamp = new DateTime(12, 12, 12),
                Vehicle   = vehicle2,
                VehicleId = 2
            };
            await vehicleSubmissionsService.AddVehicleSubmission(submission1, 789456);

            await vehicleSubmissionsService.AddVehicleSubmission(submission2, 789456);

            Func <Task> action = async() => await vehicleSubmissionsService.AddVehicleSubmission(submission3, 789456);

            //Then
            action.Should().Throw <System.ArgumentException>().WithMessage("Vehicle already used in previous submission");
            databaseContext.Database.EnsureDeleted();
        }