public async Task DeleteVehicleSubmission_ShouldDelete_WhenVINDoesMatchARecord() { //Given var testServer = new TestServer(HostBuilder); var client = testServer.CreateClient(); var carDealerContext = testServer.Services.GetRequiredService <CarDealerContext>(); //setup await client.PostAsJsonAsync("/Roles/Create", ""); var vin = "JF1GH6B60BG810286"; var user = new User { Id = "1", UserName = "******", Email = "*****@*****.**" }; var vehicle = new Vehicle { VinNumber = vin, Id = 1, Make = "toyoya", MarketValue = 7000, Model = "camry", Year = 2020 }; var vehicleSub = new VehicleSubmissions { Vehicle = vehicle, UserId = "1" }; carDealerContext.UserTable.Add(user); carDealerContext.VehicleInventory.Add(vehicle); carDealerContext.VehicleSubmissions.Add(vehicleSub); carDealerContext.SaveChanges(); carDealerContext.VehicleSubmissions.Count().Should().Be(1); //When var response = await client.DeleteAsync($"/VehicleSubmissions/{vin}"); //Then carDealerContext.VehicleSubmissions.Count().Should().Be(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); }
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 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(); }
public void DeleteVehicleSubmission(VehicleSubmissions submission) { if (submission == null) { throw new System.ArgumentNullException(); } _db.VehicleSubmissions.Remove(submission); _db.SaveChanges(); }
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); }
public async Task <IActionResult> AddVehicleSubmission(VehicleSubmissions submission) { //assign and pass it into AddVehicleSubmission var foundVehicle = _context.VehicleInventory.ToList() .FirstOrDefault(x => x.VinNumber == submission.Vehicle.VinNumber); if (foundVehicle != null) { throw new Exception("Already Submitted that Vehicle"); } var price = Int32.Parse(await _marketPrice.GetAverageVehiclePrice(submission.Vehicle.VinNumber)); submission.VehicleId = _vehicleService.AddVehicle(submission.Vehicle); await _service.AddVehicleSubmission(submission, price); return(Ok(new { message = "Vehicle submission added" })); }
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(VehicleSubmissions submission, int price) { if (_db.UserTable.FirstOrDefault(e => e.Id == submission.UserId) == null) { throw new ArgumentException("User not found"); } if (_db.VehicleInventory.FirstOrDefault(e => e.Id == submission.VehicleId) == null) { throw new ArgumentException("Vehicle not found"); } if (_db.VehicleSubmissions.FirstOrDefault(e => e.VehicleId == submission.VehicleId) != null) { throw new ArgumentException("Vehicle already used in previous submission"); } var vehicle = await _db.VehicleInventory.FirstOrDefaultAsync(x => x.Id == submission.VehicleId); submission.Vehicle.MarketValue = price; await _db.VehicleSubmissions.AddAsync(submission); await _db.SaveChangesAsync(); }
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 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(); }
public IActionResult UpdateVehicleSubmission(VehicleSubmissions submission) { _service.UpdateVehicleSubmission(submission); return(Ok(new { message = "Vehicle submission updated" })); }