Skip to content

Commit

Permalink
wip - removing Newtonsoft, adding Macross.Json.Extensions to serializ…
Browse files Browse the repository at this point in the history
…e custom-named enums
  • Loading branch information
jpill committed May 29, 2024
1 parent ad9fc21 commit 59b8e42
Show file tree
Hide file tree
Showing 49 changed files with 205 additions and 193 deletions.
8 changes: 5 additions & 3 deletions ShipEngine.Tests/ConfigTest.cs
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
using Moq;
using Newtonsoft.Json;
using ShipEngineSDK;
using ShipEngineSDK.VoidLabelWithLabelId;
using System;
using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
using Xunit;

namespace ShipEngineTest
{

public class ConfigTest
{
public TestUtils TestUtils;
Expand All @@ -30,7 +31,8 @@ public async Task ValidateDefaultTimeoutTest()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/VoidLabelWithLabelId200Response.json"));

var voidLabelResult = JsonConvert.DeserializeObject<Result>(json, TestUtils.JsonSerializerSettings);
var voidLabelResult = System.Text.Json.JsonSerializer.Deserialize<Result>(json, TestUtils.JsonSerializerOptions);

var request = new HttpRequestMessage(HttpMethod.Put, $"v1/labels/se-1234/void");


Expand Down Expand Up @@ -66,7 +68,7 @@ public async Task ValidateCustomTimeout()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/VoidLabelWithLabelId200Response.json"));

var voidLabelResult = JsonConvert.DeserializeObject<Result>(json, TestUtils.JsonSerializerSettings);
var voidLabelResult = JsonSerializer.Deserialize<Result>(json, TestUtils.JsonSerializerOptions);
var request = new HttpRequestMessage(HttpMethod.Put, $"v1/labels/se-1234/void");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
15 changes: 6 additions & 9 deletions ShipEngine.Tests/Helpers/MockShipEngineFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ namespace ShipEngineTest
{
using Moq;
using Moq.Protected;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using ShipEngineSDK;
using System.Net;
using System.Net.Http;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading;
using System.Threading.Tasks;

Expand All @@ -25,13 +25,10 @@ public MockShipEngineFixture(Config config)
_client = ShipEngineClient.ConfigureHttpClient(config, HttpClient)
};

JsonSerializerSettings = new JsonSerializerSettings()
JsonSerializerOptions = new JsonSerializerOptions()
{
NullValueHandling = NullValueHandling.Include,
ContractResolver = new DefaultContractResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
}
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
};
}

Expand All @@ -41,7 +38,7 @@ public MockShipEngineFixture(Config config)

public ShipEngine ShipEngine { get; }

public JsonSerializerSettings JsonSerializerSettings { get; set; }
public JsonSerializerOptions JsonSerializerOptions { get; set; }

/// <summary>
/// Resets the mock's state.
Expand Down
17 changes: 10 additions & 7 deletions ShipEngine.Tests/Helpers/TestUtils.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System.Text.Json;
using System.Text.Json.Serialization;

public class TestUtils
{
public readonly JsonSerializerSettings JsonSerializerSettings;
public readonly JsonSerializerOptions JsonSerializerOptions;

public TestUtils()
{
JsonSerializerSettings = new JsonSerializerSettings()
JsonSerializerOptions = new JsonSerializerOptions()
{
NullValueHandling = NullValueHandling.Include,
ContractResolver = new DefaultContractResolver
DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
PropertyNameCaseInsensitive = true,
WriteIndented = true,
Converters =
{
NamingStrategy = new SnakeCaseNamingStrategy()
new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseLower)
}
};
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using Moq;
using Newtonsoft.Json;
using ShipEngineSDK;
using ShipEngineSDK.Common.Enums;
using ShipEngineSDK.CreateLabelFromRate;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using System.Text.Json;
using Xunit;

namespace ShipEngineTest
Expand Down Expand Up @@ -123,7 +123,7 @@ public async Task ValidateCustomSettingsAtMethodLevel()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/CreateLabelFromRate200Response.json"));

var voidLabelResult = JsonConvert.DeserializeObject<ShipEngineSDK.CreateLabelFromRate.Result>(json);
var voidLabelResult = JsonSerializer.Deserialize<ShipEngineSDK.CreateLabelFromRate.Result>(json);
var request = new HttpRequestMessage(HttpMethod.Post, "v1/labels/rates/se-1234");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
using Moq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Serialization;
using ShipEngineSDK;
using ShipEngineSDK.Common;
using ShipEngineSDK.Common.Enums;
Expand All @@ -10,11 +7,15 @@
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using Xunit;

namespace ShipEngineTest
{

public class CreateLabelFromShipmentDetailsTest
{

Expand Down Expand Up @@ -153,20 +154,22 @@ public async Task ValidCreateLabelFromShipmentDetailsTest()
[Fact]
public void TestParamsSerialization()
{
string labelParamsString = JsonConvert.SerializeObject(LabelParams, new JsonSerializerSettings()
string labelParamsString = JsonSerializer.Serialize(LabelParams, new JsonSerializerOptions()
{
NullValueHandling = NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore,
ContractResolver = new DefaultContractResolver
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault,
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
PropertyNameCaseInsensitive = true,
WriteIndented = true,
Converters =
{
NamingStrategy = new SnakeCaseNamingStrategy()
new JsonStringEnumMemberConverter()
}
});

JObject parsedJson = JObject.Parse(labelParamsString);
var parsedJson = JsonSerializer.Deserialize<JsonObject>(labelParamsString);

Assert.Equal("John Doe", parsedJson["shipment"]["ship_from"]["name"]);
Assert.Equal("delivery_mailed", parsedJson["shipment"]["confirmation"]);
Assert.Equal("John Doe", parsedJson["shipment"]["ship_from"]["name"].ToString());
Assert.Equal("delivery_mailed", parsedJson["shipment"]["confirmation"].ToString());
Assert.Null(parsedJson["label_layout"]);
Assert.Null(parsedJson["label_format"]);
}
Expand All @@ -184,7 +187,7 @@ public async Task ValidateCustomSettingsAtMethodLevel()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/CreateLabelFromShipmentDetails200Response.json"));

var voidLabelResult = JsonConvert.DeserializeObject<Result>(json);
var voidLabelResult = JsonSerializer.Deserialize<Result>(json);
var request = new HttpRequestMessage(HttpMethod.Post, "v1/labels");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using Moq;
using Newtonsoft.Json;
using ShipEngineSDK;
using ShipEngineSDK.Common;
using ShipEngineSDK.Common.Enums;
Expand All @@ -10,6 +9,7 @@
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using System.Text.Json;
using Xunit;

namespace ShipEngineTest
Expand Down Expand Up @@ -209,7 +209,7 @@ public async Task ValidateCustomSettingsAtMethodLevel()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/GetRatesWithShipmentDetails200Response.json"));

var getRatesResults = JsonConvert.DeserializeObject<Result>(json);
var getRatesResults = JsonSerializer.Deserialize<Result>(json);
var request = new HttpRequestMessage(HttpMethod.Post, "v1/rates");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
4 changes: 2 additions & 2 deletions ShipEngine.Tests/ShipEngineMethodTests/ListCarriersTest.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using Moq;
using Newtonsoft.Json;
using ShipEngineSDK;
using ShipEngineSDK.ListCarriers;
using System;
using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
using Xunit;

Expand Down Expand Up @@ -96,7 +96,7 @@ public async Task ValidateCustomSettingsAtMethodLevel()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/ListCarriers200Response.json"));

var listCarriersResult = JsonConvert.DeserializeObject<Result>(json, TestUtils.JsonSerializerSettings);
var listCarriersResult = JsonSerializer.Deserialize<Result>(json, TestUtils.JsonSerializerOptions);
var request = new HttpRequestMessage(HttpMethod.Get, "v1/carriers");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using Moq;
using Moq.Protected;
using Newtonsoft.Json;
using ShipEngineSDK;
using ShipEngineSDK.Common.Enums;
using ShipEngineSDK.TrackUsingCarrierCodeAndTrackingNumber;
using System;
using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Xunit;
Expand Down Expand Up @@ -88,7 +88,7 @@ public async Task ValidateCustomSettingsAtMethodLevel()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/ListCarriers200Response.json"));

var listCarriersResult = JsonConvert.DeserializeObject<Result>(json, TestUtils.JsonSerializerSettings);
var listCarriersResult = JsonSerializer.Deserialize<Result>(json, TestUtils.JsonSerializerOptions);
var request = new HttpRequestMessage(HttpMethod.Get, "v1/carriers");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
using Moq;
using Newtonsoft.Json;
using ShipEngineSDK;
using ShipEngineSDK.Common.Enums;
using ShipEngineSDK.TrackUsingLabelId;
using System;
using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
using Xunit;

Expand Down Expand Up @@ -73,7 +73,7 @@ public async Task ValidateCustomSettingsAtMethodLevel()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/ListCarriers200Response.json"));

var listCarriersResult = JsonConvert.DeserializeObject<Result>(json);
var listCarriersResult = JsonSerializer.Deserialize<Result>(json);
var request = new HttpRequestMessage(HttpMethod.Get, "v1/carriers");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using Moq;
using Newtonsoft.Json;
using ShipEngineSDK;
using ShipEngineSDK.Common;
using ShipEngineSDK.Common.Enums;
Expand All @@ -8,6 +7,7 @@
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
using Xunit;

Expand Down Expand Up @@ -159,7 +159,7 @@ public async Task ValidateCustomSettingsAtMethodLevel()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/ValidateResidentialAddresses200Response.json"));

var listCarriersResult = JsonConvert.DeserializeObject<List<Result>>(json, TestUtils.JsonSerializerSettings);
var listCarriersResult = JsonSerializer.Deserialize<List<Result>>(json, TestUtils.JsonSerializerOptions);
var request = new HttpRequestMessage(HttpMethod.Post, "/v1/addresses/validate");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using Moq;
using Newtonsoft.Json;
using ShipEngineSDK;
using ShipEngineSDK.VoidLabelWithLabelId;
using System;
using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
using Xunit;

Expand Down Expand Up @@ -48,7 +48,7 @@ public async Task ValidateCustomSettingsAtMethodLevel()
var shipEngine = mockHandler.Object;
string json = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../HttpResponseMocks/VoidLabelWithLabelId200Response.json"));

var voidLabelResult = JsonConvert.DeserializeObject<Result>(json, TestUtils.JsonSerializerSettings);
var voidLabelResult = JsonSerializer.Deserialize<Result>(json, TestUtils.JsonSerializerOptions);
var request = new HttpRequestMessage(HttpMethod.Put, "v1/labels/se-1234/void");

// Verify that the client has a custom timeout of 1 second when called.
Expand Down
24 changes: 0 additions & 24 deletions ShipEngine/Converters/ErrorCodeEnumConverter.cs

This file was deleted.

2 changes: 2 additions & 0 deletions ShipEngine/Enums/ErrorCode.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
using System.Runtime.Serialization;
using System.Text.Json.Serialization;

namespace ShipEngineSDK
{
/// <summary>
/// Indicates the specific error that occurred.
/// </summary>
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum ErrorCode
{
/// <summary>
Expand Down
3 changes: 3 additions & 0 deletions ShipEngine/Enums/ErrorType.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
using System.Runtime.Serialization;
using System.Text.Json.Serialization;

namespace ShipEngineSDK
{

/// <summary>
/// The error_type field indicates the type of error that occurred. Think of this as a broad category of error.
/// </summary>
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum ErrorType
{

Expand Down
Loading

0 comments on commit 59b8e42

Please sign in to comment.