Skip to content

Commit 90a399d

Browse files
spike83csantero
authored andcommitted
changed AcceptanceTestBase to print out proper formatted and valid json to make compare and copy/paste to test files easier (#119)
1 parent 8dd97a9 commit 90a399d

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

JSONAPI.AcceptanceTests.EntityFrameworkTestWebApp.Tests/AcceptanceTestsBase.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using System;
22
using System.Data.Common;
3+
using System.Globalization;
34
using System.IO;
45
using System.Net;
56
using System.Net.Http;
7+
using System.Net.Http.Formatting;
68
using System.Text;
79
using System.Text.RegularExpressions;
810
using System.Threading.Tasks;
@@ -11,6 +13,9 @@
1113
using JSONAPI.Json;
1214
using Microsoft.Owin.Testing;
1315
using Microsoft.VisualStudio.TestTools.UnitTesting;
16+
using Newtonsoft.Json;
17+
using Newtonsoft.Json.Converters;
18+
using Newtonsoft.Json.Linq;
1419
using Owin;
1520

1621
namespace JSONAPI.AcceptanceTests.EntityFrameworkTestWebApp.Tests
@@ -39,13 +44,28 @@ protected virtual async Task AssertResponseContent(HttpResponseMessage response,
3944
{
4045
var redactedResponse = GuidRegex.Replace(responseContent, "{{SOME_GUID}}");
4146
actualResponse = StackTraceRegex.Replace(redactedResponse, "\"stackTrace\":\"{{STACK_TRACE}}\"");
47+
actualResponse.Should().Be(expectedResponse);
4248
}
4349
else
4450
{
4551
actualResponse = responseContent;
52+
JsonSerializerSettings settings = new JsonSerializerSettings
53+
{
54+
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
55+
DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff+00:00",
56+
Culture = CultureInfo.InvariantCulture,
57+
Formatting = Formatting.Indented
58+
};
59+
60+
var actualResponseJObject = JsonConvert.DeserializeObject(actualResponse) as JObject;
61+
var expectedResponseJObject = JsonConvert.DeserializeObject(expectedResponse) as JObject;
62+
var equals = JToken.DeepEquals(actualResponseJObject, expectedResponseJObject);
63+
if (!equals)
64+
{
65+
Assert.Fail("should be: " + JsonConvert.SerializeObject(expectedResponseJObject, settings) + "\n but was: " + JsonConvert.SerializeObject(actualResponseJObject, settings));
66+
}
4667
}
4768

48-
actualResponse.Should().Be(expectedResponse);
4969
response.Content.Headers.ContentType.MediaType.Should().Be(JsonApiContentType);
5070
response.Content.Headers.ContentType.CharSet.Should().Be("utf-8");
5171

0 commit comments

Comments
 (0)