MemberData
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
3b524e7069
commit
0b00fe20b9
@ -0,0 +1,27 @@
|
||||
using Model;
|
||||
using Stub;
|
||||
|
||||
namespace TestDataManager;
|
||||
|
||||
public class BorrowBookStub : EmptyStubDataManager
|
||||
{
|
||||
public BorrowBookStub() : base()
|
||||
{
|
||||
books.AddRange([
|
||||
new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"),
|
||||
new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916")
|
||||
]);
|
||||
|
||||
bookId = 3;
|
||||
|
||||
persons.AddRange([
|
||||
new Person(1, "Chick", "Corea"),
|
||||
new Person(2, "Stanley", "Clarke")
|
||||
]);
|
||||
|
||||
personId = 3;
|
||||
|
||||
books[0].Borrower = persons[0];
|
||||
persons[0].BorrowBook(books[0]);
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using Model;
|
||||
|
||||
namespace TestDataManager;
|
||||
|
||||
public class DataManagerTest_WithMemberData1
|
||||
{
|
||||
[Theory]
|
||||
[MemberData(nameof(TestData_BorrowBook))]
|
||||
public async void TestBorrowBook(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(result)
|
||||
{
|
||||
Assert.NotNull(book);
|
||||
Assert.NotNull(person);
|
||||
Assert.Contains(book, person.Books);
|
||||
Assert.Equal(person, book.Borrower);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(person != null && book != null)
|
||||
{
|
||||
Assert.DoesNotContain(book, person.Books);
|
||||
Assert.NotEqual(person, book.Borrower);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerable<object[]> TestData_BorrowBook =>
|
||||
new List<object[]>
|
||||
{
|
||||
//T1. no book and no borrower
|
||||
new object[] { false, null, null, new BorrowBookStub() },
|
||||
|
||||
//T2. no book
|
||||
new object[] { false, null, new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T3. no borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub() },
|
||||
|
||||
//T4. new book and new borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T5. new book and already known borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
|
||||
//T6. already known but free book and new borrower
|
||||
new object[] { false, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T7. already known but already borrowed book and new borrower
|
||||
new object[] { false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T8. already known but free book and already known borrower
|
||||
new object[] { true, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
|
||||
//T9. already known but already borrowed book by another borrower and already known borrower
|
||||
new object[] { false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(2, "Stanley", "Clarke"), new BorrowBookStub() },
|
||||
|
||||
//T10. already known but already borrowed book by this borrower and already known borrower
|
||||
new object[] { true, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
};
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using Model;
|
||||
|
||||
namespace TestDataManager;
|
||||
|
||||
public class DataManagerTest_WithMemberData2
|
||||
{
|
||||
[Theory]
|
||||
[MemberData(nameof(TestData_WithMemberData2.TestData_BorrowBook), MemberType = typeof(TestData_WithMemberData2))]
|
||||
public async void TestBorrowBook(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(result)
|
||||
{
|
||||
Assert.NotNull(book);
|
||||
Assert.NotNull(person);
|
||||
Assert.Contains(book, person.Books);
|
||||
Assert.Equal(person, book.Borrower);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(person != null && book != null)
|
||||
{
|
||||
Assert.DoesNotContain(book, person.Books);
|
||||
Assert.NotEqual(person, book.Borrower);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using Model;
|
||||
|
||||
namespace TestDataManager;
|
||||
|
||||
public class DataManagerTest_WithMemberData3
|
||||
{
|
||||
[Theory]
|
||||
[MemberData(nameof(GetTestData_BorrowBook), parameters: true)]
|
||||
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(GetTestData_BorrowBook), parameters: false)]
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerable<object[]> GetTestData_BorrowBook(bool expectedResult)
|
||||
{
|
||||
var testData = new List<object[]>
|
||||
{
|
||||
//T1. no book and no borrower
|
||||
new object[] { false, null, null, new BorrowBookStub() },
|
||||
|
||||
//T2. no book
|
||||
new object[] { false, null, new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T3. no borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub() },
|
||||
|
||||
//T4. new book and new borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T5. new book and already known borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
|
||||
//T6. already known but free book and new borrower
|
||||
new object[] { false, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T7. already known but already borrowed book and new borrower
|
||||
new object[] { false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T8. already known but free book and already known borrower
|
||||
new object[] { true, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
|
||||
//T9. already known but already borrowed book by another borrower and already known borrower
|
||||
new object[] { false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(2, "Stanley", "Clarke"), new BorrowBookStub() },
|
||||
|
||||
//T10. already known but already borrowed book by this borrower and already known borrower
|
||||
new object[] { true, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
};
|
||||
|
||||
return testData.Where(data => (bool)data[0] == expectedResult);
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using Model;
|
||||
|
||||
namespace TestDataManager;
|
||||
|
||||
public class DataManagerTest_WithMemberData4
|
||||
{
|
||||
[Theory]
|
||||
[MemberData(nameof(TestData_WithMemberData4.GetTestData_BorrowBook), parameters: true, MemberType = typeof(TestData_WithMemberData4))]
|
||||
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_WithMemberData4.GetTestData_BorrowBook), parameters: false, MemberType = typeof(TestData_WithMemberData4))]
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using Model;
|
||||
|
||||
namespace TestDataManager;
|
||||
|
||||
public class TestData_WithMemberData2
|
||||
{
|
||||
public static IEnumerable<object[]> TestData_BorrowBook =>
|
||||
new List<object[]>
|
||||
{
|
||||
//T1. no book and no borrower
|
||||
new object[] { false, null, null, new BorrowBookStub() },
|
||||
|
||||
//T2. no book
|
||||
new object[] { false, null, new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T3. no borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub() },
|
||||
|
||||
//T4. new book and new borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T5. new book and already known borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
|
||||
//T6. already known but free book and new borrower
|
||||
new object[] { false, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T7. already known but already borrowed book and new borrower
|
||||
new object[] { false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T8. already known but free book and already known borrower
|
||||
new object[] { true, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
|
||||
//T9. already known but already borrowed book by another borrower and already known borrower
|
||||
new object[] { false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(2, "Stanley", "Clarke"), new BorrowBookStub() },
|
||||
|
||||
//T10. already known but already borrowed book by this borrower and already known borrower
|
||||
new object[] { true, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
};
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using Model;
|
||||
|
||||
namespace TestDataManager;
|
||||
|
||||
public class TestData_WithMemberData4
|
||||
{
|
||||
public static IEnumerable<object[]> GetTestData_BorrowBook(bool expectedResult)
|
||||
{
|
||||
var testData = new List<object[]>
|
||||
{
|
||||
//T1. no book and no borrower
|
||||
new object[] { false, null, null, new BorrowBookStub() },
|
||||
|
||||
//T2. no book
|
||||
new object[] { false, null, new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T3. no borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub() },
|
||||
|
||||
//T4. new book and new borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T5. new book and already known borrower
|
||||
new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
|
||||
//T6. already known but free book and new borrower
|
||||
new object[] { false, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T7. already known but already borrowed book and new borrower
|
||||
new object[] { false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person("John", "Coltrane"), new BorrowBookStub() },
|
||||
|
||||
//T8. already known but free book and already known borrower
|
||||
new object[] { true, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
|
||||
//T9. already known but already borrowed book by another borrower and already known borrower
|
||||
new object[] { false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(2, "Stanley", "Clarke"), new BorrowBookStub() },
|
||||
|
||||
//T10. already known but already borrowed book by this borrower and already known borrower
|
||||
new object[] { true, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
|
||||
};
|
||||
|
||||
return testData.Where(data => (bool)data[0] == expectedResult);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue