Пример #1
0
        public void Handle_Should_ThrowException_When_ValidatorThrows()
        {
            var input     = new AddBoardGameCommand(Guid.NewGuid(), "name", 15);
            var exception = new ArgumentException("test");

            _validator.Setup(x => x.Validate(It.IsAny <BoardGame>())).Throws(exception);

            Func <Task> act = async() => await _sut.Handle(input, new CancellationToken());

            act.Should().Throw <ArgumentException>().WithMessage(exception.Message);
        }
Пример #2
0
        public void Handle_Should_ThrowException_When_SaveThrows()
        {
            var input             = new AddBoardGameCommand(Guid.NewGuid(), "name", 15);
            var exception         = new ArgumentException("test");
            var cancellationToken = new CancellationToken();

            _validator.Setup(x => x.Validate(It.IsAny <BoardGame>())).Returns(new ValidationResult());
            _unitOfWork.Setup(x =>
                              x.BoardGameRepository.AddAsync(It.Is((BoardGame b) => b.Id == input.NewBoardGameGuid),
                                                             cancellationToken)).Returns(Task.CompletedTask);
            _unitOfWork.Setup(x => x.SaveChangesAsync(cancellationToken)).Throws(exception);

            Func <Task> act = async() => await _sut.Handle(input, cancellationToken);

            act.Should().Throw <ArgumentException>().WithMessage(exception.Message);
        }
Пример #3
0
        public void Handle_Should_ThrowException_When_GetFormattedValidationMessageQueryThrows()
        {
            var input     = new AddBoardGameCommand(Guid.NewGuid(), "name", 15);
            var exception = new ArgumentException("test");

            _validator.Setup(x => x.Validate(It.IsAny <BoardGame>())).Returns(new ValidationResult(
                                                                                  new List <ValidationFailure>
            {
                new ValidationFailure("test", "test")
            }));
            _validationMessageBuilder.Setup(x => x.CreateMessage(It.IsAny <IList <ValidationFailure> >()))
            .Throws(exception);

            Func <Task> act = async() => await _sut.Handle(input, new CancellationToken());

            act.Should().Throw <ArgumentException>().WithMessage(exception.Message);
        }
Пример #4
0
        public void Handle_Should_ThrowCustomValidationException_When_ValidatorReturnsValidationErrors()
        {
            var input            = new AddBoardGameCommand(Guid.NewGuid(), "name", 15);
            var validationErrors = new List <ValidationFailure>
            {
                new ValidationFailure("test", "test")
            };

            _validator.Setup(x => x.Validate(It.Is((BoardGame game) =>
                                                   game.Id == input.NewBoardGameGuid && game.Name == input.Name && game.Price == input.Price)))
            .Returns(new ValidationResult(validationErrors));
            const string errorsMessage = "errors happened";

            _validationMessageBuilder.Setup(x => x.CreateMessage(validationErrors)).Returns(errorsMessage);

            Func <Task> act = async() => await _sut.Handle(input, new CancellationToken());

            act.Should().Throw <CustomValidationException>().WithMessage(errorsMessage);
        }
Пример #5
0
        public async Task Handle_Should_SaveBoardGame_When_ValidationIsPassed()
        {
            var input = new AddBoardGameCommand(Guid.NewGuid(), "name", 15);

            _validator.Setup(x => x.Validate(It.Is((BoardGame game) =>
                                                   game.Id == input.NewBoardGameGuid && game.Name == input.Name && game.Price == input.Price)))
            .Returns(new ValidationResult());
            var cancellationToken = new CancellationToken();

            _unitOfWork.Setup(x =>
                              x.BoardGameRepository.AddAsync(It.Is((BoardGame b) => b.Id == input.NewBoardGameGuid),
                                                             cancellationToken)).Returns(Task.CompletedTask);
            _unitOfWork.Setup(x => x.SaveChangesAsync(cancellationToken)).Returns(Task.CompletedTask);

            await _sut.Handle(input, cancellationToken);

            _unitOfWork.Verify(
                x => x.BoardGameRepository.AddAsync(It.Is((BoardGame b) => b.Id == input.NewBoardGameGuid),
                                                    cancellationToken), Times.Once);
            _unitOfWork.Verify(x => x.SaveChangesAsync(cancellationToken), Times.Once);
        }