Skip to content

Commit 1de23d8

Browse files
committed
test(extensibility): fix/remove failing tests
these tests are not currently setup correctly. they assume that a resource can be routed based on a different name (todo-items-test -> todo-items). this is not currently supported and is out of scope for this PR. I am open to discussion, but don't believe this is going to be on the roadmap. Other changes (todoitems -> todo-items) is for the dame reason. TodoItems have been mapped to todo-items in this example so the tests would fail.
1 parent 4480e6b commit 1de23d8

File tree

4 files changed

+12
-89
lines changed

4 files changed

+12
-89
lines changed

src/JsonApiDotNetCore/Models/RelationshipAttribute.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22

33
namespace JsonApiDotNetCore.Models
44
{

src/JsonApiDotNetCoreExample/Controllers/TodoItemsCustomController.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System.Collections.Generic;
22
using System.Threading.Tasks;
3-
using JsonApiDotNetCore.Controllers;
43
using JsonApiDotNetCore.Models;
54
using JsonApiDotNetCore.Services;
65
using JsonApiDotNetCoreExample.Models;
@@ -9,7 +8,7 @@
98

109
namespace JsonApiDotNetCoreExample.Controllers
1110
{
12-
[Route("custom/route/todoitems")]
11+
[Route("custom/route/todo-items")]
1312
public class TodoItemsCustomController : CustomJsonApiController<TodoItem>
1413
{
1514
public TodoItemsCustomController(

src/JsonApiDotNetCoreExample/Controllers/TodoItemsTestController.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
using JsonApiDotNetCore.Controllers;
2-
using JsonApiDotNetCore.Data;
32
using JsonApiDotNetCore.Models;
43
using JsonApiDotNetCore.Services;
54
using JsonApiDotNetCoreExample.Models;
5+
using Microsoft.AspNetCore.Mvc;
66
using Microsoft.Extensions.Logging;
77

88
namespace JsonApiDotNetCoreExample.Controllers
99
{
10-
public abstract class AbstractTodoItemsController<T> : JsonApiController<T> where T : class, IIdentifiable<int>
10+
public abstract class AbstractTodoItemsController<T>
11+
: JsonApiController<T> where T : class, IIdentifiable<int>
1112
{
1213
protected AbstractTodoItemsController(
1314
IJsonApiContext jsonApiContext,
1415
IResourceService<T, int> service,
1516
ILoggerFactory loggerFactory)
1617
: base(jsonApiContext, service, loggerFactory)
17-
{
18-
}
18+
{ }
1919
}
20+
21+
[Route("/abstract")]
2022
public class TodoItemsTestController : AbstractTodoItemsController<TodoItem>
2123
{
2224
public TodoItemsTestController(

test/JsonApiDotNetCoreExampleTests/Acceptance/Extensibility/CustomControllerTests.cs

Lines changed: 4 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
using Bogus;
55
using DotNetCoreDocs;
66
using DotNetCoreDocs.Writers;
7-
using JsonApiDotNetCore.Models;
8-
using JsonApiDotNetCore.Services;
97
using Microsoft.AspNetCore.Hosting;
108
using Microsoft.AspNetCore.TestHost;
119
using Xunit;
@@ -56,91 +54,14 @@ public async Task NonJsonApiControllers_DoNotUse_Dasherized_Routes()
5654
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
5755
}
5856

59-
[Fact]
60-
public async Task InheritedJsonApiControllers_Uses_Dasherized_Collection_Route()
61-
{
62-
// Arrange
63-
var builder = new WebHostBuilder()
64-
.UseStartup<Startup>();
65-
var httpMethod = new HttpMethod("GET");
66-
var route = "/api/v1/todo-items-test";
67-
68-
var server = new TestServer(builder);
69-
var client = server.CreateClient();
70-
var request = new HttpRequestMessage(httpMethod, route);
71-
72-
// act
73-
var response = await client.SendAsync(request);
74-
75-
// assert
76-
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
77-
}
78-
79-
[Fact]
80-
public async Task InheritedJsonApiControllers_Uses_Dasherized_Item_Route()
81-
{
82-
// Arrange
83-
var context = _fixture.GetService<AppDbContext>();
84-
var todoItem = _todoItemFaker.Generate();
85-
var person = _personFaker.Generate();
86-
todoItem.Owner = person;
87-
context.TodoItems.Add(todoItem);
88-
await context.SaveChangesAsync();
89-
90-
var builder = new WebHostBuilder()
91-
.UseStartup<Startup>();
92-
var httpMethod = new HttpMethod("GET");
93-
var route = $"/api/v1/todo-items-test/{todoItem.Id}";
94-
95-
var server = new TestServer(builder);
96-
var client = server.CreateClient();
97-
var request = new HttpRequestMessage(httpMethod, route);
98-
99-
// act
100-
var response = await client.SendAsync(request);
101-
102-
// assert
103-
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
104-
}
105-
106-
[Fact]
107-
public async Task InheritedJsonApiControllers_Creates_Proper_Relationship_Links()
108-
{
109-
// Arrange
110-
var context = _fixture.GetService<AppDbContext>();
111-
var todoItem = _todoItemFaker.Generate();
112-
var person = _personFaker.Generate();
113-
todoItem.Owner = person;
114-
context.TodoItems.Add(todoItem);
115-
await context.SaveChangesAsync();
116-
117-
var builder = new WebHostBuilder()
118-
.UseStartup<Startup>();
119-
var httpMethod = new HttpMethod("GET");
120-
var route = $"/api/v1/todo-items-test/{todoItem.Id}";
121-
122-
var server = new TestServer(builder);
123-
var client = server.CreateClient();
124-
var request = new HttpRequestMessage(httpMethod, route);
125-
126-
// act & assert
127-
var response = await client.SendAsync(request);
128-
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
129-
130-
var body = await response.Content.ReadAsStringAsync();
131-
var deserializedBody = JsonConvert.DeserializeObject<JObject>(body);
132-
133-
Assert.EndsWith($"{route}/owner", deserializedBody["data"]["relationships"]["owner"]["links"]["related"].ToString());
134-
}
135-
13657
[Fact]
13758
public async Task CustomRouteControllers_Uses_Dasherized_Collection_Route()
13859
{
13960
// Arrange
14061
var builder = new WebHostBuilder()
14162
.UseStartup<Startup>();
14263
var httpMethod = new HttpMethod("GET");
143-
var route = $"/custom/route/todoitems";
64+
var route = $"/custom/route/todo-items";
14465

14566
var server = new TestServer(builder);
14667
var client = server.CreateClient();
@@ -167,7 +88,7 @@ public async Task CustomRouteControllers_Uses_Dasherized_Item_Route()
16788
var builder = new WebHostBuilder()
16889
.UseStartup<Startup>();
16990
var httpMethod = new HttpMethod("GET");
170-
var route = $"/custom/route/todoitems/{todoItem.Id}";
91+
var route = $"/custom/route/todo-items/{todoItem.Id}";
17192

17293
var server = new TestServer(builder);
17394
var client = server.CreateClient();
@@ -194,7 +115,7 @@ public async Task CustomRouteControllers_Creates_Proper_Relationship_Links()
194115
var builder = new WebHostBuilder()
195116
.UseStartup<Startup>();
196117
var httpMethod = new HttpMethod("GET");
197-
var route = $"/custom/route/todoitems/{todoItem.Id}";
118+
var route = $"/custom/route/todo-items/{todoItem.Id}";
198119

199120
var server = new TestServer(builder);
200121
var client = server.CreateClient();
@@ -207,6 +128,7 @@ public async Task CustomRouteControllers_Creates_Proper_Relationship_Links()
207128
var body = await response.Content.ReadAsStringAsync();
208129
var deserializedBody = JsonConvert.DeserializeObject<JObject>(body);
209130

131+
var result = deserializedBody["data"]["relationships"]["owner"]["links"]["related"].ToString();
210132
Assert.EndsWith($"{route}/owner", deserializedBody["data"]["relationships"]["owner"]["links"]["related"].ToString());
211133
}
212134
}

0 commit comments

Comments
 (0)