Skip to content

Commit edcb959

Browse files
author
Chris Santero
committed
ensure not found works for fetching resource by ID
also merged related resource tests into the FetchingResources test class.
1 parent f3ddb88 commit edcb959

7 files changed

Lines changed: 65 additions & 50 deletions

File tree

JSONAPI.EntityFramework.Tests/Acceptance/FetchingResourcesTests.cs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,22 @@ public async Task GetById()
5555
}
5656
}
5757

58+
[TestMethod]
59+
[DeploymentItem(@"Acceptance\Data\Comment.csv", @"Acceptance\Data")]
60+
[DeploymentItem(@"Acceptance\Data\Post.csv", @"Acceptance\Data")]
61+
[DeploymentItem(@"Acceptance\Data\PostTagLink.csv", @"Acceptance\Data")]
62+
[DeploymentItem(@"Acceptance\Data\Tag.csv", @"Acceptance\Data")]
63+
[DeploymentItem(@"Acceptance\Data\User.csv", @"Acceptance\Data")]
64+
public async Task Get_resource_by_id_that_doesnt_exist()
65+
{
66+
using (var effortConnection = GetEffortConnection())
67+
{
68+
var response = await SubmitGet(effortConnection, "posts/3000");
69+
70+
await AssertResponseContent(response, @"Acceptance\Fixtures\FetchingResources\Get_resource_by_id_that_doesnt_exist.json", HttpStatusCode.NotFound, true);
71+
}
72+
}
73+
5874
[TestMethod]
5975
[DeploymentItem(@"Acceptance\Data\UserGroup.csv", @"Acceptance\Data")]
6076
public async Task Get_dasherized_resource()
@@ -66,5 +82,37 @@ public async Task Get_dasherized_resource()
6682
await AssertResponseContent(response, @"Acceptance\Fixtures\FetchingResources\Get_dasherized_resource.json", HttpStatusCode.OK);
6783
}
6884
}
85+
86+
[TestMethod]
87+
[DeploymentItem(@"Acceptance\Data\Comment.csv", @"Acceptance\Data")]
88+
[DeploymentItem(@"Acceptance\Data\Post.csv", @"Acceptance\Data")]
89+
[DeploymentItem(@"Acceptance\Data\PostTagLink.csv", @"Acceptance\Data")]
90+
[DeploymentItem(@"Acceptance\Data\Tag.csv", @"Acceptance\Data")]
91+
[DeploymentItem(@"Acceptance\Data\User.csv", @"Acceptance\Data")]
92+
public async Task Get_related_to_many()
93+
{
94+
using (var effortConnection = GetEffortConnection())
95+
{
96+
var response = await SubmitGet(effortConnection, "posts/201/comments");
97+
98+
await AssertResponseContent(response, @"Acceptance\Fixtures\FetchingResources\Get_related_to_many_response.json", HttpStatusCode.OK);
99+
}
100+
}
101+
102+
[TestMethod]
103+
[DeploymentItem(@"Acceptance\Data\Comment.csv", @"Acceptance\Data")]
104+
[DeploymentItem(@"Acceptance\Data\Post.csv", @"Acceptance\Data")]
105+
[DeploymentItem(@"Acceptance\Data\PostTagLink.csv", @"Acceptance\Data")]
106+
[DeploymentItem(@"Acceptance\Data\Tag.csv", @"Acceptance\Data")]
107+
[DeploymentItem(@"Acceptance\Data\User.csv", @"Acceptance\Data")]
108+
public async Task Get_related_to_one()
109+
{
110+
using (var effortConnection = GetEffortConnection())
111+
{
112+
var response = await SubmitGet(effortConnection, "posts/201/author");
113+
114+
await AssertResponseContent(response, @"Acceptance\Fixtures\FetchingResources\Get_related_to_one_response.json", HttpStatusCode.OK);
115+
}
116+
}
69117
}
70118
}

JSONAPI.EntityFramework.Tests/Acceptance/Fixtures/RelatedResources/Responses/Get_related_to_many_response.json renamed to JSONAPI.EntityFramework.Tests/Acceptance/Fixtures/FetchingResources/Get_related_to_many_response.json

File renamed without changes.

JSONAPI.EntityFramework.Tests/Acceptance/Fixtures/RelatedResources/Responses/Get_related_to_one_response.json renamed to JSONAPI.EntityFramework.Tests/Acceptance/Fixtures/FetchingResources/Get_related_to_one_response.json

File renamed without changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"errors": [
3+
{
4+
"id": "{{SOME_GUID}}",
5+
"status": "404",
6+
"title": "Resource not found",
7+
"detail": "No resource of type `posts` exists with id `3000`"
8+
}
9+
]
10+
}

JSONAPI.EntityFramework.Tests/Acceptance/RelatedResourcesTests.cs

Lines changed: 0 additions & 46 deletions
This file was deleted.

JSONAPI.EntityFramework.Tests/JSONAPI.EntityFramework.Tests.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,11 @@
113113
<Compile Include="Acceptance\AttributeSerializationTests.cs" />
114114
<Compile Include="Acceptance\DeletingResourcesTests.cs" />
115115
<Compile Include="Acceptance\ErrorsTests.cs" />
116+
<Compile Include="Acceptance\FetchingResourcesTests.cs" />
116117
<Compile Include="Acceptance\HeterogeneousTests.cs" />
117118
<Compile Include="Acceptance\DocumentTests.cs" />
118119
<Compile Include="Acceptance\CreatingResourcesTests.cs" />
119-
<Compile Include="Acceptance\RelatedResourcesTests.cs" />
120120
<Compile Include="Acceptance\ComputedIdTests.cs" />
121-
<Compile Include="Acceptance\FetchingResourcesTests.cs" />
122121
<Compile Include="Acceptance\UpdatingResourcesTests.cs" />
123122
<Compile Include="Acceptance\AcceptanceTestsBase.cs" />
124123
<Compile Include="Acceptance\SortingTests.cs" />
@@ -188,8 +187,8 @@
188187
<EmbeddedResource Include="Acceptance\Fixtures\Errors\Controller_action_throws_exception.json" />
189188
<EmbeddedResource Include="Acceptance\Fixtures\UpdatingResources\Requests\PatchWithMissingToOneLinkageRequest.json" />
190189
<EmbeddedResource Include="Acceptance\Fixtures\UpdatingResources\Responses\PatchWithMissingToOneLinkageResponse.json" />
191-
<EmbeddedResource Include="Acceptance\Fixtures\RelatedResources\Responses\Get_related_to_many_response.json" />
192-
<EmbeddedResource Include="Acceptance\Fixtures\RelatedResources\Responses\Get_related_to_one_response.json" />
190+
<EmbeddedResource Include="Acceptance\Fixtures\FetchingResources\Get_related_to_many_response.json" />
191+
<EmbeddedResource Include="Acceptance\Fixtures\FetchingResources\Get_related_to_one_response.json" />
193192
<None Include="Acceptance\Data\LanguageUserLink.csv">
194193
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
195194
</None>
@@ -204,6 +203,7 @@
204203
<EmbeddedResource Include="Acceptance\Fixtures\UpdatingResources\Responses\Patch_with_unknown_attribute_Response.json" />
205204
<EmbeddedResource Include="Acceptance\Fixtures\UpdatingResources\Responses\Patch_with_unknown_relationship_Response.json" />
206205
<EmbeddedResource Include="Acceptance\Fixtures\UpdatingResources\Requests\Patch_with_unknown_relationship_Request.json" />
206+
<EmbeddedResource Include="Acceptance\Fixtures\FetchingResources\Get_resource_by_id_that_doesnt_exist.json" />
207207
<None Include="App.Config">
208208
<SubType>Designer</SubType>
209209
</None>

JSONAPI.EntityFramework/Http/EntityFrameworkDocumentMaterializer.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ public virtual async Task<ISingleResourceDocument> GetRecordById(string id, Http
6868
var apiBaseUrl = GetBaseUrlFromRequest(request);
6969
var registration = _resourceTypeRegistry.GetRegistrationForType(typeof(T));
7070
var singleResource = await FilterById<T>(id, registration).FirstOrDefaultAsync(cancellationToken);
71+
if (singleResource == null)
72+
throw JsonApiException.CreateForNotFound(string.Format("No resource of type `{0}` exists with id `{1}`",
73+
registration.ResourceTypeName, id));
7174
return _singleResourceDocumentBuilder.BuildDocument(singleResource, apiBaseUrl, null);
7275
}
7376

0 commit comments

Comments
 (0)