Skip to content

Commit aa0ddfc

Browse files
committed
test(extensibility): failing test that users can define meta via services
1 parent 34d56ef commit aa0ddfc

File tree

4 files changed

+90
-2
lines changed

4 files changed

+90
-2
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System.Net;
2+
using System.Net.Http;
3+
using System.Threading.Tasks;
4+
using Microsoft.AspNetCore.Hosting;
5+
using Microsoft.AspNetCore.TestHost;
6+
using Xunit;
7+
using JsonApiDotNetCoreExample.Models;
8+
using DotNetCoreDocs;
9+
using JsonApiDotNetCoreExample;
10+
using DotNetCoreDocs.Writers;
11+
using Newtonsoft.Json;
12+
using JsonApiDotNetCore.Models;
13+
using System.Collections;
14+
using System.Diagnostics;
15+
using System.Threading;
16+
using JsonApiDotNetCoreExampleTests.Startups;
17+
18+
namespace JsonApiDotNetCoreExampleTests.Acceptance.Extensibility
19+
{
20+
[Collection("WebHostCollection")]
21+
public class RequestMetaTests
22+
{
23+
private DocsFixture<Startup, JsonDocWriter> _fixture;
24+
25+
public RequestMetaTests(DocsFixture<Startup, JsonDocWriter> fixture)
26+
{
27+
_fixture = fixture;
28+
}
29+
30+
[Fact]
31+
public async Task Injecting_IRequestMeta_Adds_Meta_Data()
32+
{
33+
// arrange
34+
var person = new Person();
35+
var expectedMeta = person.GetMeta(null);
36+
var builder = new WebHostBuilder()
37+
.UseStartup<MetaStartup>();
38+
39+
var httpMethod = new HttpMethod("GET");
40+
var route = $"/api/v1/people";
41+
42+
var server = new TestServer(builder);
43+
var client = server.CreateClient();
44+
var request = new HttpRequestMessage(httpMethod, route);
45+
46+
// act
47+
var response = await client.SendAsync(request);
48+
var documents = JsonConvert.DeserializeObject<Documents>(await response.Content.ReadAsStringAsync());
49+
50+
// assert
51+
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
52+
Assert.NotNull(documents.Meta);
53+
Assert.NotNull(expectedMeta);
54+
Assert.NotEmpty(expectedMeta);
55+
56+
foreach(var hash in expectedMeta)
57+
{
58+
if(hash.Value is IList)
59+
{
60+
var listValue = (IList)hash.Value;
61+
for(var i=0; i < listValue.Count; i++)
62+
Assert.Equal(listValue[i].ToString(), ((IList)documents.Meta[hash.Key])[i].ToString());
63+
}
64+
else
65+
{
66+
Assert.Equal(hash.Value, documents.Meta[hash.Key]);
67+
}
68+
}
69+
Assert.Equal("request-meta-value", documents.Meta["request-meta"]);
70+
}
71+
}
72+
}

test/JsonApiDotNetCoreExampleTests/Acceptance/Spec/DocumentTests/Meta.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
using Xunit;
1111
using JsonApiDotNetCore.Models;
1212
using JsonApiDotNetCoreExample.Data;
13-
using System.Linq;
1413
using JsonApiDotNetCoreExampleTests.Startups;
1514
using JsonApiDotNetCoreExample.Models;
1615
using System.Collections;
17-
using System;
1816

1917
namespace JsonApiDotNetCoreExampleTests.Acceptance.Spec.DocumentTests
2018
{
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System.Collections.Generic;
2+
using JsonApiDotNetCore.Services;
3+
4+
namespace JsonApiDotNetCoreExampleTests.Services
5+
{
6+
public class MetaService : IRequestMeta
7+
{
8+
public Dictionary<string, object> GetMeta()
9+
{
10+
return new Dictionary<string, object> {
11+
{ "request-meta", "request-meta-value" }
12+
};
13+
}
14+
}
15+
}

test/JsonApiDotNetCoreExampleTests/Startups/MetaStartup.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
using DotNetCoreDocs.Configuration;
88
using System;
99
using JsonApiDotNetCoreExample;
10+
using JsonApiDotNetCore.Services;
11+
using JsonApiDotNetCoreExampleTests.Services;
1012

1113
namespace JsonApiDotNetCoreExampleTests.Startups
1214
{
@@ -38,6 +40,7 @@ public override IServiceProvider ConfigureServices(IServiceCollection services)
3840
});
3941

4042
services.AddDocumentationConfiguration(Config);
43+
services.AddScoped<IRequestMeta, MetaService>();
4144

4245
return services.BuildServiceProvider();
4346
}

0 commit comments

Comments
 (0)