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

Commit 693f3ed

Browse files
author
Morten Turn Pedersen
committed
Added missing unit test and updated pagination logic so it isn't copied between classes
1 parent 578326c commit 693f3ed

File tree

3 files changed

+33
-20
lines changed

3 files changed

+33
-20
lines changed

NetCoreEntityFramework.Tests/EntityRepositoryTests.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,21 @@ public async Task DeleteDeletesEntity()
263263
Assert.IsNull(newlyDeletedEntity);
264264
Assert.AreEqual(expectedEntityCount, _context.Table.Count());
265265
}
266+
[Test]
267+
public async Task DeleteOnIdDeletesEntity()
268+
{
269+
bool success;
270+
var expectedEntityCount = _context.Table.Count() - 1;
271+
await using (_repository)
272+
{
273+
success = await _repository.Delete(_entity.Id);
274+
}
275+
276+
var newlyDeletedEntity = await _repository.Get(_entity.Id);
277+
Assert.IsTrue(success);
278+
Assert.IsNull(newlyDeletedEntity);
279+
Assert.AreEqual(expectedEntityCount, _context.Table.Count());
280+
}
266281

267282
[Test]
268283
public void DeleteThrowsExceptionIfArgumentNull()

NetCoreEntityFramework/Repositories/EntityRepository.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,9 @@ public async virtual Task<IEnumerable<TEntity>> GetList(
3030
Expression<Func<TEntity, object>> orderByExpression = null,
3131
OrderBy orderBy = OrderBy.Ascending)
3232
{
33-
if (page < 1)
34-
throw new ArgumentException($"{nameof(page)} was below 1. Received: {page}", nameof(page));
35-
if(pageSize < 1)
36-
throw new ArgumentException($"{nameof(pageSize)} was below 1. Received: {pageSize}", nameof(pageSize));
37-
3833
IQueryable<TEntity> query = GetQueryable(where, orderByExpression, orderBy);
3934

40-
// Pagination only skip if above page 1
41-
if (page > 1)
42-
query = query.Skip((page - 1) * pageSize);
43-
44-
query = query.Take(pageSize);
35+
query = Paginate(query, page, pageSize);
4536

4637
return await query.ToListAsync();
4738
}
@@ -109,6 +100,22 @@ public virtual async Task<bool> Delete(Guid id)
109100
return await Delete(entity);
110101
}
111102

103+
protected IQueryable<TEntity> Paginate(IQueryable<TEntity> query, [Range(1, int.MaxValue)] int page, [Range(1, int.MaxValue)] int pageSize)
104+
{
105+
if (page < 1)
106+
throw new ArgumentException($"{nameof(page)} was below 1. Received: {page}", nameof(page));
107+
if (pageSize < 1)
108+
throw new ArgumentException($"{nameof(pageSize)} was below 1. Received: {pageSize}", nameof(pageSize));
109+
110+
var q = query;
111+
112+
// Pagination only skip if above page 1
113+
if (page > 1)
114+
q = q.Skip((page - 1) * pageSize);
115+
116+
return q.Take(pageSize);
117+
}
118+
112119
protected IQueryable<TEntity> GetQueryable(
113120
Expression<Func<TEntity, bool>> where = null,
114121
Expression<Func<TEntity, object>> orderByExpression = null,

NetCoreEntityFramework/Repositories/EntitySoftDeleteRepository.cs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,9 @@ public async virtual Task<IEnumerable<TEntity>> GetList(
2626
OrderBy orderBy = OrderBy.Ascending,
2727
GetListMode mode = GetListMode.ExcludeDeleted)
2828
{
29-
if (page < 1)
30-
throw new ArgumentException($"{nameof(page)} was below 1. Received: {page}", nameof(page));
31-
if (pageSize < 1)
32-
throw new ArgumentException($"{nameof(pageSize)} was below 1. Received: {pageSize}", nameof(pageSize));
33-
3429
IQueryable<TEntity> query = GetQueryable(where, orderByExpression, orderBy, mode);
3530

36-
// Pagination only skip if above page 1
37-
if (page > 1)
38-
query = query.Skip((page - 1) * pageSize);
39-
40-
query = query.Take(pageSize);
31+
query = Paginate(query, page, pageSize);
4132

4233
return await query.ToListAsync();
4334
}

0 commit comments

Comments
 (0)