Пример #1
0
        public void ThenDelegatesToVehicleRepository()
        {
            var vehicleForm = new VehicleFormModel {
                VehicleId = DefaultVehicleId
            };

            _vehicleRepo
            .Setup(vr => vr.GetVehicle(UserId, DefaultVehicleId))
            .Returns(new Vehicle());

            var handler = new UpdateVehicle(_vehicleRepo.Object, _photoRepo.Object);

            handler.Execute(UserId, vehicleForm, null);

            _vehicleRepo.Verify(r => r.Update(It.IsAny <Vehicle>()), Times.Once());
        }
Пример #2
0
        public void ForOtherUser_ThenThrows()
        {
            const int anotherUserId = 87;

            var vehicleForm = new VehicleFormModel {
                Name = "vehicle", VehicleId = DefaultVehicleId
            };

            _vehicleRepo
            .Setup(vr => vr.GetVehicle(anotherUserId, DefaultVehicleId))
            .Throws(new InvalidOperationException());

            var handler = new UpdateVehicle(_vehicleRepo.Object, _photoRepo.Object);

            Assert.Throws <UnauthorizedException>(() => handler.Execute(anotherUserId, vehicleForm, null));
        }
Пример #3
0
        public void Throws_ThenWrapsException()
        {
            var vehicleForm = new VehicleFormModel {
                Name = "vehicle", VehicleId = DefaultVehicleId
            };

            _vehicleRepo
            .Setup(vr => vr.GetVehicle(UserId, DefaultVehicleId))
            .Throws(new InvalidOperationException());

            var handler = new UpdateVehicle(_vehicleRepo.Object, _photoRepo.Object);

            Exception ex = Assert.Throws <UnauthorizedException>(() => handler.Execute(UserId, vehicleForm, null));

            Assert.NotNull(ex.InnerException);
            Assert.IsType <InvalidOperationException>(ex.InnerException);
        }
Пример #4
0
        public void ThatAndVehicleDoesNotExist_ThenThrowsNonExistent_ThenThrows()
        {
            // this is the same test as FromOtherUsers_ThenThrows
            const int nonExistentVehicleId = 87;
            var       vehicleForm          = new VehicleFormModel {
                Name = "vehicle", VehicleId = nonExistentVehicleId
            };

            // the repo throws an exception when it can't find a match with both the user and the vehicle
            _vehicleRepo
            .Setup(vr => vr.GetVehicle(UserId, It.IsAny <int>()))
            .Returns((Vehicle)null);

            var handler = new UpdateVehicle(_vehicleRepo.Object, _photoRepo.Object);

            Assert.Throws <HttpException>(() => handler.Execute(UserId, vehicleForm, null));
        }
Пример #5
0
        public void WihtNewPhoto_ThenDelegatesToPhotoRepositoryAddNewPhoto()
        {
            var vehicleForm = new VehicleFormModel {
                VehicleId = DefaultVehicleId
            };

            _vehicleRepo
            .Setup(r => r.GetVehicle(UserId, DefaultVehicleId))
            .Returns(new Vehicle {
                VehicleId = DefaultVehicleId
            });

            var newPhotoFile = Mock.MockPhotoStream().Object;

            var handler = new UpdateVehicle(_vehicleRepo.Object, _photoRepo.Object);

            handler.Execute(UserId, vehicleForm, newPhotoFile);

            _photoRepo.Verify(r => r.Create(DefaultVehicleId, It.IsAny <VehiclePhoto>()), Times.Once());
        }
Пример #6
0
        public void WithExistingPhoto_ThenDelegatesToPhotoRepositoryToDeleteOldPhoto()
        {
            const int vehiclePhotoId = 300;
            var       vehicleForm    = new VehicleFormModel {
                VehicleId = DefaultVehicleId
            };

            _vehicleRepo
            .Setup(vr => vr.GetVehicle(UserId, DefaultVehicleId))
            .Returns(new Vehicle {
                VehicleId = DefaultVehicleId, PhotoId = vehiclePhotoId
            });

            var newPhotoFile = Mock.MockPhotoStream().Object;

            var handler = new UpdateVehicle(_vehicleRepo.Object, _photoRepo.Object);

            handler.Execute(UserId, vehicleForm, newPhotoFile);

            _photoRepo.Verify(r => r.Delete(vehiclePhotoId), Times.Once());
        }