Skip to content

Commit 71c73f8

Browse files
committed
Added GetJsonAsync tests with NewtonsoftJson
1 parent 812c344 commit 71c73f8

File tree

14 files changed

+134
-66
lines changed

14 files changed

+134
-66
lines changed

RestSharp.sln.DotSettings

+1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
<s:Boolean x:Key="/Default/UserDictionary/Words/=advisor/@EntryIndexedValue">True</s:Boolean>
8181
<s:Boolean x:Key="/Default/UserDictionary/Words/=Advisors/@EntryIndexedValue">True</s:Boolean>
8282
<s:Boolean x:Key="/Default/UserDictionary/Words/=appsettings/@EntryIndexedValue">True</s:Boolean>
83+
<s:Boolean x:Key="/Default/UserDictionary/Words/=Deserilization/@EntryIndexedValue">True</s:Boolean>
8384
<s:Boolean x:Key="/Default/UserDictionary/Words/=formattable/@EntryIndexedValue">True</s:Boolean>
8485
<s:Boolean x:Key="/Default/UserDictionary/Words/=instagram/@EntryIndexedValue">True</s:Boolean>
8586
<s:Boolean x:Key="/Default/UserDictionary/Words/=Migrator/@EntryIndexedValue">True</s:Boolean>

src/RestSharp/RestSharp.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@
3737
</Compile>
3838
</ItemGroup>
3939
<ItemGroup>
40-
<ProjectReference Include="..\..\gen\SourceGenerator\SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
40+
<ProjectReference Include="$(RepoRoot)\gen\SourceGenerator\SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
4141
</ItemGroup>
4242
</Project>

test/Directory.Build.props

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<IsPackable>false</IsPackable>
66
<TargetFrameworks>net472;net6.0;net7.0</TargetFrameworks>
77
<Nullable>disable</Nullable>
8+
<NoWarn>xUnit1033</NoWarn>
89
</PropertyGroup>
910

1011
<ItemGroup Condition="$(IsTestProject) == 'true'">

test/RestSharp.InteractiveTests/RestSharp.InteractiveTests.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
<PropertyGroup>
33
<OutputType>Exe</OutputType>
44
<IsTestProject>false</IsTestProject>
5-
<TargetFrameworks>net6</TargetFrameworks>
5+
<TargetFramework>net6</TargetFramework>
66
</PropertyGroup>
77
<ItemGroup>
8-
<ProjectReference Include="..\..\src\RestSharp\RestSharp.csproj" />
8+
<ProjectReference Include="$(RepoRoot)\src\RestSharp\RestSharp.csproj" />
99
<ProjectReference Include="..\RestSharp.Tests.Shared\RestSharp.Tests.Shared.csproj" />
1010
</ItemGroup>
1111
</Project>

test/RestSharp.Tests.Integrated/JsonBodyTests.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
namespace RestSharp.Tests.Integrated;
66

7-
public class JsonBodyTests : IClassFixture<RequestBodyFixture> {
7+
#pragma warning disable xUnit1033
8+
public sealed class JsonBodyTests : IClassFixture<RequestBodyFixture> {
89
readonly SimpleServer _server;
910
readonly ITestOutputHelper _output;
1011
readonly RestClient _client;

test/RestSharp.Tests.Integrated/RestSharp.Tests.Integrated.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<TargetFrameworks>net6.0;net7.0</TargetFrameworks>
55
</PropertyGroup>
66
<ItemGroup>
7-
<ProjectReference Include="..\..\src\RestSharp.Serializers.Xml\RestSharp.Serializers.Xml.csproj" />
8-
<ProjectReference Include="..\..\src\RestSharp\RestSharp.csproj" />
7+
<ProjectReference Include="$(RepoRoot)\src\RestSharp.Serializers.Xml\RestSharp.Serializers.Xml.csproj" />
8+
<ProjectReference Include="$(RepoRoot)\src\RestSharp\RestSharp.csproj" />
99
<ProjectReference Include="..\RestSharp.Tests.Shared\RestSharp.Tests.Shared.csproj" />
1010
</ItemGroup>
1111
<ItemGroup>
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2-
3-
<ItemGroup>
4-
<ProjectReference Include="..\..\src\RestSharp.Serializers.CsvHelper\RestSharp.Serializers.CsvHelper.csproj" />
5-
<ProjectReference Include="..\RestSharp.Tests.Shared\RestSharp.Tests.Shared.csproj" />
6-
</ItemGroup>
7-
2+
<ItemGroup>
3+
<ProjectReference Include="$(RepoRoot)\src\RestSharp.Serializers.CsvHelper\RestSharp.Serializers.CsvHelper.csproj"/>
4+
<ProjectReference Include="..\RestSharp.Tests.Shared\RestSharp.Tests.Shared.csproj"/>
5+
</ItemGroup>
86
</Project>

test/RestSharp.Tests.Serializers.Json/NewtonsoftJsonTests.cs test/RestSharp.Tests.Serializers.Json/NewtonsoftJson/IntegratedSimpleTests.cs

+3-48
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,17 @@
11
using System.Net;
22
using System.Text;
3-
using Newtonsoft.Json;
4-
using Newtonsoft.Json.Serialization;
53
using RestSharp.Serializers.NewtonsoftJson;
64
using RestSharp.Tests.Shared.Extensions;
75
using RestSharp.Tests.Shared.Fixtures;
86

9-
namespace RestSharp.Tests.Serializers.Json;
10-
11-
public class NewtonsoftJsonTests {
12-
static readonly Fixture Fixture = new();
7+
namespace RestSharp.Tests.Serializers.Json.NewtonsoftJson;
138

9+
public class IntegratedSimpleTests {
1410
string _body;
1511

16-
readonly JsonSerializerSettings _jsonSerializerSettings = new() {
17-
ContractResolver = new DefaultContractResolver {
18-
NamingStrategy = new CamelCaseNamingStrategy()
19-
},
20-
Formatting = Formatting.None
21-
};
22-
2312
void CaptureBody(HttpListenerRequest request, HttpListenerResponse response) => _body = request.InputStream.StreamToString();
2413

25-
[Fact]
26-
public void Serialize_multiple_objects_within_one_thread() {
27-
var serializer = new JsonNetSerializer();
28-
var dummy1 = Fixture.Create<TestClass>();
29-
var dummy2 = Fixture.Create<TestClass>();
30-
var dummy3 = Fixture.Create<TestClass>();
31-
var expectedSerialization1 = JsonConvert.SerializeObject(dummy1, _jsonSerializerSettings);
32-
var expectedSerialization2 = JsonConvert.SerializeObject(dummy2, _jsonSerializerSettings);
33-
var expectedSerialization3 = JsonConvert.SerializeObject(dummy3, _jsonSerializerSettings);
34-
35-
var actualSerialization1 = serializer.Serialize(dummy1);
36-
var actualSerialization2 = serializer.Serialize(dummy2);
37-
var actualSerialization3 = serializer.Serialize(dummy3);
38-
39-
actualSerialization1.Should().Be(expectedSerialization1);
40-
actualSerialization2.Should().Be(expectedSerialization2);
41-
actualSerialization3.Should().Be(expectedSerialization3);
42-
}
43-
44-
[Fact]
45-
public void Serialize_within_multiple_threads() {
46-
var serializer = new JsonNetSerializer();
47-
48-
Parallel.For(
49-
0,
50-
100,
51-
_ => {
52-
var dummy = Fixture.Create<TestClass>();
53-
var expectedSerialization = JsonConvert.SerializeObject(dummy, _jsonSerializerSettings);
54-
var actualSerialization = serializer.Serialize(dummy);
55-
56-
actualSerialization.Should().Be(expectedSerialization);
57-
}
58-
);
59-
}
14+
static readonly Fixture Fixture = new();
6015

6116
[Fact]
6217
public async Task Use_JsonNet_For_Requests() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using Newtonsoft.Json;
2+
using Newtonsoft.Json.Serialization;
3+
using RestMockCore;
4+
using RestSharp.Serializers.NewtonsoftJson;
5+
6+
namespace RestSharp.Tests.Serializers.Json.NewtonsoftJson;
7+
8+
public class IntegratedTests {
9+
static readonly Fixture Fixture = new();
10+
11+
const int Port = 5001;
12+
13+
[Fact]
14+
public async Task Use_with_GetJsonAsync() {
15+
var data = Fixture.Create<TestClass>();
16+
var serialized = JsonConvert.SerializeObject(data, JsonNetSerializer.DefaultSettings);
17+
18+
using var server = new HttpServer(Port);
19+
server.Config.Get("/test").Send(serialized);
20+
server.Run();
21+
22+
using var client = new RestClient($"http://localhost:{Port}", configureSerialization: cfg => cfg.UseNewtonsoftJson());
23+
24+
var response = await client.GetJsonAsync<TestClass>("/test");
25+
26+
response.Should().BeEquivalentTo(data);
27+
}
28+
29+
[Fact]
30+
public async Task Use_with_GetJsonAsync_custom_settings() {
31+
var settings = new JsonSerializerSettings {
32+
ContractResolver = new DefaultContractResolver { NamingStrategy = new SnakeCaseNamingStrategy() }
33+
};
34+
var data = Fixture.Create<TestClass>();
35+
var serialized = JsonConvert.SerializeObject(data, settings);
36+
37+
using var server = new HttpServer(Port);
38+
server.Config.Get("/test").Send(serialized);
39+
server.Run();
40+
41+
using var client = new RestClient($"http://localhost:{Port}", configureSerialization: cfg => cfg.UseNewtonsoftJson(settings));
42+
43+
var response = await client.GetJsonAsync<TestClass>("/test");
44+
45+
response.Should().BeEquivalentTo(data);
46+
}
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using Newtonsoft.Json;
2+
using Newtonsoft.Json.Serialization;
3+
using RestSharp.Serializers.NewtonsoftJson;
4+
5+
namespace RestSharp.Tests.Serializers.Json.NewtonsoftJson;
6+
7+
public class SerializationTests {
8+
static readonly Fixture Fixture = new();
9+
10+
readonly JsonSerializerSettings _jsonSerializerSettings = new() {
11+
ContractResolver = new DefaultContractResolver {
12+
NamingStrategy = new CamelCaseNamingStrategy()
13+
},
14+
Formatting = Formatting.None
15+
};
16+
17+
[Fact]
18+
public void Serialize_multiple_objects_within_one_thread() {
19+
var serializer = new JsonNetSerializer();
20+
var dummy1 = Fixture.Create<TestClass>();
21+
var dummy2 = Fixture.Create<TestClass>();
22+
var dummy3 = Fixture.Create<TestClass>();
23+
24+
var expectedSerialization1 = JsonConvert.SerializeObject(dummy1, _jsonSerializerSettings);
25+
var expectedSerialization2 = JsonConvert.SerializeObject(dummy2, _jsonSerializerSettings);
26+
var expectedSerialization3 = JsonConvert.SerializeObject(dummy3, _jsonSerializerSettings);
27+
28+
var actualSerialization1 = serializer.Serialize(dummy1);
29+
var actualSerialization2 = serializer.Serialize(dummy2);
30+
var actualSerialization3 = serializer.Serialize(dummy3);
31+
32+
actualSerialization1.Should().Be(expectedSerialization1);
33+
actualSerialization2.Should().Be(expectedSerialization2);
34+
actualSerialization3.Should().Be(expectedSerialization3);
35+
}
36+
37+
[Fact]
38+
public void Serialize_within_multiple_threads() {
39+
var serializer = new JsonNetSerializer();
40+
41+
Parallel.For(
42+
0,
43+
100,
44+
_ => {
45+
var dummy = Fixture.Create<TestClass>();
46+
var expectedSerialization = JsonConvert.SerializeObject(dummy, _jsonSerializerSettings);
47+
var actualSerialization = serializer.Serialize(dummy);
48+
49+
actualSerialization.Should().Be(expectedSerialization);
50+
}
51+
);
52+
}
53+
54+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<ItemGroup>
3-
<ProjectReference Include="..\..\src\RestSharp.Serializers.NewtonsoftJson\RestSharp.Serializers.NewtonsoftJson.csproj" />
4-
<ProjectReference Include="..\..\src\RestSharp\RestSharp.csproj" />
3+
<ProjectReference Include="$(RepoRoot)\src\RestSharp.Serializers.NewtonsoftJson\RestSharp.Serializers.NewtonsoftJson.csproj" />
4+
<ProjectReference Include="$(RepoRoot)\src\RestSharp\RestSharp.csproj" />
55
<ProjectReference Include="..\RestSharp.Tests.Shared\RestSharp.Tests.Shared.csproj" />
66
</ItemGroup>
7+
<ItemGroup>
8+
<Compile Remove="NewtonsoftJson\IntegratedTests.cs" />
9+
</ItemGroup>
10+
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
11+
<PackageReference Include="rest-mock-core" Version="0.7.12" />
12+
<Compile Include="NewtonsoftJson\IntegratedTests.cs" />
13+
</ItemGroup>
14+
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
15+
<PackageReference Include="rest-mock-core" Version="0.7.12" />
16+
<Compile Include="NewtonsoftJson\IntegratedTests.cs" />
17+
</ItemGroup>
718
</Project>

test/RestSharp.Tests.Serializers.Json/SystemTextJsonTests.cs test/RestSharp.Tests.Serializers.Json/SystemTextJson/SystemTextJsonTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using RestSharp.Tests.Shared.Extensions;
55
using RestSharp.Tests.Shared.Fixtures;
66

7-
namespace RestSharp.Tests.Serializers.Json;
7+
namespace RestSharp.Tests.Serializers.Json.SystemTextJson;
88

99
public class SystemTextJsonTests {
1010
static readonly Fixture Fixture = new();

test/RestSharp.Tests.Serializers.Xml/RestSharp.Tests.Serializers.Xml.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<Nullable>disable</Nullable>
44
</PropertyGroup>
55
<ItemGroup>
6-
<ProjectReference Include="..\..\src\RestSharp.Serializers.Xml\RestSharp.Serializers.Xml.csproj" />
7-
<ProjectReference Include="..\..\src\RestSharp\RestSharp.csproj" />
6+
<ProjectReference Include="$(RepoRoot)\src\RestSharp.Serializers.Xml\RestSharp.Serializers.Xml.csproj" />
7+
<ProjectReference Include="$(RepoRoot)\src\RestSharp\RestSharp.csproj" />
88
</ItemGroup>
99
<ItemGroup>
1010
<None Update="SampleData\boolean_from_number.xml" CopyToOutputDirectory="PreserveNewest" />

test/RestSharp.Tests/RestSharp.Tests.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<PackageReference Include="System.Net.Http.Json" Version="7.0.1" />
66
</ItemGroup>
77
<ItemGroup>
8-
<ProjectReference Include="..\..\src\RestSharp\RestSharp.csproj" />
8+
<ProjectReference Include="$(RepoRoot)\src\RestSharp\RestSharp.csproj" />
99
</ItemGroup>
1010
<ItemGroup>
1111
<None Update="SampleData\4sq.json" CopyToOutputDirectory="PreserveNewest" />

0 commit comments

Comments
 (0)