public void Should_Validate_Author_Without_Publisher()
        {
            var bookPublishValidator = Resolve <IBookPublishValidator>();
            var bookRepository       = Resolve <IBookRepository>();
            var publisher            = new PublisherBuilder().Build();

            var author = new AuthorBuilder()
                         .Build();

            var book = new BookBuilder()
                       .Build();

            var authorBook = new AuthorBookBuilder().WithAuthor(author).WithBook(book).Build();

            AddEntities(publisher, author, book, authorBook);

            book = bookRepository.Get(book.Id).FirstOrDefault();

            Action act = () => bookPublishValidator.ValidatePublish(book, publisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"The following authors do not have publishers on his register:{Environment.NewLine}{author.FirstName}" +
                         $"{Environment.NewLine}The publisher of publication's book must be from one of the authors!");
        }
        public void Should_Validatebook_Already_Published()
        {
            var bookPublishValidator = Resolve <IBookPublishValidator>();
            var bookRepository       = Resolve <IBookRepository>();

            var publisher = new PublisherBuilder().Build();

            var author = new AuthorBuilder()
                         .WithPublisher(publisher)
                         .Build();

            var book = new BookBuilder()
                       .WithPublisher(publisher)
                       .Build();

            var authorBook = new AuthorBookBuilder()
                             .WithAuthor(author)
                             .WithBook(book)
                             .Build();

            AddEntities(publisher, author, book, authorBook);

            book = bookRepository.Get(book.Id).FirstOrDefault();

            Action act = () => bookPublishValidator.ValidatePublish(book, publisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"Book ({book.Id}) is already published!");
        }
        public void Should_Validate_publisher_Different_From_Authors()
        {
            var bookPublishValidator = Resolve <IBookPublishValidator>();
            var bookRepository       = Resolve <IBookRepository>();

            var publisher        = new PublisherBuilder().Build();
            var anotherPublisher = new PublisherBuilder().Build();

            var author = new AuthorBuilder()
                         .WithPublisher(publisher)
                         .Build();

            var book = new BookBuilder()
                       .Build();

            var authorBook = new AuthorBookBuilder().WithAuthor(author).WithBook(book).Build();

            AddEntities(publisher, anotherPublisher, author, book, authorBook);

            book = bookRepository.Get(book.Id).FirstOrDefault();

            Action act = () => bookPublishValidator.ValidatePublish(book, anotherPublisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"{Environment.NewLine}The publisher of publication's book must be from one of the authors!");
        }
        public void Should_Validate_Publish_With_Excedent_Authors()
        {
            var bookPublishValidator = Resolve <IBookPublishValidator>();
            var bookRepository       = Resolve <IBookRepository>();

            var publisher = new PublisherBuilder().Build();

            var authorBuilder = new AuthorBuilder().WithPublisher(publisher);
            var author        = authorBuilder.Build();
            var author2       = authorBuilder.Build();
            var author3       = authorBuilder.Build();
            var author4       = authorBuilder.Build();

            var book = new BookBuilder().Build();

            var authorBookBuilder = new AuthorBookBuilder().WithBook(book);
            var authorBook        = authorBookBuilder.WithAuthor(author).Build();
            var authorBook2       = authorBookBuilder.WithAuthor(author2).Build();
            var authorBook3       = authorBookBuilder.WithAuthor(author3).Build();
            var authorBook4       = authorBookBuilder.WithAuthor(author4).Build();

            var authorsBook = new List <AuthorBookEntity> {
                authorBook, authorBook2, authorBook3, authorBook4
            };

            AddEntities(publisher, author, author2, author3, author4, book, authorBook, authorBook2, authorBook3, authorBook4);
            book = bookRepository.Get(book.Id).FirstOrDefault();

            Action act = () => bookPublishValidator.ValidatePublish(book, publisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"Book can't have more than 3 authors!");
        }
        public void Should_Validate_Publish_With_Excedent_Authors()
        {
            _publisher = new PublisherBuilder().Build();

            var authorBuilder = new AuthorBuilder().WithPublisher(_publisher);
            var author        = authorBuilder.Build();
            var author2       = authorBuilder.Build();
            var author3       = authorBuilder.Build();
            var author4       = authorBuilder.Build();

            _book = new BookBuilder().Build();

            var authorBookBuilder = new AuthorBookBuilder().WithBook(_book);
            var authorBook        = authorBookBuilder.WithAuthor(author).Build();
            var authorBook2       = authorBookBuilder.WithAuthor(author2).Build();
            var authorBook3       = authorBookBuilder.WithAuthor(author3).Build();
            var authorBook4       = authorBookBuilder.WithAuthor(author4).Build();

            var authorsBook = new List <AuthorBookEntity> {
                authorBook, authorBook2, authorBook3, authorBook4
            };

            _book.AuthorsBook = authorsBook;

            Action act = () => _bookPublishValidator.ValidatePublish(_book, _publisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"Book can't have more than 3 authors!");
        }
        public void Should_Validate_Book_Already_Published()
        {
            _publisher = new PublisherBuilder().Build();

            var author = new AuthorBuilder()
                         .WithPublisher(_publisher)
                         .Build();

            _book = new BookBuilder()
                    .WithPublisher(_publisher)
                    .Build();

            var authorBook  = new AuthorBookBuilder().WithAuthor(author).WithBook(_book).Build();
            var authorsBook = new List <AuthorBookEntity> {
                authorBook
            };

            _book.AuthorsBook = authorsBook;

            Action act = () => _bookPublishValidator.ValidatePublish(_book, _publisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"Book ({_book.Id}) is already published!");
        }
        public void Should_Validate_Publisher_Different_From_Authors()
        {
            _publisher = new PublisherBuilder().Build();
            var anotherPublisher = new PublisherBuilder().Build();

            var author = new AuthorBuilder()
                         .WithPublisher(_publisher)
                         .Build();

            _book = new BookBuilder()
                    .Build();

            var authorBook  = new AuthorBookBuilder().WithAuthor(author).WithBook(_book).Build();
            var authorsBook = new List <AuthorBookEntity> {
                authorBook
            };

            _book.AuthorsBook = authorsBook;

            Action act = () => _bookPublishValidator.ValidatePublish(_book, anotherPublisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"{Environment.NewLine}The publisher of publication's book must be from one of the authors!");
        }
        public void Should_Validate_Publish_With_Excedent_Authors()
        {
            var bookBll        = Resolve <IBookBll>();
            var bookRepository = Resolve <IBookRepository>();

            var publisher = new PublisherBuilder().Build();

            var authorBuilder = new AuthorBuilder().WithPublisher(publisher);
            var author        = authorBuilder.Build();
            var author2       = authorBuilder.Build();
            var author3       = authorBuilder.Build();
            var author4       = authorBuilder.Build();

            var book = new BookBuilder().Build();

            var authorBookBuilder = new AuthorBookBuilder().WithBook(book);
            var authorBook        = authorBookBuilder.WithAuthor(author).Build();
            var authorBook2       = authorBookBuilder.WithAuthor(author2).Build();
            var authorBook3       = authorBookBuilder.WithAuthor(author3).Build();
            var authorBook4       = authorBookBuilder.WithAuthor(author4).Build();

            var authorsBook = new List <AuthorBookEntity> {
                authorBook, authorBook2, authorBook3, authorBook4
            };

            AddEntities(publisher, author, author2, author3, author4, book, authorBook, authorBook2, authorBook3, authorBook4);

            Action act = () => bookBll.PublishBook(book.Id, new PublishBookRequestDTO {
                PublishierId = publisher.Id
            });

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"Book can't have more than 3 authors!");
        }
        public void Should_Validate_Publisher_Different_From_Authors()
        {
            var bookBll        = Resolve <IBookBll>();
            var bookRepository = Resolve <IBookRepository>();

            var publisher        = new PublisherBuilder().Build();
            var anotherPublisher = new PublisherBuilder().Build();

            var author = new AuthorBuilder()
                         .WithPublisher(publisher)
                         .Build();

            var book = new BookBuilder()
                       .Build();

            var authorBook = new AuthorBookBuilder().WithAuthor(author).WithBook(book).Build();

            AddEntities(publisher, anotherPublisher, author, book, authorBook);

            Action act = () => bookBll.PublishBook(book.Id, new PublishBookRequestDTO {
                PublishierId = anotherPublisher.Id
            });

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"{Environment.NewLine}The publisher of publication's book must be from one of the authors!");
        }
        public void Should_Validatebook_Already_Published()
        {
            var bookBll        = Resolve <IBookBll>();
            var bookRepository = Resolve <IBookRepository>();

            var publisher = new PublisherBuilder().Build();

            var author = new AuthorBuilder()
                         .WithPublisher(publisher)
                         .Build();

            var book = new BookBuilder()
                       .WithPublisher(publisher)
                       .Build();

            var authorBook = new AuthorBookBuilder()
                             .WithAuthor(author)
                             .WithBook(book)
                             .Build();

            AddEntities(publisher, author, book, authorBook);

            Action act = () => bookBll.PublishBook(book.Id, new PublishBookRequestDTO {
                PublishierId = publisher.Id
            });

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"Book ({book.Id}) is already published!");
        }
Ejemplo n.º 11
0
        public void Should_Publish_Book()
        {
            var publishBookll  = Resolve <IPublishBookBll>();
            var bookRepository = Resolve <IBookRepository>();

            var publisher  = new PublisherBuilder().Build();
            var author     = new AuthorBuilder().WithPublisher(publisher).Build();
            var book       = new BookBuilder().Build();
            var authorBook = new AuthorBookBuilder().WithAuthor(author).WithBook(book).Build();

            AddEntities(publisher, book, author, authorBook);

            publishBookll.Publish(book, publisher);
            Commit();

            book = bookRepository.Get(book.Id).FirstOrDefault();

            book.Publishier.Should().BeEquivalentTo(publisher);
            book.PublishDate.Should().NotBeNull();
        }
        public void Should_Validate_Publish_Without_Publisher()
        {
            var author = new AuthorBuilder()
                         .Build();

            _book = new BookBuilder()
                    .WithPublisher(_publisher)
                    .Build();

            var authorBook  = new AuthorBookBuilder().WithAuthor(author).WithBook(_book).Build();
            var authorsBook = new List <AuthorBookEntity> {
                authorBook
            };

            _book.AuthorsBook = authorsBook;

            Action act = () => _bookPublishValidator.ValidatePublish(_book, _publisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"Publisher must be set to publish a book");
        }
        public void Should_Validate_Publish_Withoutpublisher()
        {
            var bookPublishValidator = Resolve <IBookPublishValidator>();
            var bookRepository       = Resolve <IBookRepository>();

            var author = new AuthorBuilder()
                         .Build();

            var book = new BookBuilder()
                       .WithPublisher(null)
                       .Build();

            var authorBook = new AuthorBookBuilder().WithAuthor(author).WithBook(book).Build();

            AddEntities(author, book, authorBook);

            book = bookRepository.Get(book.Id).FirstOrDefault();

            Action act = () => bookPublishValidator.ValidatePublish(book, null);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"Publisher must be set to publish a book");
        }
        public void Should_Validate_Author_Without_Publisher()
        {
            _publisher = new PublisherBuilder().Build();

            var author = new AuthorBuilder()
                         .Build();

            _book = new BookBuilder()
                    .Build();

            var authorBook  = new AuthorBookBuilder().WithAuthor(author).WithBook(_book).Build();
            var authorsBook = new List <AuthorBookEntity> {
                authorBook
            };

            _book.AuthorsBook = authorsBook;

            Action act = () => _bookPublishValidator.ValidatePublish(_book, _publisher);

            act.Should()
            .Throw <BusinessException>()
            .WithMessage($"The following authors do not have publishers on his register:{Environment.NewLine}{author.FirstName}" +
                         $"{Environment.NewLine}The publisher of publication's book must be from one of the authors!");
        }