Пример #1
0
        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);
        }
Пример #2
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();
 }
Пример #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);
        }
        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" }));
 }