Repository navigation
Expand file tree
/
Copy pathBookBuilder.txt
More file actions
77 lines (62 loc) · 1.96 KB
/
Copy pathBookBuilder.txt
File metadata and controls
77 lines (62 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using System;
using System.Reflection;
using LegayCode.Bll;
namespace LegayCode.Tests.Builders
{
public class BookBuilder
{
private int _publisherId = 2;
private string _publisherDescription = "Some publisher";
private long _ISBN = 1234;
private readonly AuthorCollection authors = new AuthorCollection();
public static BookBuilder ABook()
{
return new BookBuilder();
}
public BookBuilder WithPublisher(int publisher)
{
_publisherId = publisher;
return this;
}
public BookBuilder WithPublisherDescription(string publisherDescription)
{
_publisherDescription = publisherDescription;
return this;
}
public BookBuilder WithIsbn(long isbn)
{
_ISBN = isbn;
return this;
}
public Book Build()
{
var constructor = typeof(Book).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[0], null);
var book = (Book)constructor.Invoke(null);
SetPublisher(book);
SetPublisherDescription(book);
SetAuthors(book);
SetIsbn(book);
return book;
}
private void SetAuthors(Book book)
{
typeof(Book).GetProperty("Authors")
.SetValue(book, authors, null);
}
private void SetPublisher(Book book)
{
typeof(Book).GetProperty("PublisherId")
.SetValue(book, _publisherId, null);
}
private void SetPublisherDescription(Book book)
{
typeof(Book).GetProperty("PublisherDescription")
.SetValue(book, _publisherDescription, null);
}
private void SetIsbn(Book book)
{
typeof(Book).GetProperty("ISBN")
.SetValue(book, _ISBN, null);
}
}
}