public void AddExtraToCar_WhenValidParametersArePassedAndExtraDoesNotExists() { // Arrange var unitOfWorkMock = new Mock <IUnitOfWork>(); var carServiceMock = new Mock <ICarService>(); string extraName = "testExtra"; var carId = 1; var car = new Car() { Id = carId }; var carExtra = new CarsExtras(); var listOfCars = new List <Car>() { car }; var listCarsExtras = new List <CarsExtras>(); var listExtras = new List <Extra>(); carServiceMock.Setup(c => c.GetCar(It.IsAny <int>())).Returns(car); unitOfWorkMock.Setup(u => u.GetRepository <Car>().All()).Returns(listOfCars.AsQueryable()); unitOfWorkMock.Setup(u => u.GetRepository <CarsExtras>().All()).Returns(listCarsExtras.AsQueryable()); unitOfWorkMock.Setup(u => u.GetRepository <Extra>().All()).Returns(listExtras.AsQueryable()); var sut = new ExtraService(unitOfWorkMock.Object); // Act sut.AddExtraToCar(carId, extraName); // Assert unitOfWorkMock.Verify(u => u.GetRepository <CarsExtras>().Add(It.IsAny <CarsExtras>()), Times.Once); unitOfWorkMock.Verify(c => c.SaveChanges(), Times.Exactly(2)); }
public void ThrowArgumentException_WhenInvalidParametersArePassed() { // Arrange var unitOfWorkMock = new Mock <IUnitOfWork>(); var carServiceMock = new Mock <ICarService>(); string extraName = "testExtra"; var carId = 1; var car = new Car() { Id = carId }; var carExtra = new CarsExtras(); var listOfCars = new List <Car>() { car }; var listCarsExtras = new List <CarsExtras>(); var listExtras = new List <Extra>(); carServiceMock.Setup(c => c.GetCar(It.IsAny <int>())).Returns(car); unitOfWorkMock.Setup(u => u.GetRepository <Car>().All()).Returns(listOfCars.AsQueryable()); unitOfWorkMock.Setup(u => u.GetRepository <CarsExtras>().All()).Returns(listCarsExtras.AsQueryable()); unitOfWorkMock.Setup(u => u.GetRepository <Extra>().All()).Returns(listExtras.AsQueryable()); var invalidCarId = -1; var sut = new ExtraService(unitOfWorkMock.Object); // Act && Assert Assert.ThrowsException <ArgumentException>(() => sut.AddExtraToCar(invalidCarId, extraName)); }
public void ThrowArgumentException_WhenCarAlreadyContainsExtra() { // Arrange var unitOfWorkMock = new Mock <IUnitOfWork>(); var carServiceMock = new Mock <ICarService>(); string extraName = "testExtra"; var extraId = 1; var carId = 1; var carExtra = new CarsExtras() { CarId = carId, ExtraId = extraId }; var extra = new Extra() { Id = extraId, Name = extraName }; var car = new Car() { Id = carId }; car.CarsExtras.Add(carExtra); extra.CarsExtras.Add(carExtra); carExtra.Car = car; carExtra.Extra = extra; var listOfCars = new List <Car>() { car }; var listExtras = new List <Extra>() { extra }; var listCarsExtras = new List <CarsExtras>() { carExtra }; carServiceMock.Setup(c => c.GetCar(It.IsAny <int>())).Returns(car); unitOfWorkMock.Setup(u => u.GetRepository <Car>().All()).Returns(listOfCars.AsQueryable()); unitOfWorkMock.Setup(u => u.GetRepository <CarsExtras>().All()).Returns(listCarsExtras.AsQueryable()); unitOfWorkMock.Setup(u => u.GetRepository <Extra>().All()).Returns(listExtras.AsQueryable()); var sut = new ExtraService(unitOfWorkMock.Object); // Act && Assert Assert.ThrowsException <ArgumentException>(() => sut.AddExtraToCar(carId, extraName)); }