Skip to content

Commit c41e0ad

Browse files
authored
Merge pull request #266 from Turnerj/refined-tests
Refining and restructuring the test cases
2 parents b6ef2f8 + eb85764 commit c41e0ad

27 files changed

+497
-632
lines changed

Tests/Schema.NET.Test/ContextJsonConverterTest.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
namespace Schema.NET.Test
22
{
3-
using Newtonsoft.Json;
43
using Xunit;
54

65
public class ContextJsonConverterTest
@@ -10,7 +9,7 @@ public void ReadJson_StringContext_ContextHasName()
109
{
1110
var json = "{\"@context\":\"foo\",\"@type\":\"Thing\"}";
1211

13-
var thing = JsonConvert.DeserializeObject<Thing>(json);
12+
var thing = SchemaSerializer.DeserializeObject<Thing>(json);
1413

1514
Assert.NotNull(thing?.Context);
1615
Assert.Equal("foo", thing?.Context.Name);
@@ -22,7 +21,7 @@ public void ReadJson_ObjectContextWithName_ContextHasName()
2221
{
2322
var json = "{\"@context\":{\"name\":\"foo\"},\"@type\":\"Thing\"}";
2423

25-
var thing = JsonConvert.DeserializeObject<Thing>(json);
24+
var thing = SchemaSerializer.DeserializeObject<Thing>(json);
2625

2726
Assert.NotNull(thing?.Context);
2827
Assert.Equal("foo", thing?.Context.Name);
@@ -34,7 +33,7 @@ public void ReadJson_ObjectContextWithNameAndLanguage_ContextHasNameAndLanguage(
3433
{
3534
var json = "{\"@context\":{\"name\":\"foo\",\"@language\":\"en\"},\"@type\":\"Thing\"}";
3635

37-
var thing = JsonConvert.DeserializeObject<Thing>(json);
36+
var thing = SchemaSerializer.DeserializeObject<Thing>(json);
3837

3938
Assert.NotNull(thing?.Context);
4039
Assert.Equal("foo", thing?.Context.Name);

Tests/Schema.NET.Test/core/BookTest.cs renamed to Tests/Schema.NET.Test/Examples/BookTest.cs

Lines changed: 213 additions & 218 deletions
Large diffs are not rendered by default.
Lines changed: 95 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,95 @@
1-
namespace Schema.NET.Test
2-
{
3-
using System;
4-
using System.Collections.Generic;
5-
using System.Linq;
6-
using Newtonsoft.Json;
7-
using Xunit;
8-
9-
public class BreadcrumbListTest
10-
{
11-
private readonly BreadcrumbList breadcrumbList = new()
12-
{
13-
ItemListElement = new List<IListItem>()
14-
{
15-
new ListItem()
16-
{
17-
Position = 1,
18-
Item = new Book()
19-
{
20-
Id = new Uri("https://example.com/books"),
21-
Name = "Books",
22-
Image = new Uri("https://example.com/images/icon-book.png"),
23-
},
24-
},
25-
new ListItem()
26-
{
27-
Position = 2,
28-
Item = new Person()
29-
{
30-
Id = new Uri("https://example.com/books/authors"),
31-
Name = "Authors",
32-
Image = new Uri("https://example.com/images/icon-author.png"),
33-
},
34-
},
35-
},
36-
};
37-
38-
private readonly string json =
39-
"{" +
40-
"\"@context\":\"https://schema.org\"," +
41-
"\"@type\":\"BreadcrumbList\"," +
42-
"\"itemListElement\":[" +
43-
"{" +
44-
"\"@type\":\"ListItem\"," +
45-
"\"item\":{" + // Required
46-
"\"@type\":\"Book\"," +
47-
"\"@id\":\"https://example.com/books\"," + // Required
48-
"\"name\":\"Books\"," + // Required
49-
"\"image\":\"https://example.com/images/icon-book.png\"" + // Optional
50-
"}," +
51-
"\"position\":1" + // Required
52-
"}," +
53-
"{" +
54-
"\"@type\":\"ListItem\"," +
55-
"\"item\":{" +
56-
"\"@type\":\"Person\"," +
57-
"\"@id\":\"https://example.com/books/authors\"," + // Required
58-
"\"name\":\"Authors\"," +
59-
"\"image\":\"https://example.com/images/icon-author.png\"" +
60-
"}," +
61-
"\"position\":2" +
62-
"}" +
63-
"]" +
64-
"}";
65-
66-
[Fact]
67-
public void ToString_BreadcrumbListGoogleStructuredData_ReturnsExpectedJsonLd() =>
68-
Assert.Equal(this.json, this.breadcrumbList.ToString());
69-
70-
[Fact]
71-
public void Deserializing_BreadcrumbListJsonLd_ReturnsMatchingBreadcrumbList()
72-
{
73-
Assert.Equal(this.breadcrumbList.ToString(), JsonConvert.DeserializeObject<BreadcrumbList>(this.json, TestDefaults.DefaultJsonSerializerSettings)!.ToString());
74-
Assert.Equal(JsonConvert.SerializeObject(this.breadcrumbList, TestDefaults.DefaultJsonSerializerSettings), JsonConvert.SerializeObject(JsonConvert.DeserializeObject<BreadcrumbList>(this.json, TestDefaults.DefaultJsonSerializerSettings), TestDefaults.DefaultJsonSerializerSettings));
75-
}
76-
77-
[Fact]
78-
public void Deserializing_BreadcrumbListJsonLd_ReturnsBreadcrumbList()
79-
{
80-
var breadcrumbList = JsonConvert.DeserializeObject<BreadcrumbList>(this.json, TestDefaults.DefaultJsonSerializerSettings)!;
81-
82-
List<IThing> things = breadcrumbList.ItemListElement;
83-
List<IListItem> listItems = breadcrumbList.ItemListElement;
84-
Assert.Equal(2, things.Count);
85-
Assert.Empty(listItems);
86-
var thing1 = things.First();
87-
var thing2 = things.Last();
88-
var listItem1 = (IListItem)thing1;
89-
var listItem2 = (IListItem)thing2;
90-
Assert.Equal(1, (int)listItem1.Position!);
91-
Assert.Equal(2, (int)listItem2.Position!);
92-
var book = listItem1.Item.OfType<IBook>().First()!;
93-
Assert.Equal("Books", book.Name);
94-
Assert.Equal(new Uri("https://example.com/images/icon-book.png"), (Uri)book.Image!);
95-
var person = listItem2.Item.OfType<IPerson>().First();
96-
Assert.Equal("Authors", person.Name);
97-
Assert.Equal(new Uri("https://example.com/images/icon-author.png"), (Uri)person.Image!);
98-
}
99-
}
100-
}
1+
namespace Schema.NET.Test.Examples
2+
{
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using Xunit;
7+
8+
public class BreadcrumbListTest
9+
{
10+
private readonly BreadcrumbList breadcrumbList = new()
11+
{
12+
ItemListElement = new List<IListItem>()
13+
{
14+
new ListItem()
15+
{
16+
Position = 1,
17+
Item = new Book()
18+
{
19+
Id = new Uri("https://example.com/books"),
20+
Name = "Books",
21+
Image = new Uri("https://example.com/images/icon-book.png"),
22+
},
23+
},
24+
new ListItem()
25+
{
26+
Position = 2,
27+
Item = new Person()
28+
{
29+
Id = new Uri("https://example.com/books/authors"),
30+
Name = "Authors",
31+
Image = new Uri("https://example.com/images/icon-author.png"),
32+
},
33+
},
34+
},
35+
};
36+
37+
private readonly string json =
38+
"{" +
39+
"\"@context\":\"https://schema.org\"," +
40+
"\"@type\":\"BreadcrumbList\"," +
41+
"\"itemListElement\":[" +
42+
"{" +
43+
"\"@type\":\"ListItem\"," +
44+
"\"item\":{" + // Required
45+
"\"@type\":\"Book\"," +
46+
"\"@id\":\"https://example.com/books\"," + // Required
47+
"\"name\":\"Books\"," + // Required
48+
"\"image\":\"https://example.com/images/icon-book.png\"" + // Optional
49+
"}," +
50+
"\"position\":1" + // Required
51+
"}," +
52+
"{" +
53+
"\"@type\":\"ListItem\"," +
54+
"\"item\":{" +
55+
"\"@type\":\"Person\"," +
56+
"\"@id\":\"https://example.com/books/authors\"," + // Required
57+
"\"name\":\"Authors\"," +
58+
"\"image\":\"https://example.com/images/icon-author.png\"" +
59+
"}," +
60+
"\"position\":2" +
61+
"}" +
62+
"]" +
63+
"}";
64+
65+
[Fact]
66+
public void Deserializing_BreadcrumbListJsonLd_ReturnsMatchingBreadcrumbList()
67+
{
68+
Assert.Equal(this.breadcrumbList.ToString(), SchemaSerializer.DeserializeObject<BreadcrumbList>(this.json)!.ToString());
69+
Assert.Equal(SchemaSerializer.SerializeObject(this.breadcrumbList), SchemaSerializer.SerializeObject(SchemaSerializer.DeserializeObject<BreadcrumbList>(this.json)!));
70+
}
71+
72+
[Fact]
73+
public void Deserializing_BreadcrumbListJsonLd_ReturnsBreadcrumbList()
74+
{
75+
var breadcrumbList = SchemaSerializer.DeserializeObject<BreadcrumbList>(this.json)!;
76+
77+
List<IThing> things = breadcrumbList.ItemListElement;
78+
List<IListItem> listItems = breadcrumbList.ItemListElement;
79+
Assert.Equal(2, things.Count);
80+
Assert.Empty(listItems);
81+
var thing1 = things.First();
82+
var thing2 = things.Last();
83+
var listItem1 = (IListItem)thing1;
84+
var listItem2 = (IListItem)thing2;
85+
Assert.Equal(1, (int)listItem1.Position!);
86+
Assert.Equal(2, (int)listItem2.Position!);
87+
var book = listItem1.Item.OfType<IBook>().First()!;
88+
Assert.Equal("Books", book.Name);
89+
Assert.Equal(new Uri("https://example.com/images/icon-book.png"), (Uri)book.Image!);
90+
var person = listItem2.Item.OfType<IPerson>().First();
91+
Assert.Equal("Authors", person.Name);
92+
Assert.Equal(new Uri("https://example.com/images/icon-author.png"), (Uri)person.Image!);
93+
}
94+
}
95+
}

Tests/Schema.NET.Test/core/CarTest.cs renamed to Tests/Schema.NET.Test/Examples/CarTest.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
namespace Schema.NET.Test
1+
namespace Schema.NET.Test.Examples
22
{
33
using System;
4-
using Newtonsoft.Json;
54
using Xunit;
65

76
public class CarTest
@@ -60,15 +59,11 @@ public class CarTest
6059
"\"vehicleModelDate\":2019" +
6160
"}";
6261

63-
[Fact]
64-
public void ToString_CarGoogleStructuredData_ReturnsExpectedJsonLd() =>
65-
Assert.Equal(this.json, this.car.ToString());
66-
6762
[Fact]
6863
public void Deserializing_CarJsonLd_ReturnsCar()
6964
{
70-
Assert.Equal(this.car.ToString(), JsonConvert.DeserializeObject<Car>(this.json, TestDefaults.DefaultJsonSerializerSettings)!.ToString());
71-
Assert.Equal(JsonConvert.SerializeObject(this.car, TestDefaults.DefaultJsonSerializerSettings), JsonConvert.SerializeObject(JsonConvert.DeserializeObject<Car>(this.json, TestDefaults.DefaultJsonSerializerSettings), TestDefaults.DefaultJsonSerializerSettings));
65+
Assert.Equal(this.car.ToString(), SchemaSerializer.DeserializeObject<Car>(this.json)!.ToString());
66+
Assert.Equal(SchemaSerializer.SerializeObject(this.car), SchemaSerializer.SerializeObject(SchemaSerializer.DeserializeObject<Car>(this.json)!));
7267
}
7368
}
7469
}

Tests/Schema.NET.Test/core/ClaimReviewTest.cs renamed to Tests/Schema.NET.Test/Examples/ClaimReviewTest.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
namespace Schema.NET.Test
1+
namespace Schema.NET.Test.Examples
22
{
33
using System;
4-
using Newtonsoft.Json;
54
using Xunit;
65

76
// https://developers.google.com/search/docs/data-types/factcheck
@@ -63,15 +62,11 @@ public class ClaimReviewTest
6362
"\"claimReviewed\":\"The world is flat\"" +
6463
"}";
6564

66-
[Fact]
67-
public void ToString_ClaimReviewGoogleStructuredData_ReturnsExpectedJsonLd() =>
68-
Assert.Equal(this.json, this.claimReview.ToString());
69-
7065
[Fact]
7166
public void Deserializing_ClaimReviewJsonLd_ReturnsClaimReview()
7267
{
73-
Assert.Equal(this.claimReview.ToString(), JsonConvert.DeserializeObject<ClaimReview>(this.json, TestDefaults.DefaultJsonSerializerSettings)!.ToString());
74-
Assert.Equal(JsonConvert.SerializeObject(this.claimReview, TestDefaults.DefaultJsonSerializerSettings), JsonConvert.SerializeObject(JsonConvert.DeserializeObject<ClaimReview>(this.json, TestDefaults.DefaultJsonSerializerSettings), TestDefaults.DefaultJsonSerializerSettings));
68+
Assert.Equal(this.claimReview.ToString(), SchemaSerializer.DeserializeObject<ClaimReview>(this.json)!.ToString());
69+
Assert.Equal(SchemaSerializer.SerializeObject(this.claimReview), SchemaSerializer.SerializeObject(SchemaSerializer.DeserializeObject<ClaimReview>(this.json)!));
7570
}
7671
}
7772
}

Tests/Schema.NET.Test/core/CourseTest.cs renamed to Tests/Schema.NET.Test/Examples/CourseTest.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
namespace Schema.NET.Test
1+
namespace Schema.NET.Test.Examples
22
{
33
using System;
4-
using Newtonsoft.Json;
54
using Xunit;
65

76
// https://developers.google.com/search/docs/data-types/courses
@@ -31,15 +30,11 @@ public class CourseTest
3130
"}" +
3231
"}";
3332

34-
[Fact]
35-
public void ToString_CourseGoogleStructuredData_ReturnsExpectedJsonLd() =>
36-
Assert.Equal(this.json, this.course.ToString());
37-
3833
[Fact]
3934
public void Deserializing_CourseJsonLd_ReturnsCourse()
4035
{
41-
Assert.Equal(this.course.ToString(), JsonConvert.DeserializeObject<Course>(this.json, TestDefaults.DefaultJsonSerializerSettings)!.ToString());
42-
Assert.Equal(JsonConvert.SerializeObject(this.course, TestDefaults.DefaultJsonSerializerSettings), JsonConvert.SerializeObject(JsonConvert.DeserializeObject<Course>(this.json, TestDefaults.DefaultJsonSerializerSettings), TestDefaults.DefaultJsonSerializerSettings));
36+
Assert.Equal(this.course.ToString(), SchemaSerializer.DeserializeObject<Course>(this.json)!.ToString());
37+
Assert.Equal(SchemaSerializer.SerializeObject(this.course), SchemaSerializer.SerializeObject(SchemaSerializer.DeserializeObject<Course>(this.json)!));
4338
}
4439
}
4540
}

Tests/Schema.NET.Test/core/EventTest.cs renamed to Tests/Schema.NET.Test/Examples/EventTest.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
namespace Schema.NET.Test
1+
namespace Schema.NET.Test.Examples
22
{
33
using System;
44
using System.Collections.Generic;
5-
using Newtonsoft.Json;
65
using Xunit;
76

87
// https://developers.google.com/search/docs/data-types/events
@@ -103,15 +102,11 @@ public class EventTest
103102
"\"startDate\":\"2017-04-24T19:30:00-08:00\"" +
104103
"}";
105104

106-
[Fact]
107-
public void ToString_EventGoogleStructuredData_ReturnsExpectedJsonLd() =>
108-
Assert.Equal(this.json, this.@event.ToString());
109-
110105
[Fact]
111106
public void Deserializing_EventJsonLd_ReturnsEvent()
112107
{
113-
Assert.Equal(this.@event.ToString(), JsonConvert.DeserializeObject<Event>(this.json, TestDefaults.DefaultJsonSerializerSettings)!.ToString());
114-
Assert.Equal(JsonConvert.SerializeObject(this.@event, TestDefaults.DefaultJsonSerializerSettings), JsonConvert.SerializeObject(JsonConvert.DeserializeObject<Event>(this.json, TestDefaults.DefaultJsonSerializerSettings), TestDefaults.DefaultJsonSerializerSettings));
108+
Assert.Equal(this.@event.ToString(), SchemaSerializer.DeserializeObject<Event>(this.json)!.ToString());
109+
Assert.Equal(SchemaSerializer.SerializeObject(this.@event), SchemaSerializer.SerializeObject(SchemaSerializer.DeserializeObject<Event>(this.json)!));
115110
}
116111
}
117112
}

Tests/Schema.NET.Test/core/ItemListTest.cs renamed to Tests/Schema.NET.Test/Examples/ItemListTest.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
namespace Schema.NET.Test
1+
namespace Schema.NET.Test.Examples
22
{
33
using System;
44
using System.Collections.Generic;
55
using System.Linq;
6-
using Newtonsoft.Json;
76
using Xunit;
87

98
public class ItemListTest
@@ -58,8 +57,8 @@ public class ItemListTest
5857
[Fact]
5958
public void Deserializing_ItemListJsonLd_ReturnsMatchingItemList()
6059
{
61-
Assert.Equal(this.itemlist.ToString(), JsonConvert.DeserializeObject<ItemList>(this.json, TestDefaults.DefaultJsonSerializerSettings)!.ToString());
62-
Assert.Equal(JsonConvert.SerializeObject(this.itemlist, TestDefaults.DefaultJsonSerializerSettings), JsonConvert.SerializeObject(JsonConvert.DeserializeObject<ItemList>(this.json, TestDefaults.DefaultJsonSerializerSettings), TestDefaults.DefaultJsonSerializerSettings));
60+
Assert.Equal(this.itemlist.ToString(), SchemaSerializer.DeserializeObject<ItemList>(this.json)!.ToString());
61+
Assert.Equal(SchemaSerializer.SerializeObject(this.itemlist), SchemaSerializer.SerializeObject(SchemaSerializer.DeserializeObject<ItemList>(this.json)!));
6362
}
6463

6564
// https://developers.google.com/search/docs/guides/mark-up-listings
@@ -188,7 +187,7 @@ public void Deserializing_ItemListJsonLd_ReturnsItemList()
188187
"}" +
189188
"]" +
190189
"}";
191-
var itemList = JsonConvert.DeserializeObject<ItemList>(json, TestDefaults.DefaultJsonSerializerSettings)!;
190+
var itemList = SchemaSerializer.DeserializeObject<ItemList>(json)!;
192191

193192
Assert.Equal("ItemList", itemList.Type);
194193
Assert.True(itemList.ItemListElement.HasValue);

Tests/Schema.NET.Test/core/JobPostingTest.cs renamed to Tests/Schema.NET.Test/Examples/JobPostingTest.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
namespace Schema.NET.Test
1+
namespace Schema.NET.Test.Examples
22
{
33
using System;
4-
using Newtonsoft.Json;
54
using Xunit;
65

76
// https://developers.google.com/search/docs/data-types/job-postings
@@ -94,8 +93,8 @@ public void ToString_JobPostingGoogleStructuredData_ReturnsExpectedJsonLd() =>
9493
[Fact]
9594
public void Deserializing_JobPostingJsonLd_ReturnsJobPosting()
9695
{
97-
Assert.Equal(this.jobPosting.ToString(), JsonConvert.DeserializeObject<JobPosting>(this.json, TestDefaults.DefaultJsonSerializerSettings)!.ToString());
98-
Assert.Equal(JsonConvert.SerializeObject(this.jobPosting, TestDefaults.DefaultJsonSerializerSettings), JsonConvert.SerializeObject(JsonConvert.DeserializeObject<JobPosting>(this.json, TestDefaults.DefaultJsonSerializerSettings), TestDefaults.DefaultJsonSerializerSettings));
96+
Assert.Equal(this.jobPosting.ToString(), SchemaSerializer.DeserializeObject<JobPosting>(this.json)!.ToString());
97+
Assert.Equal(SchemaSerializer.SerializeObject(this.jobPosting), SchemaSerializer.SerializeObject(SchemaSerializer.DeserializeObject<JobPosting>(this.json)!));
9998
}
10099
}
101100
}

0 commit comments

Comments
 (0)