Beispiel #1
0
        public async void GetBooksScenario()
        {
            Fixture fixture = new Fixture();

            fixture.Behaviors.OfType <ThrowingRecursionBehavior>().ToList()
            .ForEach(b => fixture.Behaviors.Remove(b));
            fixture.Behaviors.Add(new OmitOnRecursionBehavior());

            var books = fixture.CreateMany <Book>().ToList();

            //arrange
            var mock = new Mock <IBooksRepository>();

            mock.Setup(m => m.RetrieveBooksAsync()).ReturnsAsync(books);

            var booksRepository = mock.Object;

            var bookshelf = new Bookshelf.BL.Bookshelf(booksRepository);

            //act
            var booksResult = await bookshelf.BooksAsync();

            //asert
            booksResult.Count().Should().Equals(books.Count());
        }
Beispiel #2
0
        public async void LoanBooksScenario(int userId)
        {
            Fixture fixture = new Fixture();

            fixture.Behaviors.OfType <ThrowingRecursionBehavior>().ToList()
            .ForEach(b => fixture.Behaviors.Remove(b));
            fixture.Behaviors.Add(new OmitOnRecursionBehavior());

            var book = fixture.Create <Book>();

            //arrange
            int? expectedLoanedTo = 0;
            Book originalBook     = book.SimpleClone();

            //make the book available to be loaned
            book.LoanedTo = null;

            var mock = new Mock <IBooksRepository>();

            mock.Setup(m => m.RetrieveBookAsync(book.Id))
            .ReturnsAsync(book);

            //when updating the book, loanedTo is checked
            mock.Setup(m => m.SaveOrUpdateBookAsync(It.IsAny <Book>()))
            .Returns(Task.CompletedTask)
            .Callback((Book b) => { expectedLoanedTo = b.LoanedTo; });

            var booksRepository = mock.Object;

            var bookshelf = new Bookshelf.BL.Bookshelf(booksRepository);

            //act
            var booksResult = await bookshelf.LoanAsync(book.Id, userId);

            //asert
            booksResult.Should().BeTrue();
            expectedLoanedTo.Should().Equals(userId);

            //make sure only one property changed
            book.Should().BeEquivalentTo(originalBook, options =>
                                         options.Excluding(b => b.LoanedTo));
        }