1+ using System . Collections . Generic ;
2+ using System . Data ;
3+ using System . Linq ;
4+ using Moq ;
5+ using NUnit . Framework ;
6+
7+ namespace Shuttle . Core . Data . Tests
8+ {
9+ [ TestFixture ]
10+ public class DataRepositoryFixture : Fixture
11+ {
12+ [ Test ]
13+ public void Should_be_able_to_fetch_all_items ( )
14+ {
15+ var gateway = new Mock < IDatabaseGateway > ( ) ;
16+ var mapper = new Mock < IDataRowMapper < object > > ( ) ;
17+ var query = new Mock < IQuery > ( ) ;
18+ var dataRow = new DataTable ( ) . NewRow ( ) ;
19+ var anObject = new object ( ) ;
20+
21+ gateway . Setup ( m => m . GetRowsUsing ( query . Object ) ) . Returns ( new List < DataRow > { dataRow } ) ;
22+ mapper . Setup ( m => m . Map ( It . IsAny < DataRow > ( ) ) ) . Returns ( new MappedRow < object > ( dataRow , anObject ) ) ;
23+
24+ var repository = new DataRepository < object > ( gateway . Object , mapper . Object ) ;
25+
26+ var result = repository . FetchAllUsing ( query . Object ) . ToList ( ) ;
27+
28+ Assert . IsNotNull ( result ) ;
29+ Assert . AreEqual ( 1 , result . Count ) ;
30+ Assert . AreSame ( anObject , result [ 0 ] ) ;
31+ }
32+
33+ [ Test ]
34+ public void Should_be_able_to_fetch_a_single_item ( )
35+ {
36+ var gateway = new Mock < IDatabaseGateway > ( ) ;
37+ var mapper = new Mock < IDataRowMapper < object > > ( ) ;
38+ var query = new Mock < IQuery > ( ) ;
39+ var dataRow = new DataTable ( ) . NewRow ( ) ;
40+ var anObject = new object ( ) ;
41+
42+ gateway . Setup ( m => m . GetSingleRowUsing ( query . Object ) ) . Returns ( dataRow ) ;
43+ mapper . Setup ( m => m . Map ( It . IsAny < DataRow > ( ) ) ) . Returns ( new MappedRow < object > ( dataRow , anObject ) ) ;
44+
45+ var repository = new DataRepository < object > ( gateway . Object , mapper . Object ) ;
46+
47+ var result = repository . FetchItemUsing ( query . Object ) ;
48+
49+ Assert . IsNotNull ( result ) ;
50+ Assert . AreSame ( anObject , result ) ;
51+ }
52+
53+ [ Test ]
54+ public void Should_be_able_to_get_default_when_fetching_a_single_item_that_is_not_found ( )
55+ {
56+ var gateway = new Mock < IDatabaseGateway > ( ) ;
57+ var query = new Mock < IQuery > ( ) ;
58+
59+ gateway . Setup ( m => m . GetSingleRowUsing ( query . Object ) ) . Returns ( ( DataRow ) null ) ;
60+
61+ var repository = new DataRepository < object > ( gateway . Object , new Mock < IDataRowMapper < object > > ( ) . Object ) ;
62+
63+ var result = repository . FetchItemUsing ( query . Object ) ;
64+
65+ Assert . IsNull ( result ) ;
66+ }
67+
68+ [ Test ]
69+ public void Should_be_able_to_call_contains ( )
70+ {
71+ var gateway = new Mock < IDatabaseGateway > ( ) ;
72+ var query = new Mock < IQuery > ( ) ;
73+
74+ gateway . Setup ( m => m . GetScalarUsing < int > ( query . Object ) ) . Returns ( 1 ) ;
75+
76+ var repository = new DataRepository < object > ( gateway . Object , new Mock < IDataRowMapper < object > > ( ) . Object ) ;
77+
78+ Assert . IsTrue ( repository . Contains ( query . Object ) ) ;
79+ }
80+
81+ [ Test ]
82+ public void Should_be_able_to_fetch_mapped_rows ( )
83+ {
84+ var gateway = new Mock < IDatabaseGateway > ( ) ;
85+ var mapper = new Mock < IDataRowMapper < object > > ( ) ;
86+ var query = new Mock < IQuery > ( ) ;
87+ var dataRow = new DataTable ( ) . NewRow ( ) ;
88+ var anObject = new object ( ) ;
89+ var mappedRow = new MappedRow < object > ( dataRow , anObject ) ;
90+
91+ gateway . Setup ( m => m . GetRowsUsing ( query . Object ) ) . Returns ( new List < DataRow > { dataRow } ) ;
92+ mapper . Setup ( m => m . Map ( It . IsAny < DataRow > ( ) ) ) . Returns ( mappedRow ) ;
93+
94+ var repository = new DataRepository < object > ( gateway . Object , mapper . Object ) ;
95+
96+ var result = repository . FetchMappedRowsUsing ( query . Object ) . ToList ( ) ;
97+
98+ Assert . IsNotNull ( result ) ;
99+ Assert . AreEqual ( 1 , result . Count ) ;
100+ Assert . AreSame ( dataRow , result [ 0 ] . Row ) ;
101+ Assert . AreSame ( anObject , result [ 0 ] . Result ) ;
102+ }
103+
104+ [ Test ]
105+ public void Should_be_able_to_fetch_a_single_row ( )
106+ {
107+ var gateway = new Mock < IDatabaseGateway > ( ) ;
108+ var mapper = new Mock < IDataRowMapper < object > > ( ) ;
109+ var query = new Mock < IQuery > ( ) ;
110+ var dataRow = new DataTable ( ) . NewRow ( ) ;
111+ var anObject = new object ( ) ;
112+ var mappedRow = new MappedRow < object > ( dataRow , anObject ) ;
113+
114+ gateway . Setup ( m => m . GetSingleRowUsing ( query . Object ) ) . Returns ( dataRow ) ;
115+ mapper . Setup ( m => m . Map ( It . IsAny < DataRow > ( ) ) ) . Returns ( mappedRow ) ;
116+
117+ var repository = new DataRepository < object > ( gateway . Object , mapper . Object ) ;
118+
119+ var result = repository . FetchMappedRowUsing ( query . Object ) ;
120+
121+ Assert . IsNotNull ( result ) ;
122+ Assert . AreSame ( dataRow , result . Row ) ;
123+ Assert . AreSame ( anObject , result . Result ) ;
124+ }
125+ }
126+ }
0 commit comments