public void UpdateVehicleMake_ShouldReturnNewVehicleYear()
        {
            using (var context = new VehicleContext())
            {
                //Arrange
                VehicleCRUDService vs = new VehicleCRUDService(context);

                var newYear = 2019;
                var vehicle = vs.CreateVehicle(new Vehicle
                {
                    Make  = "Audi",
                    Model = "Etron",
                    Year  = 2020
                });
                context.SaveChanges();

                //Act
                var stored = context.Vehicles.Where(v => v.Id == vehicle.Id).FirstOrDefault();
                stored.Year = newYear;
                var updated = vs.UpdateVehicle(stored);

                //Assert
                Assert.AreEqual(newYear, updated.Year);
            }
        }
        public void DeleteVehicle_ShouldReturnNullWhenFindVehicle()
        {
            using (var context = new VehicleContext())
            {
                //Arrange
                VehicleCRUDService vs = new VehicleCRUDService(context);

                var vehicle = vs.CreateVehicle(new Vehicle
                {
                    Make  = "BMW",
                    Model = "X7",
                    Year  = 1999
                });

                context.SaveChanges();

                //Act
                var delete = vs.DeleteVehicle(vehicle.Id);
                context.SaveChanges();
                var found = context.Vehicles.Where(v => v.Id == delete.Id).FirstOrDefault();

                //Assert
                Assert.IsNull(found);
            }
        }
        public void GetVehicleWithParams_ShouldReturnCorrectVehicle()
        {
            using (var context = new VehicleContext())
            {
                //Arrange
                VehicleCRUDService vs = new VehicleCRUDService(context);

                var vehicle = vs.CreateVehicle(new Vehicle
                {
                    Make  = "Kia",
                    Model = "Morning",
                    Year  = 2019
                });

                context.SaveChanges();

                //Act
                var found = vs.GetVehiclesWithParams("Kia", "Morning", 2019).FirstOrDefault();


                //Assert
                bool check = false;
                if (found.Make.Equals("Kia") && found.Model.Equals("Morning") && found.Year == 2019)
                {
                    check = true;
                }
                Assert.IsTrue(check);
            }
        }
 public IHttpActionResult GetVehicles([FromUri] FilterModel filter)
 {
     using (var dbcontext = new VehicleContext())
     {
         var vehicleService = new VehicleCRUDService(dbcontext);
         try
         {
             var vehicleList = new List <Vehicle>();
             // Return all vehicles for null filter
             if (filter == null)
             {
                 vehicleList = vehicleService.GetAllVehicles().ToList();
             }
             // Or return vehicles that match params
             else
             {
                 // Will do waterfall matching from Make --> Model --> Year ---> result
                 vehicleList = vehicleService.GetVehiclesWithParams(filter.Make, filter.Model, filter.Year).ToList();
             }
             return(Content(HttpStatusCode.OK, vehicleList));
         }
         catch (Exception)
         {
             return(Content(HttpStatusCode.InternalServerError, "Oops! Something when wrong on our end"));
         }
     }
 }
        public IHttpActionResult CreateVehicle([FromBody] Vehicle vehicle)
        {
            using (var dbcontext = new VehicleContext())
            {
                var vehicleService = new VehicleCRUDService(dbcontext);
                try
                {
                    var v = vehicleService.ExistingVehicle(vehicle);
                    if (v == true)
                    {
                        return(Content(HttpStatusCode.Conflict, "Vehicle already exists"));
                    }
                    else
                    {
                        var  vehicleHelper = new VehicleHelperService();
                        bool validation    = vehicleHelper.VehicleDataValidator(vehicle);

                        if (validation == false)
                        {
                            return(Content(HttpStatusCode.Forbidden, vehicleHelper.errorMsg));
                        }
                        else
                        {
                            var newVehicle = vehicleService.CreateVehicle(vehicle);
                            dbcontext.SaveChanges();
                            return(Content(HttpStatusCode.OK, newVehicle));
                        }
                    }
                }
                catch (Exception)
                {
                    return(Content(HttpStatusCode.BadRequest, "Something wrong with internal server "));
                }
            }
        }
 public IHttpActionResult UpdateVehicle(Vehicle vehicle)
 {
     using (var dbcontext = new VehicleContext())
     {
         var vehicleService = new VehicleCRUDService(dbcontext);
         try
         {
             var v = vehicleService.UpdateVehicle(vehicle);
             dbcontext.SaveChanges();
             return(Content(HttpStatusCode.OK, v));
         }
         catch (Exception)
         {
             return(Content(HttpStatusCode.InternalServerError, "Oops, something is wrong when updating the vehicle"));
         }
     }
 }
        public void CreateVehicle_ShouldReturnNotNull()
        {
            //Arrange
            VehicleContext     context = new VehicleContext();
            VehicleCRUDService vs      = new VehicleCRUDService(context);
            Vehicle            vehicle = null;


            //Act

            vehicle = vs.CreateVehicle(new Vehicle
            {
                Make  = "Toyota",
                Model = "Prius",
                Year  = 2019
            });

            context.SaveChanges();


            //Assert
            Assert.IsNotNull(vehicle);
        }
        public void GetAllVehicle_ShouldReturnListOfVehicle()
        {
            //Arrange
            using (var context = new VehicleContext())
            {
                VehicleCRUDService vs = new VehicleCRUDService(context);

                var vehicle = vs.CreateVehicle(new Vehicle
                {
                    Make  = "BMW",
                    Model = "X7",
                    Year  = 1999
                });

                var vehicle2 = vs.CreateVehicle(new Vehicle
                {
                    Make  = "Adui",
                    Model = "A3",
                    Year  = 2020
                });

                var vehicle3 = vs.CreateVehicle(new Vehicle
                {
                    Make  = "Merc",
                    Model = "E",
                    Year  = 2018
                });


                //Act
                var list = vs.GetAllVehicles();

                //Assert
                Assert.IsNotNull(list);
            }
        }
        public IHttpActionResult GetVehicle(int id)
        {
            using (var dbcontext = new VehicleContext())
            {
                var vehicleService = new VehicleCRUDService(dbcontext);
                try
                {
                    var vehicle = vehicleService.GetVehicle(id);
                    if (vehicle != null)
                    {
                        return(Content(HttpStatusCode.OK, vehicle));
                    }

                    else
                    {
                        return(Content(HttpStatusCode.NotFound, "Vehicle could not be found"));
                    }
                }
                catch (Exception)
                {
                    return(Content(HttpStatusCode.InternalServerError, "Oops! Something when wrong on our end"));
                }
            }
        }
 public IHttpActionResult DeleteVehicle(int id)
 {
     using (var dbcontext = new VehicleContext())
     {
         var vehicleService = new VehicleCRUDService(dbcontext);
         try
         {
             var vehicle = vehicleService.DeleteVehicle(id);
             if (vehicle != null)
             {
                 dbcontext.SaveChanges();
                 return(Content(HttpStatusCode.OK, vehicle));
             }
             else
             {
                 return(Content(HttpStatusCode.NotFound, "Vehicle does not exist"));
             }
         }
         catch (Exception)
         {
             return(Content(HttpStatusCode.InternalServerError, "Something wrong with internal server"));
         }
     }
 }