Skip to content

Commit 78b0ee7

Browse files
committed
fix unit tests
1 parent 3c20861 commit 78b0ee7

File tree

1 file changed

+92
-82
lines changed

1 file changed

+92
-82
lines changed

test/UnitTests/Data/DefaultEntityRepository_Tests.cs

Lines changed: 92 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
using Microsoft.Extensions.Logging;
1212
using JsonApiDotNetCore.Services;
1313
using System.Threading.Tasks;
14-
using System.Linq;
15-
14+
using System.Linq;
15+
using System.Collections;
16+
using JsonApiDotNetCore.Request;
17+
1618
namespace UnitTests.Data
1719
{
1820
public class DefaultEntityRepository_Tests : JsonApiControllerMixin
@@ -49,10 +51,10 @@ public async Task UpdateAsync_Updates_Attributes_In_AttributesToUpdate()
4951
{
5052
Id = _todoItem.Id,
5153
Description = Guid.NewGuid().ToString()
52-
};
53-
54+
};
55+
5456
var descAttr = new AttrAttribute("description", "Description");
55-
descAttr.PropertyInfo = typeof(TodoItem).GetProperty(nameof(TodoItem.Description));
57+
descAttr.PropertyInfo = typeof(TodoItem).GetProperty(nameof(TodoItem.Description));
5658

5759
_attrsToUpdate = new Dictionary<AttrAttribute, object>
5860
{
@@ -91,87 +93,95 @@ private DefaultEntityRepository<TodoItem> GetRepository()
9193
.Setup(m => m.RelationshipsToUpdate)
9294
.Returns(_relationshipsToUpdate);
9395

96+
_jsonApiContextMock
97+
.Setup(m => m.HasManyRelationshipPointers)
98+
.Returns(new HasManyRelationshipPointers());
99+
100+
_jsonApiContextMock
101+
.Setup(m => m.HasOneRelationshipPointers)
102+
.Returns(new HasOneRelationshipPointers());
103+
94104
return new DefaultEntityRepository<TodoItem>(
95105
_loggFactoryMock.Object,
96106
_jsonApiContextMock.Object,
97107
_contextResolverMock.Object);
98-
}
99-
100-
[Theory]
101-
[InlineData(0)]
102-
[InlineData(-1)]
103-
[InlineData(-10)]
104-
public async Task Page_When_PageSize_Is_NonPositive_Does_Nothing(int pageSize)
105-
{
106-
var todoItems = DbSetMock.Create(TodoItems(2, 3, 1)).Object;
107-
var repository = GetRepository();
108-
109-
var result = await repository.PageAsync(todoItems, pageSize, 3);
110-
111-
Assert.Equal(TodoItems(2, 3, 1), result, new IdComparer<TodoItem>());
112-
}
113-
114-
[Fact]
115-
public async Task Page_When_PageNumber_Is_Zero_Pretends_PageNumber_Is_One()
116-
{
117-
var todoItems = DbSetMock.Create(TodoItems(2, 3, 1)).Object;
118-
var repository = GetRepository();
119-
120-
var result = await repository.PageAsync(todoItems, 1, 0);
121-
122-
Assert.Equal(TodoItems(2), result, new IdComparer<TodoItem>());
123-
}
124-
125-
[Fact]
126-
public async Task Page_When_PageNumber_Of_PageSize_Does_Not_Exist_Return_Empty_Queryable()
127-
{
128-
var todoItems = DbSetMock.Create(TodoItems(2, 3, 1)).Object;
129-
var repository = GetRepository();
130-
131-
var result = await repository.PageAsync(todoItems, 2, 3);
132-
133-
Assert.Empty(result);
134-
}
135-
136-
[Theory]
137-
[InlineData(3, 2, new[] { 4, 5, 6 })]
138-
[InlineData(8, 2, new[] { 9 })]
139-
[InlineData(20, 1, new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })]
140-
public async Task Page_When_PageNumber_Is_Positive_Returns_PageNumberTh_Page_Of_Size_PageSize(int pageSize, int pageNumber, int[] expectedResult)
141-
{
142-
var todoItems = DbSetMock.Create(TodoItems(1, 2, 3, 4, 5, 6, 7, 8, 9)).Object;
143-
var repository = GetRepository();
144-
145-
var result = await repository.PageAsync(todoItems, pageSize, pageNumber);
146-
147-
Assert.Equal(TodoItems(expectedResult), result, new IdComparer<TodoItem>());
148-
}
149-
150-
[Theory]
151-
[InlineData(6, -1, new[] { 4, 5, 6, 7, 8, 9 })]
152-
[InlineData(6, -2, new[] { 1, 2, 3 })]
153-
[InlineData(20, -1, new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })]
154-
public async Task Page_When_PageNumber_Is_Negative_Returns_PageNumberTh_Page_From_End(int pageSize, int pageNumber, int[] expectedIds)
155-
{
156-
var todoItems = DbSetMock.Create(TodoItems(1, 2, 3, 4, 5, 6, 7, 8, 9)).Object;
157-
var repository = GetRepository();
158-
159-
var result = await repository.PageAsync(todoItems, pageSize, pageNumber);
160-
161-
Assert.Equal(TodoItems(expectedIds), result, new IdComparer<TodoItem>());
162-
}
163-
164-
private static TodoItem[] TodoItems(params int[] ids)
165-
{
166-
return ids.Select(id => new TodoItem { Id = id }).ToArray();
167-
}
168-
169-
private class IdComparer<T> : IEqualityComparer<T>
170-
where T : IIdentifiable
171-
{
172-
public bool Equals(T x, T y) => x?.StringId == y?.StringId;
173-
174-
public int GetHashCode(T obj) => obj?.StringId?.GetHashCode() ?? 0;
108+
}
109+
110+
[Theory]
111+
[InlineData(0)]
112+
[InlineData(-1)]
113+
[InlineData(-10)]
114+
public async Task Page_When_PageSize_Is_NonPositive_Does_Nothing(int pageSize)
115+
{
116+
var todoItems = DbSetMock.Create(TodoItems(2, 3, 1)).Object;
117+
var repository = GetRepository();
118+
119+
var result = await repository.PageAsync(todoItems, pageSize, 3);
120+
121+
Assert.Equal(TodoItems(2, 3, 1), result, new IdComparer<TodoItem>());
122+
}
123+
124+
[Fact]
125+
public async Task Page_When_PageNumber_Is_Zero_Pretends_PageNumber_Is_One()
126+
{
127+
var todoItems = DbSetMock.Create(TodoItems(2, 3, 1)).Object;
128+
var repository = GetRepository();
129+
130+
var result = await repository.PageAsync(todoItems, 1, 0);
131+
132+
Assert.Equal(TodoItems(2), result, new IdComparer<TodoItem>());
133+
}
134+
135+
[Fact]
136+
public async Task Page_When_PageNumber_Of_PageSize_Does_Not_Exist_Return_Empty_Queryable()
137+
{
138+
var todoItems = DbSetMock.Create(TodoItems(2, 3, 1)).Object;
139+
var repository = GetRepository();
140+
141+
var result = await repository.PageAsync(todoItems, 2, 3);
142+
143+
Assert.Empty(result);
144+
}
145+
146+
[Theory]
147+
[InlineData(3, 2, new[] { 4, 5, 6 })]
148+
[InlineData(8, 2, new[] { 9 })]
149+
[InlineData(20, 1, new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })]
150+
public async Task Page_When_PageNumber_Is_Positive_Returns_PageNumberTh_Page_Of_Size_PageSize(int pageSize, int pageNumber, int[] expectedResult)
151+
{
152+
var todoItems = DbSetMock.Create(TodoItems(1, 2, 3, 4, 5, 6, 7, 8, 9)).Object;
153+
var repository = GetRepository();
154+
155+
var result = await repository.PageAsync(todoItems, pageSize, pageNumber);
156+
157+
Assert.Equal(TodoItems(expectedResult), result, new IdComparer<TodoItem>());
158+
}
159+
160+
[Theory]
161+
[InlineData(6, -1, new[] { 4, 5, 6, 7, 8, 9 })]
162+
[InlineData(6, -2, new[] { 1, 2, 3 })]
163+
[InlineData(20, -1, new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })]
164+
public async Task Page_When_PageNumber_Is_Negative_Returns_PageNumberTh_Page_From_End(int pageSize, int pageNumber, int[] expectedIds)
165+
{
166+
var todoItems = DbSetMock.Create(TodoItems(1, 2, 3, 4, 5, 6, 7, 8, 9)).Object;
167+
var repository = GetRepository();
168+
169+
var result = await repository.PageAsync(todoItems, pageSize, pageNumber);
170+
171+
Assert.Equal(TodoItems(expectedIds), result, new IdComparer<TodoItem>());
172+
}
173+
174+
private static TodoItem[] TodoItems(params int[] ids)
175+
{
176+
return ids.Select(id => new TodoItem { Id = id }).ToArray();
177+
}
178+
179+
private class IdComparer<T> : IEqualityComparer<T>
180+
where T : IIdentifiable
181+
{
182+
public bool Equals(T x, T y) => x?.StringId == y?.StringId;
183+
184+
public int GetHashCode(T obj) => obj?.StringId?.GetHashCode() ?? 0;
175185
}
176186
}
177187
}

0 commit comments

Comments
 (0)