11using AutoFixture . NUnit3 ;
22using Microsoft . EntityFrameworkCore ;
3+ using Nodes . NetCore . EntityFramework . Enums ;
34using Nodes . NetCore . EntityFramework . Tests . Mocks ;
45using NUnit . Framework ;
56using System ;
7+ using System . Collections . Generic ;
8+ using System . Linq ;
69using System . Threading . Tasks ;
710using TestContext = Nodes . NetCore . EntityFramework . Tests . Mocks . TestContext ;
811
@@ -14,6 +17,7 @@ public class EntityRepositoryTests
1417 private TestContext _context ;
1518 private TestEntity _entity ;
1619 private TestEntity _deletedEntity ;
20+ private IEnumerable < TestEntity > _listEntities ;
1721
1822 [ SetUp ]
1923 public void Setup ( )
@@ -50,6 +54,9 @@ public void Setup()
5054 _context . Table . Add ( _entity ) ;
5155 _context . Table . Add ( _deletedEntity ) ;
5256
57+ _listEntities = GetTestList ( ) ;
58+ _context . Table . AddRange ( _listEntities ) ;
59+
5360 _context . SaveChanges ( ) ;
5461
5562 _repository = new TestEntityRepository ( _context ) ;
@@ -99,6 +106,129 @@ public void AddThrowsExceptionIfEntityIsNull()
99106 }
100107 #endregion
101108
109+ #region List
110+ [ Test ]
111+ public async Task GetListReturnsAllNotDeleted ( )
112+ {
113+ var entities = await _repository . GetList ( ) ;
114+
115+ Assert . AreEqual ( _listEntities . Count ( ) + 1 , entities . Count ( ) ) ;
116+ }
117+
118+ [ Test ]
119+ public async Task GetListReturnsAll ( )
120+ {
121+ var entities = await _repository . GetList ( null , null , OrderBy . Ascending , GetListMode . IncludeDeleted ) ;
122+
123+ Assert . AreEqual ( _listEntities . Count ( ) + 2 , entities . Count ( ) ) ;
124+ }
125+
126+ [ Test ]
127+ public async Task GetListReturnsAllDeleted ( )
128+ {
129+ var entities = await _repository . GetList ( null , null , OrderBy . Ascending , GetListMode . OnlyDeleted ) ;
130+
131+ Assert . AreEqual ( 1 , entities . Count ( ) ) ;
132+ }
133+
134+ [ Test ]
135+ public async Task GetListWhere ( )
136+ {
137+ var entities = await _repository . GetList ( x => x . Property == "b" ) ;
138+
139+ Assert . AreEqual ( 1 , entities . Count ( ) ) ;
140+ Assert . AreSame ( _listEntities . First ( x => x . Property == "b" ) , entities . ElementAt ( 0 ) ) ;
141+ }
142+
143+ [ Test ]
144+ public async Task GetListOrderBy ( )
145+ {
146+ var entities = await _repository . GetList ( x => x . Property . Length == 1 , x => x . Property ) ;
147+
148+ Assert . AreEqual ( _listEntities . Count ( ) , entities . Count ( ) ) ;
149+ Assert . AreSame ( _listEntities . First ( x => x . Property == "a" ) , entities . ElementAt ( 0 ) ) ;
150+ Assert . AreSame ( _listEntities . First ( x => x . Property == "b" ) , entities . ElementAt ( 1 ) ) ;
151+ Assert . AreSame ( _listEntities . First ( x => x . Property == "c" ) , entities . ElementAt ( 2 ) ) ;
152+ Assert . AreSame ( _listEntities . First ( x => x . Property == "d" ) , entities . ElementAt ( 3 ) ) ;
153+ Assert . AreSame ( _listEntities . First ( x => x . Property == "e" ) , entities . ElementAt ( 4 ) ) ;
154+ Assert . AreSame ( _listEntities . First ( x => x . Property == "f" ) , entities . ElementAt ( 5 ) ) ;
155+ Assert . AreSame ( _listEntities . First ( x => x . Property == "g" ) , entities . ElementAt ( 6 ) ) ;
156+ Assert . AreSame ( _listEntities . First ( x => x . Property == "h" ) , entities . ElementAt ( 7 ) ) ;
157+ Assert . AreSame ( _listEntities . First ( x => x . Property == "i" ) , entities . ElementAt ( 8 ) ) ;
158+ Assert . AreSame ( _listEntities . First ( x => x . Property == "j" ) , entities . ElementAt ( 9 ) ) ;
159+ Assert . AreSame ( _listEntities . First ( x => x . Property == "k" ) , entities . ElementAt ( 10 ) ) ;
160+ Assert . AreSame ( _listEntities . First ( x => x . Property == "l" ) , entities . ElementAt ( 11 ) ) ;
161+ Assert . AreSame ( _listEntities . First ( x => x . Property == "m" ) , entities . ElementAt ( 12 ) ) ;
162+ Assert . AreSame ( _listEntities . First ( x => x . Property == "n" ) , entities . ElementAt ( 13 ) ) ;
163+ }
164+
165+ [ Test ]
166+ public async Task GetListOrderByDescending ( )
167+ {
168+ var entities = await _repository . GetList ( x => x . Property . Length == 1 , x => x . Property , OrderBy . Descending ) ;
169+
170+ Assert . AreEqual ( _listEntities . Count ( ) , entities . Count ( ) ) ;
171+ Assert . AreSame ( _listEntities . First ( x => x . Property == "n" ) , entities . ElementAt ( 0 ) ) ;
172+ Assert . AreSame ( _listEntities . First ( x => x . Property == "m" ) , entities . ElementAt ( 1 ) ) ;
173+ Assert . AreSame ( _listEntities . First ( x => x . Property == "l" ) , entities . ElementAt ( 2 ) ) ;
174+ Assert . AreSame ( _listEntities . First ( x => x . Property == "k" ) , entities . ElementAt ( 3 ) ) ;
175+ Assert . AreSame ( _listEntities . First ( x => x . Property == "j" ) , entities . ElementAt ( 4 ) ) ;
176+ Assert . AreSame ( _listEntities . First ( x => x . Property == "i" ) , entities . ElementAt ( 5 ) ) ;
177+ Assert . AreSame ( _listEntities . First ( x => x . Property == "h" ) , entities . ElementAt ( 6 ) ) ;
178+ Assert . AreSame ( _listEntities . First ( x => x . Property == "g" ) , entities . ElementAt ( 7 ) ) ;
179+ Assert . AreSame ( _listEntities . First ( x => x . Property == "f" ) , entities . ElementAt ( 8 ) ) ;
180+ Assert . AreSame ( _listEntities . First ( x => x . Property == "e" ) , entities . ElementAt ( 9 ) ) ;
181+ Assert . AreSame ( _listEntities . First ( x => x . Property == "d" ) , entities . ElementAt ( 10 ) ) ;
182+ Assert . AreSame ( _listEntities . First ( x => x . Property == "c" ) , entities . ElementAt ( 11 ) ) ;
183+ Assert . AreSame ( _listEntities . First ( x => x . Property == "b" ) , entities . ElementAt ( 12 ) ) ;
184+ Assert . AreSame ( _listEntities . First ( x => x . Property == "a" ) , entities . ElementAt ( 13 ) ) ;
185+ }
186+
187+ [ Test ]
188+ public async Task GetListPaginated ( )
189+ {
190+ const int pageSize = 6 ;
191+
192+ var entities = await _repository . GetList ( 1 , pageSize ) ;
193+ var entitiesLastPage = await _repository . GetList ( 3 , pageSize ) ;
194+
195+ Assert . AreEqual ( pageSize , entities . Count ( ) ) ;
196+ Assert . AreEqual ( 3 , entitiesLastPage . Count ( ) ) ;
197+ }
198+
199+ private IEnumerable < TestEntity > GetTestList ( )
200+ {
201+ return new List < TestEntity >
202+ {
203+ GetTestEntity ( "a" ) ,
204+ GetTestEntity ( "b" ) ,
205+ GetTestEntity ( "c" ) ,
206+ GetTestEntity ( "d" ) ,
207+ GetTestEntity ( "e" ) ,
208+ GetTestEntity ( "f" ) ,
209+ GetTestEntity ( "g" ) ,
210+ GetTestEntity ( "h" ) ,
211+ GetTestEntity ( "i" ) ,
212+ GetTestEntity ( "j" ) ,
213+ GetTestEntity ( "k" ) ,
214+ GetTestEntity ( "l" ) ,
215+ GetTestEntity ( "m" ) ,
216+ GetTestEntity ( "n" )
217+ } ;
218+ }
219+
220+ private TestEntity GetTestEntity ( string property )
221+ {
222+ return new TestEntity
223+ {
224+ Id = Guid . NewGuid ( ) ,
225+ Created = DateTime . UtcNow ,
226+ Updated = DateTime . UtcNow ,
227+ Property = property
228+ } ;
229+ }
230+ #endregion
231+
102232 #region Get
103233 [ Test ]
104234 public async Task GetValidEntityReturnsEntity ( )
0 commit comments