Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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());
            }
        }