Example #1
0
        public async Task <int> Handle(CreateBookCommand request, CancellationToken cancellationToken)
        {
            var validator        = new CreateBookCommandValidator();
            var validationResult = await validator.ValidateAsync(request);

            if (validationResult.Errors.Count > 0)
            {
                throw new Exceptions.ValidationException(validationResult);
            }

            var author = await _authorRepository.GetAuthorByName(request.AuthorName);

            if (author == null)
            {
                await CreateNewAuthor(request);

                author = await _authorRepository.GetAuthorByName(request.AuthorName);
            }

            var @book = _mapper.Map <Book>(request);

            @book.AuthorId = author.Id;
            @book          = await _bookRepository.AddAsync(@book);

            return(@book.Id);
        }
 public void Create_Book_With_Title_That_Does_Not_Already_Exists()
 {
     using (var context = GetContextWithData())
     {
         var validator = new CreateBookCommandValidator(context);
         validator.ShouldNotHaveValidationErrorFor(x => x.Title, "Title9");
     }
 }
 public void Create_Book_With_No_Categories_Throws_Exception()
 {
     using (var context = GetContextWithData())
     {
         var validator = new CreateBookCommandValidator(context);
         validator.ShouldHaveValidationErrorFor(x => x.Categories, new List <CreateBookModelCategory>());
     }
 }
 public void Create_Book_With_No_Title_Throws_Exception()
 {
     using (var context = GetContextWithData())
     {
         var validator = new CreateBookCommandValidator(context);
         validator.ShouldHaveValidationErrorFor(x => x.Title, string.Empty);
     }
 }
        public CreateBookCommandValidatorTests()
        {
            _publication = new PublicationCommand {
                Edition = 1, Year = DateTime.Today.Year
            };

            var bookRepository       = new Mock <IBookRepository>();
            var publicationValidator = new PublicationCommandValidator();

            _createBookCommandValidator =
                new CreateBookCommandValidator(bookRepository.Object, publicationValidator);
        }
 public void Create_Book_With_Title_That_Already_Exists_Throws_Exception()
 {
     using (var context = GetContextWithData())
     {
         var validator = new CreateBookCommandValidator(context);
         var result    = validator.TestValidate(new CreateBookCommand
         {
             Id         = new Guid(),
             Title      = context.Books.FirstOrDefault()?.Title,
             Categories = context.BookCategories.Select(c => new CreateBookModelCategory {
                 Id = c.Category.Id, Name = c.Category.Name
             }).ToList()
         });
         result.ShouldHaveValidationErrorFor(x => x);
     }
 }
Example #7
0
        public CreateBookCommandHandlerTests()
        {
            _publication = new PublicationCommand {
                Edition = 1, Year = DateTime.Now.Year
            };
            _bookRepository = new Mock <IBookRepository>();
            var publicationValidator = new PublicationCommandValidator();

            var createBookCommandValidator =
                new CreateBookCommandValidator(_bookRepository.Object, publicationValidator);

            _eventPublisher = new Mock <IEventPublisher <BookEvent> >();

            _createBookCommandHandler =
                new CreateBookCommandHandler(createBookCommandValidator, _bookRepository.Object, _eventPublisher.Object);
        }