public async Task ShouldCreateEngineWithEmptyDb() { using (var context = new MockContext(DbHelper.GetNewDbOptions <MockContext>())) { var service = new EngineService(context); var engineVm = new EngineViewModel { Capacity = 1600, Configuration = "Inline 4", FuelType = "Petrol" }; var isCreateSuccess = await service.CreateNewEngine(engineVm); var engine = context.Engines.First(); Assert.True(isCreateSuccess); Assert.Single(context.Engines); Assert.Equal(engineVm.Capacity, engine.Capacity); Assert.Equal(engineVm.Configuration, engine.Configuration); Assert.Equal(engineVm.FuelType, engine.FuelType); } }
public async Task ShouldCreateEngineWithExistingDb() { var dbOptions = DbHelper.GetNewDbOptions <MockContext>(); await CreateTestDatabase(dbOptions); using (var context = new MockContext(dbOptions)) { var service = new EngineService(context); var engineVm = new EngineViewModel { Capacity = 1600, Configuration = "Inline 4", FuelType = "Petrol" }; var isCreateSuccess = await service.CreateNewEngine(engineVm); var engines = context.Engines; var engine1 = engines.First(); var engine5 = engines.Last(); Assert.True(isCreateSuccess); Assert.Equal(5, engines.Count()); Assert.Equal(2400, engine1.Capacity); Assert.Equal("Inline 4 Vtec", engine1.Configuration); Assert.Equal("Petrol", engine1.FuelType); Assert.Equal(engineVm.Capacity, engine5.Capacity); Assert.Equal(engineVm.Configuration, engine5.Configuration); Assert.Equal(engineVm.FuelType, engine5.FuelType); } }
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()); } }