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!");
        }
        [TestMethod, Ignore] // Only VS Premium and Ultimate has Fakes
        public void TestWithShivCompleteDependantRepository()
        {
            var  author  = new AuthorBuilder().CliveCustler().Build();
            var  request = new BookBuilder().DeepSix().BuildRequest();
            Book response;

            using (ShimsContext.Create())
            {
                // Create SHIV
                var stubAuthRepo = new Contracts.Fakes.StubIAuthorRepository
                {
                    // Method = (parameters) => { method }
                    GetAuthorByIdGuid = id => author
                };

                // SHIM the property that retrieves the repository
                ShimBookRepository.AllInstances.AuthorRepoGet = _ => stubAuthRepo;

                var repo = new BookRepository();
                response = repo.AddBook(request);
            }

            Assert.IsNotNull(response);
            Assert.AreEqual(author, response.Author);
        }
Esempio n. 4
0
        public async Task ShouldBeReturnedAuthenticationResultWithSuccessAndCreatedNewAuthor()
        {
            var salt      = SecurePasswordHasher.CreateSalt(8);
            var newAuthor = new AuthorBuilder()
                            .WithFirstName(_faker.Person.FirstName)
                            .WithLastName(_faker.Person.LastName)
                            .WithUsername(_faker.Person.UserName)
                            .WithEmail(_faker.Person.Email)
                            .WithPassword(SecurePasswordHasher.GenerateHash("joao123", salt))
                            .WithSalt(salt)
                            .Build();

            var authenticationResult = await _authenticationService.RegisterAsync(newAuthor);

            authenticationResult.Should().BeOfType <AuthenticationResult>();
            authenticationResult.Success.Should().BeTrue();
            authenticationResult.Errors.Should().BeNull();
            authenticationResult.Token.Should().NotBeNullOrEmpty();

            _output.WriteLine($"Success: {authenticationResult.Success} | Token: {authenticationResult.Token}");

            // Verificando se o autor foi inserido no banco de dados
            var insertedAuthor = await _unitOfWork.Authors
                                 .FindByConditionAsync(a => a.Id == newAuthor.Id)
                                 .Result.SingleOrDefaultAsync();

            insertedAuthor.Should().NotBeNull();
            insertedAuthor.FirstName.Should().Be(newAuthor.FirstName);
            insertedAuthor.Username.Should().Be(newAuthor.Username);
            insertedAuthor.Email.Should().Be(newAuthor.Email);
        }
        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_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()
        {
            _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_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!");
        }
        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!");
        }
Esempio n. 11
0
        public async Task Setup()
        {
            var author     = AuthorBuilder.WithLibrary(LibraryId).Build();
            var series     = SeriesBuilder.WithLibrary(LibraryId).Build();
            var categories = CategoryBuilder.WithLibrary(LibraryId).Build(3);
            var book       = new BookView
            {
                Title   = RandomData.Name,
                Authors = new List <AuthorView> {
                    new AuthorView {
                        Id = author.Id
                    }
                },
                SeriesId    = series.Id,
                SeriesIndex = 1,
                SeriesName  = series.Name,
                Language    = RandomData.Locale,
                Categories  = RandomData.PickRandom(categories, 2).Select(c => new CategoryView {
                    Id = c.Id
                })
            };

            _response = await Client.PostObject($"/libraries/{LibraryId}/books", book);

            _bookAssert = BookAssert.WithResponse(_response).InLibrary(LibraryId);
        }
Esempio n. 12
0
        public async Task Setup()
        {
            var authors  = AuthorBuilder.WithLibrary(LibraryId).Build(4);
            var expected = authors.PickRandom();

            _response = await Client.DeleteAsync($"/libraries/{LibraryId}/authors/{expected.Id}");
        }
Esempio n. 13
0
        public Book FindById(Guid id)
        {
            var bookEntity = _dbContext.Books.Include(b => b.Author).FirstOrDefault(b => b.Id == id);

            if (bookEntity == null)
            {
                return(null);
            }

            var authorEntity = bookEntity.Author;
            var author       = AuthorBuilder.CreateNew()
                               .WithId(authorEntity.Id)
                               .WithFirstName(authorEntity.FirstName)
                               .WithLastName(authorEntity.LastName)
                               .Build();

            return(BookBuilder.CreateNew()
                   .WithId(bookEntity.Id)
                   .WithTitle(bookEntity.Title)
                   .WithIsbn13(bookEntity.Isbn)
                   .WithReleaseDate(bookEntity.ReleaseDate)
                   .WithPublisher(bookEntity.Publisher)
                   .WithAuthor(author)
                   .Build());
        }
        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 async Task Setup()
        {
            AuthorBuilder.WithLibrary(LibraryId).WithBooks(3).WithoutImage().Build(4);

            _response = await Client.GetAsync($"/libraries/{LibraryId}/authors");

            _assert = new PagingAssert <AuthorView>(_response);
        }
        public async Task Setup()
        {
            AuthorBuilder.WithLibrary(LibraryId).WithBooks(3).Build(20);

            _response = await Client.GetAsync($"/libraries/{LibraryId}/authors?pageNumber={100}&pageSize={10}");

            _assert = new PagingAssert <AuthorView>(_response);
        }
        public async Task Setup()
        {
            var author = AuthorBuilder.WithLibrary(LibraryId).Build();

            author.Name = RandomData.Name;

            _response = await Client.PutObject($"/libraries/{LibraryId}/authors/{author.Id}", author);
        }
Esempio n. 19
0
        public async Task Setup()
        {
            var author = AuthorBuilder.WithLibrary(LibraryId).Build();

            _authorId = author.Id;
            _newImage = RandomData.Bytes;
            _response = await Client.PutFile($"/libraries/{LibraryId}/authors/{_authorId}/image", _newImage);
        }
Esempio n. 20
0
        public async Task Setup()
        {
            AuthorBuilder.WithLibrary(LibraryId).WithBooks(3).WithNamePattern("SearchAuthor").Build(5);

            _response = await Client.GetAsync($"/libraries/{LibraryId}/authors?query=SearchAuthor&pageNumber={1}&pageSize={10}");

            _assert = new PagingAssert <AuthorView>(_response);
        }
Esempio n. 21
0
        public void TestDataWithStaticIdsTest()
        {
            var authorList = new AuthorBuilder().BuildAll();

            // Builders & Repositories generate new IDs so it is important to be able to match with different ID
            var findAuthorThatWasCreatedUsingBuilder = authorList.FirstOrDefault(auth => auth.Surname.Contains("Gold"));
            var comparisonAuthor = new AuthorBuilder(findAuthorThatWasCreatedUsingBuilder?.Id).EliyahuGoldratt().Build();

            Assert.IsTrue(comparisonAuthor.Equals(findAuthorThatWasCreatedUsingBuilder));
        }
        public async Task Setup()
        {
            _author      = AuthorBuilder.WithLibrary(LibraryId).Build();
            _authorBooks = BookBuilder.WithLibrary(LibraryId).WithAuthor(_author).IsPublic().Build(1);
            AuthorBuilder.WithLibrary(LibraryId).WithBooks(3).Build();

            _response = await Client.GetAsync($"/libraries/{LibraryId}/books?pageNumber=20&pageSize=10&authorId={_author.Id}");

            _assert = new PagingAssert <BookView>(_response);
        }
        public async Task Setup()
        {
            var authors = AuthorBuilder.WithLibrary(LibraryId).Build(4);

            _expected = authors.PickRandom();

            _response = await Client.GetAsync($"/libraries/{LibraryId}/authors/{_expected.Id}");

            _assert = AuthorAssert.WithResponse(_response).InLibrary(LibraryId);
        }
Esempio n. 24
0
        public async Task Setup()
        {
            var authors = AuthorBuilder.WithLibrary(LibraryId).WithBooks(3).WithoutImage().Build(20);

            _searchedAuthor = authors.PickRandom();

            _response = await Client.GetAsync($"/libraries/{LibraryId}/authors?query={_searchedAuthor.Name}");

            _assert = new PagingAssert <AuthorView>(_response);
        }
Esempio n. 25
0
        public async Task Setup()
        {
            _categories = CategoryBuilder.WithLibrary(LibraryId).Build(2);
            _authors    = AuthorBuilder.WithLibrary(LibraryId).Build(2);

            _books = BookBuilder.WithLibrary(LibraryId).WithCategories(_categories).WithAuthors(_authors).IsPublic().Build(12);

            _response = await Client.GetAsync($"/libraries/{LibraryId}/books?pageNumber=1&pageSize=10&sortby=DateCreated&sort=Ascending");

            _assert = new PagingAssert <BookView>(_response);
        }
Esempio n. 26
0
        public void AddAuthorWithSuccess()
        {
            var repo    = RepositoryFactory.CreateAuthorRepository();
            var request = new AuthorBuilder().AuthorOne().BuildRequest();

            var response = repo.AddAuthor(request);

            var found = Database.Authors.FirstOrDefault(auth => auth.Id == response.Id);

            Assert.AreEqual(response, found);
        }
        public static async Task <Author> PersistAuthor(this ContainerFixture containerFixture)
        {
            var author = new AuthorBuilder().Build();
            await containerFixture.ExecuteDbContextAsync(async context =>
            {
                context.Auhtors.Add(author);
                await context.SaveChangesAsync();
            });

            return(author);
        }
 public static AuthorBuilder BuildAuthorByRequest(this AuthorBuilder authorBuilder, CreateAuthorRequest request)
 {
     return(authorBuilder?
            .WithFirstName(request?.FirstName)
            .WithLastName(request?.LastName)
            .WithUsername(request?.Username)
            .WithPassword(request?.Password)
            .WithEmail(request?.Email)
            .WithBio(request?.Bio)
            .WithAvatar(request?.Avatar));
 }
Esempio n. 29
0
        public async Task Setup()
        {
            _categories = CategoryBuilder.WithLibrary(LibraryId).Build(2);
            _authors    = AuthorBuilder.WithLibrary(LibraryId).Build(2);

            BookBuilder.WithLibrary(LibraryId).WithCategories(_categories).WithAuthors(_authors).IsPublic().Build(30);

            _response = await Client.GetAsync($"/libraries/{LibraryId}/books?pageNumber=2&pageSize=10&query=itle");

            _assert = new PagingAssert <BookView>(_response);
        }
Esempio n. 30
0
        public async Task ShouldBeNotCreatedAuthorWithEqualsEmailOrUsername()
        {
            var existingAuthor = new AuthorBuilder()
                                 .WithFirstName("Maria")
                                 .WithUsername("mmaria")
                                 .WithEmail("*****@*****.**")
                                 .Build();

            var created = await _authorService.CreateAuthorAsync(existingAuthor);

            created.Should().BeFalse();
            _dbContext.Authors.Should().HaveCount(2);
        }