-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathErrorFormatterTests.cs
More file actions
70 lines (62 loc) · 2.92 KB
/
Copy pathErrorFormatterTests.cs
File metadata and controls
70 lines (62 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System.Net;
using System.Threading.Tasks;
using JSONAPI.Documents;
using JSONAPI.Json;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace JSONAPI.Tests.Json
{
[TestClass]
public class ErrorFormatterTests : JsonApiFormatterTestsBase
{
[TestMethod]
public async Task Serialize_error_with_only_id()
{
var error = new Mock<IError>();
error.Setup(e => e.Id).Returns("123456");
var formatter = new ErrorFormatter(null, null);
await AssertSerializeOutput(formatter, error.Object, "Json/Fixtures/ErrorFormatter/Serialize_error_with_only_id.json");
}
[TestMethod]
public async Task Serialize_error_with_all_possible_members()
{
var mockAboutLink = new Mock<ILink>(MockBehavior.Strict);
mockAboutLink.Setup(l => l.Href).Returns("http://example.com/my-about-link");
var mockMetadata = new Mock<IMetadata>(MockBehavior.Strict);
mockMetadata.Setup(m => m.MetaObject).Returns(() =>
{
var obj = new JObject();
obj["foo"] = "qux";
return obj;
});
var error = new Mock<IError>(MockBehavior.Strict);
error.Setup(e => e.Id).Returns("654321");
error.Setup(e => e.AboutLink).Returns(mockAboutLink.Object);
error.Setup(e => e.Status).Returns(HttpStatusCode.BadRequest);
error.Setup(e => e.Code).Returns("9000");
error.Setup(e => e.Title).Returns("Some error occurred.");
error.Setup(e => e.Detail).Returns("The thingamabob fell through the whatsit.");
error.Setup(e => e.Pointer).Returns("/data/attributes/bob");
error.Setup(e => e.Parameter).Returns("sort");
error.Setup(e => e.Metadata).Returns(mockMetadata.Object);
var mockLinkFormatter = new Mock<ILinkFormatter>(MockBehavior.Strict);
mockLinkFormatter.Setup(s => s.Serialize(mockAboutLink.Object, It.IsAny<JsonWriter>()))
.Returns((ILink link, JsonWriter writer) =>
{
writer.WriteValue(link.Href);
return Task.FromResult(0);
});
var mockMetadataFormatter = new Mock<IMetadataFormatter>(MockBehavior.Strict);
mockMetadataFormatter.Setup(s => s.Serialize(mockMetadata.Object, It.IsAny<JsonWriter>()))
.Returns((IMetadata metadata, JsonWriter writer) =>
{
metadata.MetaObject.WriteTo(writer);
return Task.FromResult(0);
});
var formatter = new ErrorFormatter(mockLinkFormatter.Object, mockMetadataFormatter.Object);
await AssertSerializeOutput(formatter, error.Object, "Json/Fixtures/ErrorFormatter/Serialize_error_with_all_possible_members.json");
}
}
}