public async Task ShouldGetEngines() { var dbOptions = DbHelper.GetNewDbOptions <MockContext>(); await CreateTestDatabase(dbOptions); using (var context = new MockContext(dbOptions)) { var service = new EngineService(context); var results = service.GetEngines(); var engine1 = results.First(); var engine4 = results.Last(); Assert.Equal(4, results.Count()); Assert.Equal(2400, engine1.Capacity); Assert.Equal("Inline 4 Vtec", engine1.Configuration); Assert.Equal("Petrol", engine1.FuelType); Assert.Equal(2000, engine4.Capacity); Assert.Equal("Inline 4 Turbo", engine4.Configuration); Assert.Equal("Diesel", engine4.FuelType); } }
public void ShouldGetNoEnginesWithEmptyDb() { using (var context = new MockContext(emptyDbOptions)) { var service = new EngineService(context); Assert.Empty(service.GetEngines()); } }
public async Task ShouldCreateAndFetchNewVehiclesWithWheelsAndEnginesAsync(VehicleViewModel vehicleVm) { using (var context = new MockContext(DbHelper.GetNewDbOptions <MockContext>())) { // Ensure DB was cleaned up context.ResetValueGenerators(); await context.Database.EnsureDeletedAsync(); var vehicleService = new VehicleService(context); var wheelService = new WheelService(context); var engineService = new EngineService(context); var engineVm = new EngineViewModel { Capacity = 4000, Configuration = "V8", FuelType = "Petrol" }; var wheelVm = new WheelViewModel { Size = 17, Width = 7 }; // Ensure DB emtpy var noVehicles = vehicleService.GetVehicles(); var noEngines = engineService.GetEngines(); var noWheels = wheelService.GetWheels(); Assert.Empty(noVehicles); Assert.Empty(noEngines); Assert.Empty(noWheels); // Add entities var isCreatedOk = await engineService.CreateNewEngine(engineVm); isCreatedOk = isCreatedOk && await wheelService.CreateNewWheel(wheelVm); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // TODO: This should fail in the second execution due to foreign key constraint. We are trying to add a vehicle // with an engine and wheel combination that does not yet exist. This fails during normal execution. // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! isCreatedOk = isCreatedOk && await vehicleService.CreateNewVehicle(vehicleVm); // Ensure all created ok Assert.True(isCreatedOk); // Ensure vehicle added OK var oneEngine = engineService.GetEngines(); var oneWheel = wheelService.GetWheels(); var oneVehicles = vehicleService.GetVehicles(); Assert.Single(oneEngine); Assert.Single(oneWheel); Assert.Single(oneVehicles); // Verify many-to-many tables var oneVehicleEngine = context.VehicleEngines; var fourVehicleWheels = context.VehicleWheels; Assert.Single(oneVehicleEngine); Assert.Equal(4, fourVehicleWheels.Count()); } }