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