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); } }
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); }