using System; using Model; namespace TestDataManager; public class DataManagerTest_WithTheoryDataAndMemberData4 { [Theory] [MemberData(nameof(TestData_WithTheoryDataAndMemberData4.GetTestData_BorrowBook), parameters: true, MemberType = typeof(TestData_WithTheoryDataAndMemberData4))] public async void TestBorrowBook_Success(bool expectedResult, Book bookToBorrow, Person borrower, IDataManager dataManager) { bool result = await dataManager.BorrowBook(bookToBorrow, borrower); Book? book = (await dataManager.GetBooksByIsbn(bookToBorrow?.Isbn, 0, 100)).SingleOrDefault(); Person? person = (await dataManager.GetPersonsByName(borrower?.LastName, 0, 100)).SingleOrDefault(); Assert.Equal(expectedResult, result); Assert.NotNull(book); Assert.NotNull(person); Assert.Contains(book, person.Books); Assert.Equal(person, book.Borrower); } [Theory] [MemberData(nameof(TestData_WithTheoryDataAndMemberData4.GetTestData_BorrowBook), parameters: false, MemberType = typeof(TestData_WithTheoryDataAndMemberData4))] public async void TestBorrowBook_Fail(bool expectedResult, Book bookToBorrow, Person borrower, IDataManager dataManager) { bool result = await dataManager.BorrowBook(bookToBorrow, borrower); Book? book = (await dataManager.GetBooksByIsbn(bookToBorrow?.Isbn, 0, 100)).SingleOrDefault(); Person? person = (await dataManager.GetPersonsByName(borrower?.LastName, 0, 100)).SingleOrDefault(); Assert.Equal(expectedResult, result); if(person != null && book != null) { Assert.DoesNotContain(book, person.Books); Assert.NotEqual(person, book.Borrower); } } }