Example #1
2
        public void ParseAllFiles()
        {
            Console.WriteLine("Importing cars from JSON");
            db.Configuration.AutoDetectChangesEnabled = false;
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("From file No {0}", i + 1);
                currentListOfCars = this.LoadFile(rootPath + "data." + i + ".json");
                var index = 0;
                foreach (var car in currentListOfCars)
                {
                    var currentCarToImport = new Car
                    {
                        Year = car.Year,
                        TransmissionType = (TransmissionType)car.TransmissionType,
                        Model = car.Model,
                        Price = car.Price
                    };
                    var manufacturer = this.db.Manufacturers.FirstOrDefault(m => m.Name == car.ManufacturerName);
                    if (manufacturer == null)
                    {
                        manufacturer = new Manufacturer
                        {
                            Name = car.ManufacturerName
                        };
                    }
                    currentCarToImport.Manufacturer = manufacturer;

                    var dealer = this.db.Dealers.FirstOrDefault(d => d.Name == car.Dealer.Name);
                    if (dealer == null)
                    {
                        dealer = new Dealer
                        {
                            Name = car.Dealer.Name
                        };
                    }
                    var city = this.db.Cities.FirstOrDefault(c => c.Name == car.Dealer.City);
                    if (city == null)
                    {
                        city = new City
                        {
                            Name = car.Dealer.City
                        };
                    }
                    dealer.Cities.Add(city);
                    currentCarToImport.Dealer = dealer;
                    db.Cars.Add(currentCarToImport);
                    db.SaveChanges();
                    index++;
                    if (index % 100 == 0)
                    {
                        Console.Write(".");
                    }
                }
                db.SaveChanges();
                Console.WriteLine("Importing from file No {0} finished!", i + 1);
            }
            db.Configuration.AutoDetectChangesEnabled = true;
            Console.WriteLine("Importing cars from JSON finished!");
        }
        public void SeedDataFromJsonObjects(IList<CarMap> jsonObjects)
        {
            Console.WriteLine("Seed JSON objects to MSSQL Database...");

            for (int i = 0; i < jsonObjects.Count; i++)
            {
                var jsonObj = jsonObjects[i];

                var car = new Car()
                {
                    Year = jsonObj.Year,
                    TransmissionType = (TransmissionType)jsonObj.TransmissionType,
                    Manufacturer = this.GetOrCreateManufacturer(jsonObj.ManufacturerName),
                    Model = jsonObj.Model,
                    Price = (decimal)jsonObj.Price,
                    Dealer = this.GetDealer(jsonObj.Dealer)
                };

                this.carsDbContext.Cars.Add(car);

                if (i % 100 == 0)
                {
                    Console.Write(".");
                    this.carsDbContext.SaveChanges();
                }
            }

            this.carsDbContext.SaveChanges();

            Console.WriteLine("\nJSON Objects were deserialized and seeded to database sucessfully!\n");
        }
        public void ExpectAddingCarsInRepoThenReturnSortedByYearToHaveCorrectResults()
        {
            byte specialCounter = 20;
            short[] years = { 2013, 2001, 2004, 2000, 2010 };

            List<int> expectedResultYears = new List<int>();
            this.fakeCarsData.Remove(new Car());

            for (var i = 0; i < specialCounter; i++)
            {
                var vartburg = new Car()
                {
                    Id = (i + 1) * 1945,
                    Make = "GDR2",
                    Model = "Kombi" + i,
                    Year = years[i % years.Length]
                };

                this.controller.Add(vartburg);
                expectedResultYears.Add(vartburg.Year);
            }

            var collection = (IList<Car>)this.GetModel(() => this.controller.Sort("year"));

            expectedResultYears.Sort();

            for (int car = 0; car < expectedResultYears.Count; car++)
            {
                Assert.AreEqual(expectedResultYears[car], collection[car].Year);
            }
        }
        private XElement GenerateDealerXElement(Car car, XElement carDealerCitiesXml)
        {
            var dealerXml = new XElement("Dealer",
                new XAttribute("Name", car.Dealer.Name),
                carDealerCitiesXml);

            return dealerXml;
        }
Example #5
1
        public void Remove(Car car)
        {
            if (car == null)
            {
                throw new ArgumentNullException("car", "Cannot remove null car.");
            }

            this.Data.Cars.Remove(car);
        }
        public void Add(Car car)
        {
            if (car == null)
            {
                throw new ArgumentException("Null car cannot be added");
            }

            this.Data.Cars.Add(car);
        }
        public void Remove(Car car)
        {
            if (car == null)
            {
                throw new ArgumentException("Null car cannot be removed");
            }

            this.Data.Cars.Remove(car);
        }
Example #8
0
        public void Import(string directoryPath)
        {
            var files = Directory.EnumerateFiles(directoryPath);

            foreach (var file in files)
            {
                using (var reader = new StreamReader(file))
                {
                    string json = reader.ReadToEnd();
                    var cars = JsonConvert.DeserializeObject<List<JsonCarModel>>(json);

                    foreach (var jsonCarModel in cars)
                    {
                        var newCar = new Car
                        {
                            Model = jsonCarModel.Model,
                            Year = jsonCarModel.Year,
                            Price = jsonCarModel.Price,
                            Dealer = GetOrCreateDealer(jsonCarModel.Dealer.Name),
                            Manufacturer = GetOrCreateManifacturer(jsonCarModel.ManufacturerName),
                            Transmission = GetOrCreateTransmission(jsonCarModel.TransmissionType)
                        };

                        _carsContext.Cars.Add(newCar);
                        _carsContext.SaveChanges();
                    }
                }
            }
        }
Example #9
0
        static void Main()
        {
            // Working!
            var db = new CarsDbContext();
            db.Configuration.AutoDetectChangesEnabled = false;

            for (int i = 0; i <= 4; i++)
            {
                var filePath = "../../../../JSONData/data." + i + ".json";
                var jsonText = File.ReadAllText(filePath);

                JArray allCars = JArray.Parse(jsonText);

                Console.WriteLine("Adding cars from file: {0}", filePath);
                int counter = 0;
                foreach (var car in allCars)
                {
                    Manufacturer newManufacturer = new Manufacturer
                    {
                        Name = car["ManufacturerName"].ToString()
                    };


                    Dealer newDealer = new Dealer
                    {
                        Name = car["Dealer"]["Name"].ToString()
                    };
                    newDealer.Cities.Add(new City { Name = car["Dealer"]["City"].ToString() });

                    Car newCar = new Car
                    {
                        Model = car["Model"].ToString(),
                        TransmisionType = int.Parse(car["TransmissionType"].ToString()),
                        Price = decimal.Parse(car["Price"].ToString()),
                        Year = int.Parse(car["Year"].ToString()),
                        Manufacturer = newManufacturer,
                        Dealer = newDealer
                    };

                    newManufacturer.Cars.Add(newCar);
                    newDealer.Cars.Add(newCar);

                    db.Manufacturers.Add(newManufacturer);
                    db.Dealers.Add(newDealer);
                    db.Cars.Add(newCar);
                    Console.Write(".");

                    if (counter % 100 == 0)
                    {
                        db.SaveChanges();
                    }

                    counter++;
                }
                db.SaveChanges();
                Console.WriteLine("\nFile Read Complete -> All Cars where added successfuly!");
                Console.WriteLine("\n");
            }
            db.Configuration.AutoDetectChangesEnabled = false;
        }
Example #10
0
        public void Add(Car car)
        {
            if (car == null)
            {
                throw new ArgumentNullException("car", "Cannot add null car.");
            }

            this.Data.Cars.Add(car);
        }
        private XElement GenerateCarXElement(Car car)
        {
            var carXml = new XElement("Car",
                new XAttribute("Manufacturer", car.Manufacturer.Name),
                new XAttribute("Model", car.Model),
                new XAttribute("Year", car.Year),
                new XAttribute("Price", Math.Round(car.Price, 2)),
                new XElement("TransmissionType", car.TransmissionType.ToString().ToLower()));

            return carXml;
        }
        public void AddingCarShouldReturnADetail()
        {
            var car = new Car { Id = 15, Make = "BMW", Model = "330d", Year = 2014 };

            var model = (Car)GetModel(() => this.controller.Add(car));

            Assert.AreEqual(1, model.Id);
            Assert.AreEqual("Audi", model.Make);
            Assert.AreEqual("A4", model.Model);
            Assert.AreEqual(2005, model.Year);
        }
        private XElement GenerateCityXElement(Car car)
        {
            var carDealerCitiesXml = new XElement("Cities");

            foreach (var carDealerCity in car.Dealer.Cities)
            {
                var cityXml = new XElement("City", carDealerCity.Name);
                carDealerCitiesXml.Add(cityXml);
            }

            return carDealerCitiesXml;
        }
        public void AddingCarShouldThrowArgumentNullExceptionIfCarMakeIsNull()
        {
            var car = new Car
            {
                Id = 15,
                Make = "",
                Model = "330d",
                Year = 2014
            };

            var model = (Car)this.GetModel(() => this.controller.Add(car));
        }
Example #15
0
        public ActionResult Create(CarInputModel model)
        {
            if (ModelState.IsValid && model!=null)
            {
                var allShippersNames = Data.Shippers.All().Select(x => x.Name);

                if (model.ShipperName!=null && !allShippersNames.Contains(model.ShipperName))
                {
                    var newShipper = new Shipper
                    {
                        Name = model.ShipperName
                    };
                    Data.Shippers.Add(newShipper);
                    Data.SaveChanges();

                    var newCar = new Car
                    {
                        Id = model.Id,
                        Brand = model.Brand,
                        Description = model.Description,
                        Power = model.Power,
                        ShipperId = newShipper.Id,
                        Year = model.Year
                    };
                    _cars.Add(newCar);
                    _cars.SaveChanges();

                    return RedirectToAction("Index");
                }

                if (allShippersNames.Contains(model.ShipperName))
                {
                    var shipperId = Data.Shippers.All().SingleOrDefault(x => x.Name == model.ShipperName).Id;
                    var newCar = new Car
                    {
                        Id = model.Id,
                        Brand = model.Brand,
                        Description = model.Description,
                        Power = model.Power,
                        ShipperId = shipperId,
                        Year = model.Year
                    };

                    _cars.Add(newCar);
                    _cars.SaveChanges();

                    return RedirectToAction("Index");
                }
            }
            return View();
        }
Example #16
0
        public IView Add(Car car)
        {
            if (car== null)
            {
                throw new ArgumentNullException("car","Car cannot be null.");
            }

            if (string.IsNullOrEmpty(car.Make)||(string.IsNullOrEmpty(car.Model)))
            {
                throw new ArgumentOutOfRangeException("car", "Car make and model can not be empty.");
            }
            this.carsData.Add(car);
            return this.Details(car.Id);
        }
        public void Add_ShouldAddCarToCarRepository()
        {
            // Arrange
            var car = new Car { Id = 1, Make = "Audi", Model = "A5", Year = 2005 };
            var db = new Database();
            db.Cars = new List<Car>();
            var count = db.Cars.Count;
            var carsRepository = new CarsRepository(db);

            // Act
            carsRepository.Add(car);

            // Assert
            Assert.AreEqual(1, db.Cars.Count);
        }
        public void GetById_ShouldFindCarById()
        {
            // Arrange
            var car = new Car { Id = 1, Make = "Audi", Model = "A5", Year = 2005 };
            var mock = new Mock<IDatabase>();
            mock.Setup(m => m.Cars).Returns(new List<Car>() { });
            var fakeDB = mock.Object;
            fakeDB.Cars.Add(car);
            var carsRepository = new CarsRepository(fakeDB);

            // Act
            var result = carsRepository.GetById(1);

            // Assert
            mock.Verify(m => m.Cars, Times.Exactly(2));
        }
Example #19
0
        public void AddShouldReturnDetail()
        {
            Car car = new Car()
            {
                Id = 15,
                Make = "Audi",
                Model = "A4",
                Year = 2005
            };

            var view = this.controller.Add(car);
            var model = (Car)view.Model;

            Assert.AreEqual(1, model.Id);
            Assert.AreEqual("Audi", model.Make);
            Assert.AreEqual("A4", model.Model);
            Assert.AreEqual(2005, model.Year);
        }
Example #20
0
        public void SearchMethodCarShouldReturnACarViewList()
        {
            string messageFormat = "Incorrect value for {0} returned";
            var car = new Car
            {
                Id = 2,
                Make = "BMW",
                Model = "325i",
                Year = 2008
            };

            var modelList = (ICollection<Car>)this.GetModel(() => this.controller.Search("No mather what"));
            var model = modelList.FirstOrDefault();

            Assert.AreEqual(car.Id, model.Id, messageFormat, "Id");
            Assert.AreEqual(car.Make, model.Make, messageFormat, "Make");
            Assert.AreEqual(car.Model, model.Model, messageFormat, "Model");
            Assert.AreEqual(car.Year, model.Year, messageFormat, "Year");
        }
Example #21
0
        public IView Add(Car car)
        {
            if (car == null)
            {
                throw new ArgumentNullException("car", "Car cannot be null");
            }

            if (string.IsNullOrEmpty(car.Make) || string.IsNullOrEmpty(car.Model))
            {
                throw new ArgumentNullException("car", "Car make and model cannot be empty");
            }

            // homework add year validation
            if (1900 > car.Year || car.Year > DateTime.Now.Year)
            {
                throw new ArgumentOutOfRangeException("car", "Car year is invalid");
            }

            this.carsData.Add(car);
            return this.Details(car.Id);
        }
        public void All_ShouldReturnAllOfTheCarsInTheDB()
        {
            // Arrange
            var firstCar = new Car { Id = 1, Make = "Audi", Model = "A5", Year = 2005 };
            var secondCar = new Car { Id = 2, Make = "Moskvich", Model = "12-tak", Year = 1980 };
            var thirdCar = new Car { Id = 3, Make = "Lada", Model = "7-marka", Year = 1991 };

            var mock = new Mock<IDatabase>();
            mock.Setup(m => m.Cars).Returns(new List<Car>() { });
            var fakeDB = mock.Object;
            fakeDB.Cars.Add(firstCar);
            fakeDB.Cars.Add(secondCar);
            fakeDB.Cars.Add(thirdCar);
            var carsRepository = new CarsRepository(fakeDB);

            // Act
            var result = carsRepository.All();

            //Assert
            Assert.AreEqual(3, result.Count);
        }
Example #23
0
        public ActionResult Create(InsertCarModel model)
        {
            if (ModelState.IsValid && model != null)
            {
                var car = new Car
                {
                    CarMakeId = model.SelectedMakeId,
                    CarModelId = model.SelectedModelId,
                    CreatedOn = DateTime.Now,
                    OwnerId = this.CurrentUser.Id,
                    Price = model.Price,
                    Details = model.Details,
                    CarYearId = model.SelectedCarYearId
                };

                if (model.Image != null)
                {
                    var pictureData = this.ReadPictureFromFile(model.Image);

                    car.Pictures.Add(new Picture()
                    {
                        Image = pictureData
                    });
                }

                this.Data.Cars.Add(car);
                this.Data.SaveChanges();
                this.cache.RemoveAllCarsWithoutViewModel();
                this.cache.RemoveAllCarsFromCashe();
                return this.RedirectToAction<HomeController>(c => c.Index());
            }

            var inputModel = new CreateCarIndexModel();
            inputModel.DropDownSelections.Makes = this.GetMakes();
            inputModel.InsertCarModel = model;
            return this.View(inputModel);
        }
        public void ExpectToAddAllCarsInTheRepo()
        {
            var specialCount = 20;

            for (int i = 0; i < specialCount; i++)
            {
                var trabant = new Car()
                {
                    Id = (i + 1) * 1000,
                    Make = "GDR",
                    Model = "2" + i,
                    Year = DateTime.Now.Year - 50
                };

                this.controller.Add(trabant);
            }

            var collection = (ICollection<Car>)this.GetModel(() => this.controller.Search("GDR"));

            Assert.AreEqual(specialCount, collection.Count);
        }
Example #25
0
        public void TestDetails_SeeIfReturnsCorrectView_ShouldReturnTrue()
        {
            var car = new Car
            {
                Id = 15,
                Make = "BMW",
                Model = "330d",
                Year = 2014
            };

            this.controller.Add(car);
            var view = this.controller.Details(15);

            Assert.IsNotNull(view);
        }
Example #26
0
        public void TestDetails_SeeIfReturnsAView_SHouldReturnTrue()
        {
            var car = new Car
            {
                Id = 15,
                Make = "BMW",
                Model = "330d",
                Year = 2014
            };

            this.controller.Add(car);
            var view = new View(car);
            Assert.IsTrue(view.GetType() == this.controller.Details(car.Id).GetType());
        }
        public void ExpectIDToHasDefaultIntValueWhenCarWithoutIDPased()
        {
            var someCar = new Car()
            {
                Make = "Some",
                Model = "Nowen",
                Year = DateTime.Now.Year
            };

            this.controller.Add(someCar);

            var collection = (IList<Car>)this.GetModel(() => this.controller.Index());
            var resultCar = collection.First(car => car.Make == "Some");

            Assert.AreEqual(0, resultCar.Id);
        }
        public void ExpectAddingDifferaneCarsInRepoThenReturnSortedByMakerToHaveCorrectResult()
        {
            var carMakers = new List<string>() { "BMW", "Audi", "Volkswagen" };
            var carModels = new List<string>() { "x5", "A7", "Golf 2", "X6", "A7", "Golf 3", "M3", "A8", "Golf 4" };

            IList<Car> carsFromEachGroup = new List<Car>();

            //// Clears all fakeCollection. see Mocks JustMockCarsRepo
            this.fakeCarsData.Remove(new Car());
            Assert.AreEqual(0, this.fakeCarsData.TotalCars);

            for (var i = 0; i < carModels.Count; i++)
            {
                var carToBeAdded = new Car
                {
                    Id = (i + 1) * 1000,
                    Make = carMakers[i % carMakers.Count],
                    Model = carModels[i],
                    Year = DateTime.Now.Year - i
                };

                this.controller.Add(carToBeAdded);
            }

            var sortedCarsByMaker = (ICollection<Car>)this.GetModel(() => this.controller.Sort("make"));
            sortedCarsByMaker.GroupBy(car => car.Make).ToList().ForEach(group => carsFromEachGroup.Add(group.FirstOrDefault()));

            Assert.AreEqual(carMakers.Count, carsFromEachGroup.Count);

            carMakers.Sort();
            for (var i = 0; i < carMakers.Count; i++)
            {
                Assert.AreEqual(carMakers[i], carsFromEachGroup[i].Make);
            }
        }
        public void ExpectToHaveNormaBehaviorWhenCarsWithSameIDAdded()
        {
            int specialLength = 20;
            int theId = 100;

            var simpleCar = new Car()
            {
                Id = theId,
                Make = "New One",
                Model = "Old One",
                Year = DateTime.Now.Year
            };

            for (int i = 0; i < specialLength; i++)
            {
                simpleCar.Make += i;
                this.controller.Add(simpleCar);
            }

            var collection = (List<Car>)this.GetModel(() => this.controller.Index());
            var count = collection.Count(car => car.Id == theId);

            Assert.AreEqual(specialLength, count);
        }
        public void SearchingShouldReturnView()
        {
            var car1 = new Car
            {
                Id = 2,
                Make = "BMW",
                Model = "325i",
                Year = 2008
            };

            var car2 = new Car
            {
                Id = 3,
                Make = "BMW",
                Model = "330d",
                Year = 2007
            };

            var result = new List<Car>();
            result.Add(car1);
            result.Add(car2);
            var expected = (List<Car>)new View(result).Model;
            var actual = (List<Car>)this.controller.Search("BMW").Model;

            Assert.AreEqual(expected[0].Id, actual[0].Id);
            Assert.AreEqual(expected[0].Make, actual[0].Make);
            Assert.AreEqual(expected[0].Model, actual[0].Model);
            Assert.AreEqual(expected[0].Year, actual[0].Year);

            Assert.AreEqual(expected[1].Id, actual[1].Id);
            Assert.AreEqual(expected[1].Make, actual[1].Make);
            Assert.AreEqual(expected[1].Model, actual[1].Model);
            Assert.AreEqual(expected[1].Year, actual[1].Year);

            Assert.AreEqual(expected.Count, actual.Count);
        }