public async void HandleAddBookCommand_WithCorrectParameters_ShouldReturnNoErrors() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); #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 ::. baseArrangements.Mocker.GetMock <IAuthorRepository>() .Setup(b => b.GetAuthorById(It.IsAny <Guid>())) .Returns(() => Task.FromResult <Author>(author)); baseArrangements.Mocker.GetMock <IBookRepository>() .Setup(b => b.AddBook(It.IsAny <Book>())) .Returns(() => Task.FromResult(book)); #endregion var sut = baseArrangements.Mocker.CreateInstance <AddBookCommandHandler>(); //Act AddBookCommandResponseViewModel result = await sut.Handle(addBookCommand, new CancellationToken()); //Assert baseArrangements.DomainNotifications.GetAll().Should().BeEmpty(); baseArrangements.Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Once()); baseArrangements.Mocker.GetMock <IBookRepository>().Verify(x => x.AddBook(It.IsAny <Book>()), Times.Once()); }
async Task RequestLoanCommand_WithInvalidBook_ShoudlReturnBookNotFound() { //arrage TestBaseArrangements baseArrangements = new TestBaseArrangements(); RequestLoanCommand command = new RequestLoanCommand("12345678998", Guid.NewGuid().ToString()); baseArrangements.Mocker.GetMock <IPersonRepository>() .Setup(p => p.GetByDocument(It.IsAny <string>(), It.IsAny <bool>())) .Returns(() => Task.FromResult(PersonFactory.ReturnPerson())); baseArrangements.Mocker.GetMock <IBookRepository>() .Setup(b => b.GetById(It.IsAny <Guid>())) .Returns(() => Task.FromResult <Book>(null)); var sut = baseArrangements.Mocker.CreateInstance <RequestLoanCommandHandler>(); //act await sut.Handle(command, new CancellationToken()); //assert baseArrangements.Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Once()); baseArrangements.Mocker.GetMock <IBookRepository>().Verify(x => x.GetById(It.IsAny <Guid>()), Times.Once()); baseArrangements.Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Add(It.IsAny <BookLoan>()), Times.Never); baseArrangements.DomainNotifications.GetAll().Should().NotBeEmpty() .And.HaveCount(1) .And.Contain(x => x == Messages.BookLoan_BookNotFound); }
public void ValidateBookLoan_Return_ShouldReturnNoErrors() { //arrage TestBaseArrangements baseArrangements = new TestBaseArrangements(); BookLoan bookLoan = new BookLoan(Guid.NewGuid(), BookFactory.ReturnBook().WithBookSituation(BookSituationEnum.Lent), PersonFactory.ReturnPerson()); //act bookLoan.ReturnBook(); //assert baseArrangements.DomainNotifications.GetAll().Should().BeEmpty(); bookLoan.Book.BookSituation.Value.Should().Be(BookSituationEnum.Awaiting.Value); }
public void ValidateAuthor_WithNullName_ShouldReturnNullNameError() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); Author author = new Author(Guid.NewGuid(), null); //Act author.Validate(); //Assert baseArrangements.DomainNotifications.GetAll().Should().NotBeEmpty(). And.Contain(x => x == Domain.Resources.Messages.Author_AuthorNameIsNull); }
public async void HandleAddAuthorCommand_WithInvalidMinimumChars_ShouldReturnError(string authorName) { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); AddAuthorCommand request = new AddAuthorCommand(authorName); var sut = baseArrangements.Mocker.CreateInstance <AddAuthorCommandHandler>(); //Act await sut.Handle(request, new CancellationToken()); //Assert baseArrangements.DomainNotifications.GetAll().Should().NotBeEmpty(); baseArrangements.Mocker.GetMock <IAuthorRepository>().Verify(x => x.AddAuthor(It.IsAny <Author>()), Times.Never); }
public void ValidateBook_WithReleaseDatePrior2008AndInvalidISBNLength_ShouldReturnInvalidISBNLengthForReleaseDate(string isbn) { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); 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(); baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == Messages.Book_ISBNShouldHave10Chars); }
public void ValidateBook_WithInvalidEdition_ShouldReturnInvalidEdition(int edition) { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); 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(); baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == Messages.Book_EditionCannotBeLowerThan1); }
public void ValidateBook_WithInvalidReleaseDate_ShouldReturnReleaseYearCanntoBeGreaterThanCurrentYear() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); 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(); baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == Messages.Book_ReleaseYearCannotBeGraterThanCurrentYear); }
public void ValidateBook_WithInvalidAuthor_ShouldReturnInvalidAuthor() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); Book book = new Book(Guid.NewGuid(), "Pet Sematary", 2009, 1, "1234567896541", null); //Act bool isValid = book.Validate(); //Assert isValid.Should().BeFalse(); baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == Messages.Book_AuthorShouldNotBeNull); }
public void ValidateBookLoadn_Return_ShouldReturnBookNotLent() { //arrange TestBaseArrangements testBaseArrangements = new TestBaseArrangements(); Book book = BookFactory.ReturnBook().WithBookSituation(BookSituationEnum.Awaiting); BookLoan bookLoan = new BookLoan(Guid.NewGuid(), book, PersonFactory.ReturnPerson()); //act bookLoan.ReturnBook(); //assert testBaseArrangements.DomainNotifications.GetAll().Should().HaveCount(1) .And.Contain(x => x == Messages.BookLoan_BookIsNotLent); }
public void ValidateBook_WithInvalidName_ShouldReturnInvalidName(string BookTitle) { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); 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(); baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == Messages.Book_TitleShouldNotBeNullOrEmpty); }
public void ValidateBookLoan_ShouldReturnAllErrors() { //arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); BookLoan bookLoan = new BookLoan(Guid.NewGuid(), null, null); //act bookLoan.Validate(); //assert baseArrangements.DomainNotifications.GetAll().Should().HaveCount(2) .And.Contain(x => x == Messages.BookLoan_BookIsNull) .And.Contain(x => x == Messages.BookLoan_TakerIsNull); }
public async void HandleAddAuthorCommand_WithValidAuthor_ShouldReturnNoErrors() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); AddAuthorCommand request = new AddAuthorCommand("Stephen King"); var sut = baseArrangements.Mocker.CreateInstance <AddAuthorCommandHandler>(); //Act await sut.Handle(request, new CancellationToken()); //Assert baseArrangements.DomainNotifications.GetAll().Should().BeEmpty(); baseArrangements.Mocker.GetMock <IAuthorRepository>().Verify(x => x.AddAuthor(It.IsAny <Author>()), Times.Once); }
public void HandleAddBookCommand_WithInvalidName_ShouldReturnInvalidName() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); Book book = new Book(Guid.NewGuid(), " ", 2020, 2, "432423431", new Author(Guid.NewGuid(), "Stephen King")); //Act bool isValid = book.Validate(); //Assert isValid.Should().BeFalse(); baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == Messages.Book_TitleShouldNotBeNullOrEmpty); baseArrangements.Mocker.GetMock <IBookRepository>().Verify(x => x.AddBook(It.IsAny <Book>()), Times.Never()); }
async Task RequestLoanCommand_WithInvalidBookGuid_ShouldReturnError(string bookGuid, string outputError) { //arrage TestBaseArrangements baseArrangements = new TestBaseArrangements(); RequestLoanCommand command = new RequestLoanCommand("", bookGuid); var sut = baseArrangements.Mocker.CreateInstance <RequestLoanCommandHandler>(); //act await sut.Handle(command, new CancellationToken()); //assert baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.HaveCount(1) .And.Contain(x => x == outputError); baseArrangements.Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Never()); }
public async void HandleAddBookCommand_WithInvalidGuid_ShouldReturnInvalidAuthorGuid(string authorId, string outputError) { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); AddBookCommand addBookCommand = new AddBookCommand("Pet Sematary", 2013, 1, "9788581050393", authorId); var sut = baseArrangements.Mocker.CreateInstance <AddBookCommandHandler>(); //Act AddBookCommandResponseViewModel result = await sut.Handle(addBookCommand, new CancellationToken()); //Assert baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == outputError); baseArrangements.Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Never()); }
public void ValidateAuthor_WithInvalidName_ShouldReturnNameLenghtMaxAndNullNameError() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); 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 baseArrangements.DomainNotifications.GetAll().Should().NotBeEmpty() .And.Contain(x => x == Domain.Resources.Messages.Author_AuthorNameNoLongerThantAHundredChars) .And.HaveCount(1); }
public async void HandleReturnBookCommand_WithInvalidGuid_ShouldReturnInvalidLoanGuid(string loanId, string outputError) { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); ReturnBookCommand returnBookCommand = new ReturnBookCommand(loanId); var sut = baseArrangements.Mocker.CreateInstance <ReturnBookCommandHandler>(); //Act ReturnBookCommandResponseViewModel result = await sut.Handle(returnBookCommand, new CancellationToken()); //Assert baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == outputError); baseArrangements.Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Never()); }
public void ValidateAuthor_WithEmptyGuidAndInvalidName_ShouldReturnEmptyGuidAndNameLenghtBellow() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); Author author = new Author(Guid.Empty, "fdfd"); //Act author.Validate(); //Assert baseArrangements.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 HandleReturnBookCommand_WithInvalidLoan_ShouldReturnInvalidLoan() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); ReturnBookCommand returnBookCommand = new ReturnBookCommand(Guid.NewGuid().ToString()); var sut = baseArrangements.Mocker.CreateInstance <ReturnBookCommandHandler>(); baseArrangements.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 baseArrangements.DomainNotifications.GetAll().Should().NotBeNullOrEmpty() .And.Contain(x => x == "Book loan not found"); baseArrangements.Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Never()); }
public async void HandleAddPersonCommand_WithWrongDocumentCharCount_ShouldReturnDocumentCharCountError(string document, string name, string email, string phoneNumber) { //Arrange TestBaseArrangements baseArrangement = new TestBaseArrangements(); var sut = baseArrangement.Mocker.CreateInstance <AddPersonCommandHandler>(); var request = new AddPersonCommand(document, name, email, new List <string>() { phoneNumber }); //Act await sut.Handle(request, new System.Threading.CancellationToken()); //Assert baseArrangement.DomainNotifications.GetAll().Should().NotBeEmpty(); baseArrangement.Mocker.GetMock <IPersonRepository>().Verify(x => x.AddPerson(It.IsAny <Person>()), Times.Never()); }
public async void HandleAddBookCommand_WitInvalidAuthor_ShouldReturnInvalidAuthor() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); AddBookCommand addBookCommand = new AddBookCommand("Pet Sematary", 2013, 1, "9788581050393", Guid.NewGuid().ToString()); var sut = baseArrangements.Mocker.CreateInstance <AddBookCommandHandler>(); baseArrangements.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 baseArrangements.Mocker.GetMock <IAuthorRepository>().Verify(x => x.GetAuthorById(It.IsAny <Guid>()), Times.Once()); baseArrangements.Mocker.GetMock <IBookRepository>().Verify(x => x.AddBook(It.IsAny <Book>()), Times.Never()); baseArrangements.DomainNotifications.GetAll().Should().NotBeEmpty() .And.Contain(x => x == Messages.Book_AuthorShouldNotBeNull); }
public async void ValidatePerson_WithInvalidName_ShouldReturnInvalidNameError(string document, string name, string email, string phoneNumber) { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); 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 baseArrangements.DomainNotifications.GetAll().Should().NotBeEmpty() .And.Contain(x => x == Domain.Resources.Messages.Person_NameMiniumCharError) .And.HaveCount(1); }
public async void HandleAddPersonCommand_WithUser_ShouldReturnSuccessWithNoErrors() { //Arrange TestBaseArrangements baseArrangement = new TestBaseArrangements(); #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 baseArrangement.Mocker.GetMock <IPersonRepository>() .Setup(u => u.GetByDocument(It.IsAny <string>(), It.IsAny <bool>())) .Returns(() => Task.FromResult <Person>(null)); var sut = baseArrangement.Mocker.CreateInstance <AddPersonCommandHandler>(); var personCommand = new AddPersonCommand(document, name, email, new List <string>() { phoneNumber }); //Act var addResponse = await sut.Handle(personCommand, new System.Threading.CancellationToken()); //Assert baseArrangement.DomainNotifications.GetAll().Should().BeEmpty(); addResponse.Should().NotBeNull(); addResponse.PersonId.Should().NotBeEmpty().Should().NotBeNull(); addResponse.PhoneNumbers.Should().HaveCountGreaterThan(0); baseArrangement.Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Once()); baseArrangement.Mocker.GetMock <IPersonRepository>().Verify(x => x.AddPerson(It.IsAny <Person>()), Times.Once()); }
public async void HandleReturnBookCommand_WithValidInfos_ShouldReturnNoErrors() { //Arrange TestBaseArrangements baseArrangements = new TestBaseArrangements(); ReturnBookCommand returnBookCommand = new ReturnBookCommand(Guid.NewGuid().ToString()); var sut = baseArrangements.Mocker.CreateInstance <ReturnBookCommandHandler>(); BookLoan bookLoan = BookLoanFactory.ReturnLoan(); bookLoan.Book.WithBookSituation(BookSituationEnum.Lent); baseArrangements.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 baseArrangements.DomainNotifications.GetAll().Should().BeEmpty(); baseArrangements.Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Update(It.IsAny <BookLoan>()), Times.Once()); }