Skip to content
This repository was archived by the owner on Apr 20, 2024. It is now read-only.

Commit c2f17a4

Browse files
author
Morten Turn Pedersen
authored
Merge pull request #31 from nodes-dotnet/develop
Publish updated package
2 parents 7c48848 + dd7cc93 commit c2f17a4

17 files changed

+1007
-248
lines changed

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Setup .NET Core
1818
uses: actions/setup-dotnet@v1
1919
with:
20-
dotnet-version: 3.1.301
20+
dotnet-version: 3.1.403
2121

2222
- name: Install dependencies
2323
run: dotnet restore

.github/workflows/pullrequest.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Setup .NET Core
1818
uses: actions/setup-dotnet@v1
1919
with:
20-
dotnet-version: 3.1.301
20+
dotnet-version: 3.1.403
2121

2222
- name: Install dependencies
2323
run: dotnet restore

NetCoreEntityFramework.Tests/EntityRepositoryTests.cs

Lines changed: 110 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System;
77
using System.Collections.Generic;
88
using System.Linq;
9+
using System.Linq.Expressions;
910
using System.Threading.Tasks;
1011
using TestContext = Nodes.NetCore.EntityFramework.Tests.Mocks.TestContext;
1112

@@ -16,7 +17,6 @@ public class EntityRepositoryTests
1617
private TestEntityRepository _repository;
1718
private TestContext _context;
1819
private TestEntity _entity;
19-
private TestEntity _deletedEntity;
2020
private IEnumerable<TestEntity> _listEntities;
2121

2222
[SetUp]
@@ -35,24 +35,12 @@ public void Setup()
3535
_entity = new TestEntity
3636
{
3737
Created = now,
38-
Deleted = false,
3938
Id = Guid.NewGuid(),
4039
Updated = now,
4140
Property = string.Empty
4241
};
4342

44-
_deletedEntity = new TestEntity
45-
{
46-
Created = now.AddMinutes(-42),
47-
Deleted = true,
48-
DeletedAt = now,
49-
Id = Guid.NewGuid(),
50-
Updated = now.AddMinutes(-42),
51-
Property = "I'm deleted"
52-
};
53-
5443
_context.Table.Add(_entity);
55-
_context.Table.Add(_deletedEntity);
5644

5745
_listEntities = GetTestList();
5846
_context.Table.AddRange(_listEntities);
@@ -70,33 +58,32 @@ public async Task AddAddsEntityAndSetsAttributes()
7058
int expectedSize = startSize + 1;
7159
var entity = new TestEntity();
7260

73-
using(_repository)
61+
await using(_repository)
7462
{
7563
await _repository.Add(entity);
7664
}
7765

78-
Assert.NotNull(entity.Id);
66+
Assert.AreNotEqual(Guid.Empty, entity.Id);
7967
Assert.AreNotEqual(default(DateTime), entity.Created);
8068
Assert.AreNotEqual(default(DateTime), entity.Updated);
81-
Assert.IsFalse(entity.Deleted);
8269
Assert.AreEqual(expectedSize, await _context.Table.CountAsync());
8370
}
8471

8572
[Test]
86-
public async Task AddEntityWithIdKeepsId()
73+
[AutoData]
74+
public async Task AddEntityWithIdKeepsId(Guid idToCreate)
8775
{
88-
Guid id = Guid.NewGuid();
8976
var entity = new TestEntity
9077
{
91-
Id = id
78+
Id = idToCreate
9279
};
9380

94-
using (_repository)
81+
await using (_repository)
9582
{
9683
await _repository.Add(entity);
9784
}
9885

99-
Assert.AreEqual(id, entity.Id);
86+
Assert.AreEqual(idToCreate, entity.Id);
10087
}
10188

10289
[Test]
@@ -107,28 +94,12 @@ public void AddThrowsExceptionIfEntityIsNull()
10794
#endregion
10895

10996
#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-
11897
[Test]
11998
public async Task GetListReturnsAll()
12099
{
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);
100+
var entities = await _repository.GetList(null, null, OrderBy.Ascending);
130101

131-
Assert.AreEqual(1, entities.Count());
102+
Assert.AreEqual(_listEntities.Count() + 1, entities.Count());
132103
}
133104

134105
[Test]
@@ -196,6 +167,80 @@ public async Task GetListPaginated()
196167
Assert.AreEqual(3, entitiesLastPage.Count());
197168
}
198169

170+
[Test]
171+
public async Task GetListWithSelectReturnsAll()
172+
{
173+
var entities = await _repository.GetListWithSelect<string>(e => e.Property);
174+
175+
Assert.AreEqual(_listEntities.Count() + 1, entities.Count());
176+
}
177+
178+
[Test]
179+
public async Task GetListWithSelectWhere()
180+
{
181+
const string propertyToLookFor = "b";
182+
IEnumerable<string> entities = await _repository.GetListWithSelect(x => x.Property, x => x.Property == propertyToLookFor);
183+
184+
Assert.AreEqual(1, entities.Count());
185+
Assert.AreEqual(propertyToLookFor, entities.ElementAt(0));
186+
}
187+
188+
[Test]
189+
public async Task GetListWithSelectOrderBy()
190+
{
191+
var entities = await _repository.GetListWithSelect(x => x.Property, x => x.Property.Length == 1, x => x.Property);
192+
193+
Assert.AreEqual(_listEntities.Count(), entities.Count());
194+
Assert.AreEqual("a", entities.ElementAt(0));
195+
Assert.AreEqual("b", entities.ElementAt(1));
196+
Assert.AreEqual("c", entities.ElementAt(2));
197+
Assert.AreEqual("d", entities.ElementAt(3));
198+
Assert.AreEqual("e", entities.ElementAt(4));
199+
Assert.AreEqual("f", entities.ElementAt(5));
200+
Assert.AreEqual("g", entities.ElementAt(6));
201+
Assert.AreEqual("h", entities.ElementAt(7));
202+
Assert.AreEqual("i", entities.ElementAt(8));
203+
Assert.AreEqual("j", entities.ElementAt(9));
204+
Assert.AreEqual("k", entities.ElementAt(10));
205+
Assert.AreEqual("l", entities.ElementAt(11));
206+
Assert.AreEqual("m", entities.ElementAt(12));
207+
Assert.AreEqual("n", entities.ElementAt(13));
208+
}
209+
210+
[Test]
211+
public async Task GetListWithSelectOrderByDescending()
212+
{
213+
var entities = await _repository.GetListWithSelect(x => x.Property, x => x.Property.Length == 1, x => x.Property, OrderBy.Descending);
214+
215+
Assert.AreEqual(_listEntities.Count(), entities.Count());
216+
Assert.AreEqual("n", entities.ElementAt(0));
217+
Assert.AreEqual("m", entities.ElementAt(1));
218+
Assert.AreEqual("l", entities.ElementAt(2));
219+
Assert.AreEqual("k", entities.ElementAt(3));
220+
Assert.AreEqual("j", entities.ElementAt(4));
221+
Assert.AreEqual("i", entities.ElementAt(5));
222+
Assert.AreEqual("h", entities.ElementAt(6));
223+
Assert.AreEqual("g", entities.ElementAt(7));
224+
Assert.AreEqual("f", entities.ElementAt(8));
225+
Assert.AreEqual("e", entities.ElementAt(9));
226+
Assert.AreEqual("d", entities.ElementAt(10));
227+
Assert.AreEqual("c", entities.ElementAt(11));
228+
Assert.AreEqual("b", entities.ElementAt(12));
229+
Assert.AreEqual("a", entities.ElementAt(13));
230+
}
231+
232+
[Test]
233+
public async Task GetListWithSelectPaginated()
234+
{
235+
const int pageSize = 6;
236+
237+
var entities = await _repository.GetListWithSelect(x => x.Property, 1, pageSize);
238+
var entitiesLastPage = await _repository.GetListWithSelect(x => x.Property, 3, pageSize);
239+
240+
Assert.AreEqual(pageSize, entities.Count());
241+
Assert.AreEqual(3, entitiesLastPage.Count());
242+
}
243+
199244
private IEnumerable<TestEntity> GetTestList()
200245
{
201246
return new List<TestEntity>
@@ -233,26 +278,19 @@ private TestEntity GetTestEntity(string property)
233278
[Test]
234279
public async Task GetValidEntityReturnsEntity()
235280
{
236-
var entity = await _repository.Get((Guid)_entity.Id);
281+
var entity = await _repository.Get(_entity.Id);
237282

238283
Assert.AreSame(_entity, entity);
239284
}
240285

241286
[Test]
242-
public async Task DontGetDeletedEntityWithoutFlag()
287+
[AutoData]
288+
public async Task DontGetNonExistantEntity(Guid nonExistantId)
243289
{
244-
var entity = await _repository.Get((Guid)_deletedEntity.Id);
290+
var entity = await _repository.Get(nonExistantId);
245291

246292
Assert.IsNull(entity);
247293
}
248-
249-
[Test]
250-
public async Task GetDeletedEntityWithFlag()
251-
{
252-
var entity = await _repository.Get((Guid)_deletedEntity.Id, true);
253-
254-
Assert.AreSame(_deletedEntity, entity);
255-
}
256294
#endregion
257295

258296
#region Update
@@ -264,12 +302,12 @@ public async Task UpdateUpdatesUpdated(string propertyValue)
264302
DateTime oldCreated = _entity.Created;
265303
_entity.Property = propertyValue;
266304

267-
using(_repository)
305+
await using(_repository)
268306
{
269307
await _repository.Update(_entity);
270308
}
271309

272-
var entity = await _repository.Get((Guid)_entity.Id);
310+
var entity = await _repository.Get(_entity.Id);
273311

274312
Assert.AreEqual(propertyValue, entity.Property);
275313
Assert.AreNotEqual(oldUpdated, entity.Updated);
@@ -285,121 +323,60 @@ public void UpdateThrowsExceptionIfNull()
285323

286324
#region Delete
287325
[Test]
288-
public async Task DeleteSoftDeletesAndSetsDeletedAt()
326+
public async Task DeleteDeletesEntity()
289327
{
290328
bool success;
291-
using(_repository)
329+
var expectedEntityCount = _context.Table.Count() - 1;
330+
await using(_repository)
292331
{
293332
success = await _repository.Delete(_entity);
294333
}
295334

296-
var newlyDeletedEntity = await _repository.Get((Guid)_entity.Id, true);
335+
var newlyDeletedEntity = await _repository.Get(_entity.Id);
297336
Assert.IsTrue(success);
298-
Assert.IsTrue(newlyDeletedEntity.Deleted);
299-
Assert.NotNull(newlyDeletedEntity.DeletedAt);
300-
}
301-
302-
[Test]
303-
public void DeleteThrowsExceptionIfArgumentNull()
304-
{
305-
Assert.ThrowsAsync<ArgumentNullException>(() => _repository.Delete(null));
337+
Assert.IsNull(newlyDeletedEntity);
338+
Assert.AreEqual(expectedEntityCount, _context.Table.Count());
306339
}
307-
308340
[Test]
309-
public async Task DeleteWithValidIdDeletesAndSetsDeletedAt()
341+
public async Task DeleteOnIdDeletesEntity()
310342
{
311343
bool success;
312-
Guid id = (Guid)_entity.Id;
313-
using (_repository)
344+
var expectedEntityCount = _context.Table.Count() - 1;
345+
await using (_repository)
314346
{
315-
success = await _repository.Delete(id);
347+
success = await _repository.Delete(_entity.Id);
316348
}
317349

318-
var newlyDeletedEntity = await _repository.Get(id, true);
350+
var newlyDeletedEntity = await _repository.Get(_entity.Id);
319351
Assert.IsTrue(success);
320-
Assert.IsTrue(newlyDeletedEntity.Deleted);
321-
Assert.NotNull(newlyDeletedEntity.DeletedAt);
322-
}
323-
324-
[Test]
325-
[AutoData]
326-
public async Task DeleteWithInvalidIdReturnsFalse(Guid randomId)
327-
{
328-
bool success;
329-
330-
using(_repository)
331-
{
332-
success = await _repository.Delete(randomId);
333-
}
334-
335-
Assert.IsFalse(success);
352+
Assert.IsNull(newlyDeletedEntity);
353+
Assert.AreEqual(expectedEntityCount, _context.Table.Count());
336354
}
337355

338356
[Test]
339-
public void DeleteWithEmptyGuidThrowsException()
340-
{
341-
Assert.ThrowsAsync<ArgumentException>(() => _repository.Delete(Guid.Empty));
342-
}
343-
#endregion
344-
345-
#region Restore
346-
[Test]
347-
public async Task RestoreSetsDeletedFalse()
348-
{
349-
bool success;
350-
351-
using(_repository)
352-
{
353-
success = await _repository.Restore(_deletedEntity);
354-
}
355-
356-
var restoredEntity = await _repository.Get((Guid)_deletedEntity.Id);
357-
Assert.IsTrue(success);
358-
Assert.IsFalse(restoredEntity.Deleted);
359-
Assert.IsNull(restoredEntity.DeletedAt);
360-
}
361-
362-
[Test]
363-
public void RestoreThrowsExceptionWhenEntityNull()
364-
{
365-
Assert.ThrowsAsync<ArgumentNullException>(() => _repository.Restore(null));
366-
}
367-
368-
[Test]
369-
public async Task RestoreOnIdSetsDeletedFalse()
357+
public void DeleteThrowsExceptionIfArgumentNull()
370358
{
371-
bool success;
372-
Guid id = (Guid)_deletedEntity.Id;
373-
374-
using (_repository)
375-
{
376-
success = await _repository.Restore(id);
377-
}
378-
379-
var restoredEntity = await _repository.Get(id);
380-
Assert.IsTrue(success);
381-
Assert.IsFalse(restoredEntity.Deleted);
382-
Assert.IsNull(restoredEntity.DeletedAt);
359+
Assert.ThrowsAsync<ArgumentNullException>(() => _repository.Delete(null));
383360
}
384361

385362
[Test]
386363
[AutoData]
387-
public async Task RestoreOnInvalidIdReturnsFalse(Guid randomId)
364+
public async Task DeleteWithInvalidIdReturnsFalse(Guid randomId)
388365
{
389366
bool success;
390367

391-
using(_repository)
368+
await using(_repository)
392369
{
393-
success = await _repository.Restore(randomId);
370+
success = await _repository.Delete(randomId);
394371
}
395372

396373
Assert.IsFalse(success);
397374
}
398375

399376
[Test]
400-
public void RestoreOnEmptyGuidThrowsException()
377+
public void DeleteWithEmptyGuidThrowsException()
401378
{
402-
Assert.ThrowsAsync<ArgumentException>(() => _repository.Restore(Guid.Empty));
379+
Assert.ThrowsAsync<ArgumentException>(() => _repository.Delete(Guid.Empty));
403380
}
404381
#endregion
405382
}

0 commit comments

Comments
 (0)