forked from dotnet/aspnetcore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJsonPatchDocumentJsonPropertyAttributeTest.cs
89 lines (71 loc) · 2.41 KB
/
JsonPatchDocumentJsonPropertyAttributeTest.cs
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Xunit;
namespace Microsoft.AspNetCore.JsonPatch;
public class JsonPatchDocumentJsonPropertyAttributeTest
{
[Fact]
public void Add_RespectsJsonPropertyAttribute()
{
// Arrange
var patchDocument = new JsonPatchDocument<JsonPropertyObject>();
// Act
patchDocument.Add(p => p.Name, "John");
// Assert
var pathToCheck = patchDocument.Operations.First().path;
Assert.Equal("/AnotherName", pathToCheck);
}
[Fact]
public void Add_RespectsJsonPropertyAttribute_WithDotWhitespaceAndBackslashInName()
{
// Arrange
var obj = new JsonPropertyObjectWithStrangeNames();
var patchDocument = new JsonPatchDocument();
// Act
patchDocument.Add("/First Name.", "John");
patchDocument.Add("Last\\Name", "Doe");
patchDocument.ApplyTo(obj);
// Assert
Assert.Equal("John", obj.FirstName);
Assert.Equal("Doe", obj.LastName);
}
[Fact]
public void Move_FallsbackToPropertyName_WhenJsonPropertyAttributeName_IsEmpty()
{
// Arrange
var patchDocument = new JsonPatchDocument<JsonPropertyWithNoPropertyName>();
// Act
patchDocument.Move(m => m.StringProperty, m => m.StringProperty2);
// Assert
var fromPath = patchDocument.Operations.First().from;
Assert.Equal("/StringProperty", fromPath);
var toPath = patchDocument.Operations.First().path;
Assert.Equal("/StringProperty2", toPath);
}
private class JsonPropertyObject
{
[JsonProperty("AnotherName")]
public string Name { get; set; }
}
private class JsonPropertyObjectWithStrangeNames
{
[JsonProperty("First Name.")]
public string FirstName { get; set; }
[JsonProperty("Last\\Name")]
public string LastName { get; set; }
}
private class JsonPropertyWithNoPropertyName
{
[JsonProperty]
public string StringProperty { get; set; }
[JsonProperty]
public string[] ArrayProperty { get; set; }
[JsonProperty]
public string StringProperty2 { get; set; }
[JsonProperty]
public string SSN { get; set; }
}
}