コード例 #1
0
        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);
            }
        }
コード例 #2
0
 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());
            }
        }