Exemplo n.º 1
0
        public async void HandleAddBookCommand_WithCorrectParameters_ShouldReturnNoErrors()
        {
            //Arrange

            #region .:: Objects build ::.
            AddBookCommand addBookCommand = new AddBookCommand("Pet Sematary", 2013, 1, "9788581050393", Guid.NewGuid().ToString());
            Author         author         = new Author(Guid.NewGuid(), "Stephen King");
            Book           book           = new Book(Guid.NewGuid(), "Pet Sematary", 2013, 1, "9788581050393", author);
            #endregion

            #region .:: Mocks ::.
            Mocker.GetMock <IAuthorRepository>()
            .Setup(b => b.GetAuthorById(It.IsAny <Guid>()))
            .Returns(() => Task.FromResult <Author>(author));

            Mocker.GetMock <IBookRepository>()
            .Setup(b => b.AddBook(It.IsAny <Book>()))
            .Returns(() => Task.FromResult(book));
            #endregion

            var sut = Mocker.CreateInstance <AddBookCommandHandler>();

            //Act
            AddBookCommandResponseViewModel result = await sut.Handle(addBookCommand, new CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().BeEmpty();
            Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Once());
            Mocker.GetMock <IBookRepository>().Verify(x => x.AddBook(It.IsAny <Book>()), Times.Once());
        }
 public TestBaseArrangements()
 {
     Mocker              = new AutoMocker();
     Mediator            = Mocker.CreateInstance <Mediator>();
     DomainNotifications = Mocker.CreateInstance <DomainNotifications>();
     DomainNotificationsFacade.SetNotificationsContainer(DomainNotifications);
 }
        public async void HandleAddPersonCommand_WithUser_ShouldReturnUserAlreadyExists()
        {
            //Arrange

            #region build person
            string document    = "75115775122";
            string name        = "Andre Santarosa";
            string phoneNumber = "19999990000";
            string email       = "*****@*****.**";

            Person person = null;
            person = new Person(Guid.NewGuid(), document, name, email);
            List <PersonPhone> phones = new List <PersonPhone>();
            phones.Add(new PersonPhone(Guid.NewGuid(), phoneNumber, person));
            #endregion

            Mocker.GetMock <IPersonRepository>()
            .Setup(u => u.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult(person));

            var sut           = Mocker.CreateInstance <AddPersonCommandHandler>();
            var personCommand = new AddPersonCommand(document, name, email, new List <string>()
            {
                phoneNumber
            });

            //Act
            await sut.Handle(personCommand, new System.Threading.CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().NotBeEmpty().And.Contain(x => x == Domain.Resources.Messages.Person_PersonWithDocumentExists)
            .And.HaveCount(1);
            Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Once());
            Mocker.GetMock <IPersonRepository>().Verify(x => x.AddPerson(It.IsAny <Person>()), Times.Never());
        }
        async Task RequestLoanCommand_WithInvalidBook_ShoudlReturnBookNotFound()
        {
            //arrage
            RequestLoanCommand command = new RequestLoanCommand("12345678998", Guid.NewGuid().ToString());

            Mocker.GetMock <IPersonRepository>()
            .Setup(p => p.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult(PersonFactory.ReturnPerson()));

            Mocker.GetMock <IBookRepository>()
            .Setup(b => b.GetById(It.IsAny <Guid>()))
            .Returns(() => Task.FromResult <Book>(null));
            var sut = Mocker.CreateInstance <RequestLoanCommandHandler>();
            //act
            await sut.Handle(command, new CancellationToken());

            //assert
            Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Once());
            Mocker.GetMock <IBookRepository>().Verify(x => x.GetById(It.IsAny <Guid>()), Times.Once());
            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Add(It.IsAny <BookLoan>()), Times.Never);

            DomainNotifications.GetAll().Should().NotBeEmpty()
            .And.HaveCount(1)
            .And.Contain(x => x == Messages.BookLoan_BookNotFound);
        }
Exemplo n.º 5
0
        public void ValidateBookLoan_Return_ShouldReturnNoErrors()
        {
            //arrage
            BookLoan bookLoan = new BookLoan(Guid.NewGuid(), BookFactory.ReturnBook().WithBookSituation(BookSituationEnum.Lent), PersonFactory.ReturnPerson());

            //act
            bookLoan.ReturnBook();
            //assert
            DomainNotifications.GetAll().Should().BeEmpty();
            bookLoan.Book.BookSituation.Value.Should().Be(BookSituationEnum.Awaiting.Value);
        }
Exemplo n.º 6
0
        public void ValidateBookLoan_Lend_ShouldReturnNoErrors()
        {
            //arrage
            Book     book     = BookFactory.ReturnBook().WithBookSituation(BookSituationEnum.Awaiting);
            BookLoan bookLoan = new BookLoan(Guid.NewGuid(), book, PersonFactory.ReturnPerson());

            //act
            bookLoan.LendBook();
            //assert
            DomainNotifications.GetAll().Should().BeEmpty();
        }
        public void ValidateAuthor_WithNullName_ShouldReturnNullNameError()
        {
            //Arrange
            Author author = new Author(Guid.NewGuid(), null);

            //Act
            author.Validate();

            //Assert
            DomainNotifications.GetAll().Should().NotBeEmpty().
            And.Contain(x => x == Domain.Resources.Messages.Author_AuthorNameIsNull);
        }
Exemplo n.º 8
0
        public async void HandleAddAuthorCommand_WithInvalidMinimumChars_ShouldReturnError(string authorName)
        {
            //Arrange
            AddAuthorCommand request = new AddAuthorCommand(authorName);
            var sut = Mocker.CreateInstance <AddAuthorCommandHandler>();
            //Act
            await sut.Handle(request, new CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().NotBeEmpty();
            Mocker.GetMock <IAuthorRepository>().Verify(x => x.AddAuthor(It.IsAny <Author>()), Times.Never);
        }
Exemplo n.º 9
0
        public void ValidateBook_WithReleaseDatePrior2008AndInvalidISBNLength_ShouldReturnInvalidISBNLengthForReleaseDate(string isbn)
        {
            //Arrange
            Book book = new Book(Guid.NewGuid(), "Pet Sematary", 2007, 1, isbn, new Author(Guid.NewGuid(), "Stephen King"));

            //Act
            bool isValid = book.Validate();

            //Assert
            isValid.Should().BeFalse();
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == Messages.Book_ISBNShouldHave10Chars);
        }
Exemplo n.º 10
0
        public void ValidateBook_WithInvalidName_ShouldReturnInvalidName(string BookTitle)
        {
            //Arrange
            Book book = new Book(Guid.NewGuid(), BookTitle, 2020, 2, "432423431", new Author(Guid.NewGuid(), "Stephen King"));

            //Act
            bool isValid = book.Validate();

            //Assert
            isValid.Should().BeFalse();
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == Messages.Book_TitleShouldNotBeNullOrEmpty);
        }
Exemplo n.º 11
0
        public void ValidateBook_WithInvalidEdition_ShouldReturnInvalidEdition(int edition)
        {
            //Arrange
            Book book = new Book(Guid.NewGuid(), "Pet Sematary", DateTime.Now.Year, edition, "432423431", new Author(Guid.NewGuid(), "Stephen King"));

            //Act
            bool isValid = book.Validate();

            //Assert
            isValid.Should().BeFalse();
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == Messages.Book_EditionCannotBeLowerThan1);
        }
Exemplo n.º 12
0
        public void ValidateBookLoadn_Return_ShouldReturnBookNotLent()
        {
            //arrange
            Book     book     = BookFactory.ReturnBook().WithBookSituation(BookSituationEnum.Awaiting);
            BookLoan bookLoan = new BookLoan(Guid.NewGuid(), book, PersonFactory.ReturnPerson());

            //act
            bookLoan.ReturnBook();

            //assert
            DomainNotifications.GetAll().Should().HaveCount(1)
            .And.Contain(x => x == Messages.BookLoan_BookIsNotLent);
        }
Exemplo n.º 13
0
        public void ValidateBook_WithInvalidReleaseDate_ShouldReturnInvalidReleaseDate(int releaseDate)
        {
            //Arrange
            Book book = new Book(Guid.NewGuid(), "Pet Sematary", releaseDate, 2, "432423431", new Author(Guid.NewGuid(), "Stephen King"));

            //Act
            bool isValid = book.Validate();

            //Assert
            isValid.Should().BeFalse();
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == Messages.Book_ReleaseYearShouldNotBeLowerThan1);
        }
Exemplo n.º 14
0
        public void ValidateBook_WithInvalidReleaseDate_ShouldReturnReleaseYearCanntoBeGreaterThanCurrentYear()
        {
            //Arrange
            Book book = new Book(Guid.NewGuid(), "Pet Sematary", DateTime.Now.Year + 1, 2, "432423431", new Author(Guid.NewGuid(), "Stephen King"));

            //Act
            bool isValid = book.Validate();

            //Assert
            isValid.Should().BeFalse();
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == Messages.Book_ReleaseYearCannotBeGraterThanCurrentYear);
        }
Exemplo n.º 15
0
        public async void HandleAddAuthorCommand_WithValidAuthor_ShouldReturnNoErrors()
        {
            //Arrange
            AddAuthorCommand request = new AddAuthorCommand("Stephen King");
            var sut = Mocker.CreateInstance <AddAuthorCommandHandler>();

            //Act
            await sut.Handle(request, new CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().BeEmpty();
            Mocker.GetMock <IAuthorRepository>().Verify(x => x.AddAuthor(It.IsAny <Author>()), Times.Once);
        }
Exemplo n.º 16
0
        public void ValidateBook_WithInvalidAuthor_ShouldReturnInvalidAuthor()
        {
            //Arrange
            Book book = new Book(Guid.NewGuid(), "Pet Sematary", 2009, 1, "1234567896541", null);

            //Act
            bool isValid = book.Validate();

            //Assert
            isValid.Should().BeFalse();
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == Messages.Book_AuthorShouldNotBeNull);
        }
Exemplo n.º 17
0
        public void ValidateBookLoan_ShouldReturnAllErrors()
        {
            //arrange
            BookLoan bookLoan = new BookLoan(Guid.NewGuid(), null, null);

            //act
            bookLoan.Validate();

            //assert
            DomainNotifications.GetAll().Should().HaveCount(2)
            .And.Contain(x => x == Messages.BookLoan_BookIsNull)
            .And.Contain(x => x == Messages.BookLoan_TakerIsNull);
        }
        async Task RequestLoanCommand_WithInvalidBookGuid_ShouldReturnError(string bookGuid, string outputError)
        {
            //arrage
            RequestLoanCommand command = new RequestLoanCommand("", bookGuid);
            var sut = Mocker.CreateInstance <RequestLoanCommandHandler>();
            //act
            await sut.Handle(command, new CancellationToken());

            //assert
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.HaveCount(1)
            .And.Contain(x => x == outputError);
            Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Never());
        }
Exemplo n.º 19
0
        public void HandleAddBookCommand_WithInvalidName_ShouldReturnInvalidName()
        {
            //Arrange
            Book book = new Book(Guid.NewGuid(), "   ", 2020, 2, "432423431", new Author(Guid.NewGuid(), "Stephen King"));

            //Act
            bool isValid = book.Validate();

            //Assert
            isValid.Should().BeFalse();
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == Messages.Book_TitleShouldNotBeNullOrEmpty);
            Mocker.GetMock <IBookRepository>().Verify(x => x.AddBook(It.IsAny <Book>()), Times.Never());
        }
Exemplo n.º 20
0
        public async void HandleAddBookCommand_WithInvalidGuid_ShouldReturnInvalidAuthorGuid(string authorId, string outputError)
        {
            //Arrange
            AddBookCommand addBookCommand = new AddBookCommand("Pet Sematary", 2013, 1, "9788581050393", authorId);
            var            sut            = Mocker.CreateInstance <AddBookCommandHandler>();

            //Act
            AddBookCommandResponseViewModel result = await sut.Handle(addBookCommand, new CancellationToken());

            //Assert

            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == outputError);
            Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Never());
        }
Exemplo n.º 21
0
        public async void HandleReturnBookCommand_WithInvalidGuid_ShouldReturnInvalidLoanGuid(string loanId, string outputError)
        {
            //Arrange
            ReturnBookCommand returnBookCommand = new ReturnBookCommand(loanId);
            var sut = Mocker.CreateInstance <ReturnBookCommandHandler>();

            //Act
            ReturnBookCommandResponseViewModel result = await sut.Handle(returnBookCommand, new CancellationToken());

            //Assert

            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == outputError);
            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Never());
        }
        public void ValidateAuthor_WithInvalidName_ShouldReturnNameLenghtMaxAndNullNameError()
        {
            //Arrange


            Author author = new Author(Guid.NewGuid(), "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et ");

            //Act
            author.Validate();

            //Assert
            DomainNotifications.GetAll().Should().NotBeEmpty()
            .And.Contain(x => x == Domain.Resources.Messages.Author_AuthorNameNoLongerThantAHundredChars)
            .And.HaveCount(1);
        }
        public void ValidateAuthor_WithEmptyGuidAndInvalidName_ShouldReturnEmptyGuidAndNameLenghtBellow()
        {
            //Arrange


            Author author = new Author(Guid.Empty, "fdfd");

            //Act
            author.Validate();

            //Assert
            DomainNotifications.GetAll().Should().NotBeEmpty()
            .And.Contain(x => x == Domain.Resources.Messages.Author_AuthorGuidIsEmpty)
            .And.Contain(x => x == Domain.Resources.Messages.Author_AuthorNameShouldHaveAtLeastFiveChars)
            .And.HaveCount(2);
        }
        public async void HandleAddPersonCommand_WithWrongDocumentCharCount_ShouldReturnDocumentCharCountError(string document, string name, string email, string phoneNumber)
        {
            //Arrange
            var sut = Mocker.CreateInstance <AddPersonCommandHandler>();


            var request = new AddPersonCommand(document, name, email, new List <string>()
            {
                phoneNumber
            });
            //Act
            await sut.Handle(request, new System.Threading.CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().NotBeEmpty();
            Mocker.GetMock <IPersonRepository>().Verify(x => x.AddPerson(It.IsAny <Person>()), Times.Never());
        }
Exemplo n.º 25
0
        public async void HandleReturnBookCommand_WithInvalidLoan_ShouldReturnInvalidLoan()
        {
            //Arrange
            ReturnBookCommand returnBookCommand = new ReturnBookCommand(Guid.NewGuid().ToString());
            var sut = Mocker.CreateInstance <ReturnBookCommandHandler>();

            Mocker.GetMock <IBookLoanRepository>()
            .Setup(p => p.GetByLoanId(It.IsAny <Guid>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult <BookLoan>(null));

            //Act
            ReturnBookCommandResponseViewModel result = await sut.Handle(returnBookCommand, new CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().NotBeNullOrEmpty()
            .And.Contain(x => x == "Book loan not found");

            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Never());
        }
Exemplo n.º 26
0
        public async void ValidatePerson_WithWrongDocumentCharCount_ShouldReturnDocumentCharCountError(string document, string name, string email, string phoneNumber)
        {
            //Arrange

            Person person = null;

            person = new Person(Guid.NewGuid(), document, name, email);
            List <PersonPhone> phones = new List <PersonPhone>();

            phones.Add(new PersonPhone(Guid.NewGuid(), phoneNumber, person));
            person.WithPhoneNumbes(phones);

            //Act
            person.Validate();

            //Assert
            DomainNotifications.GetAll().Should().NotBeEmpty()
            .And.Contain(x => x == Domain.Resources.Messages.Person_DocumentWrognCharCount)
            .And.HaveCount(1);
        }
Exemplo n.º 27
0
        public async void HandleAddBookCommand_WitInvalidAuthor_ShouldReturnInvalidAuthor()
        {
            //Arrange
            AddBookCommand addBookCommand = new AddBookCommand("Pet Sematary", 2013, 1, "9788581050393", Guid.NewGuid().ToString());
            var            sut            = Mocker.CreateInstance <AddBookCommandHandler>();


            Mocker.GetMock <IAuthorRepository>()
            .Setup(b => b.GetAuthorById(It.IsAny <Guid>()))
            .Returns(() => Task.FromResult <Author>(null));

            //Act
            AddBookCommandResponseViewModel result = await sut.Handle(addBookCommand, new CancellationToken());

            //Assert
            Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Once());
            Mocker.GetMock <IBookRepository>().Verify(x => x.AddBook(It.IsAny <Book>()), Times.Never());
            DomainNotifications.GetAll().Should().NotBeEmpty()
            .And.Contain(x => x == Messages.Book_AuthorShouldNotBeNull);
        }
Exemplo n.º 28
0
        public async void HandleReturnBookCommand_WithValidInfos_ShouldReturnNoErrors()
        {
            //Arrange
            ReturnBookCommand returnBookCommand = new ReturnBookCommand(Guid.NewGuid().ToString());
            var sut = Mocker.CreateInstance <ReturnBookCommandHandler>();

            BookLoan bookLoan = BookLoanFactory.ReturnLoan();

            bookLoan.Book.WithBookSituation(BookSituationEnum.Lent);


            Mocker.GetMock <IBookLoanRepository>()
            .Setup(p => p.GetByLoanId(It.IsAny <Guid>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult <BookLoan>(bookLoan));

            //Act
            ReturnBookCommandResponseViewModel result = await sut.Handle(returnBookCommand, new CancellationToken());

            //Assert
            DomainNotifications.GetAll().Should().BeEmpty();

            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Once());
        }