Skip to content

Commit

Permalink
Cleanup CSharpJsonSerializerGenerator (#1341)
Browse files Browse the repository at this point in the history
* chore: Cleanup CSharpJsonSerializerGenerator

Remove ", " in CSharpJsonSerializerGenerator.GenerateForJsonLibrary
Add CSharpJsonSerializerGenerator.GenerateJsonConvertersArrayCode method
Fix FromJson and ToJson

* Fix FromJson and ToJson generation, add tests
  • Loading branch information
unchase committed Mar 23, 2021
1 parent 2d702f5 commit bc197cb
Show file tree
Hide file tree
Showing 6 changed files with 283 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,21 @@ namespace NJsonSchema.CodeGeneration.CSharp.Tests
public class CSharpJsonSerializerGeneratorTests
{
[Fact]
public void When_using_SytemTextJson_with_JsonConverters_GenerateJsonSerializerParameterCode_generates_correctly()
public void When_using_SytemTextJson_GenerateJsonSerializerParameterCode_generates_correctly()
{
//// Arrange
var additionalJsonConverters = new string[] { "AdditionalConverter1", "AdditionalConverter2" };
var settings = new CSharpGeneratorSettings
{
JsonLibrary = CSharpJsonLibrary.SystemTextJson,
JsonConverters = new string[] { "CustomConverter1", "CustomConverter2" }
JsonLibrary = CSharpJsonLibrary.SystemTextJson
};

//// Act
var output = CSharpJsonSerializerGenerator.GenerateJsonSerializerParameterCode(settings, additionalJsonConverters);
Console.WriteLine(output);

//// Assert
Assert.Equal(", new System.Text.Json.JsonSerializerOptions(); var converters = new System.Text.Json.Serialization.JsonConverter[] { new CustomConverter1(), new CustomConverter2(), new AdditionalConverter1(), new AdditionalConverter2() }", output);
Assert.Equal("new System.Text.Json.JsonSerializerOptions()", output);
}

[Fact]
Expand All @@ -40,7 +39,7 @@ public void When_using_NewtonsoftJson_with_JsonConverters_GenerateJsonSerializer
Console.WriteLine(output);

//// Assert
Assert.Equal(", new Newtonsoft.Json.JsonConverter[] { new CustomConverter1(), new CustomConverter2(), new AdditionalConverter1(), new AdditionalConverter2() }", output);
Assert.Equal("new Newtonsoft.Json.JsonConverter[] { new CustomConverter1(), new CustomConverter2(), new AdditionalConverter1(), new AdditionalConverter2() }", output);
}

[Fact]
Expand All @@ -58,7 +57,7 @@ public void When_using_SytemTextJson_with_JsonSerializerSettingsOrOptionsTransfo
Console.WriteLine(output);

//// Assert
Assert.Equal(", TestJsonSerializerSettingsTransformationMethod(new System.Text.Json.JsonSerializerOptions())", output);
Assert.Equal("TestJsonSerializerSettingsTransformationMethod(new System.Text.Json.JsonSerializerOptions())", output);
}

[Fact]
Expand All @@ -79,7 +78,45 @@ public void When_using_NewtonsoftJson_with_HandleReferences_and_JsonConverters_a
Console.WriteLine(output);

//// Assert
Assert.Equal(", TestJsonSerializerSettingsTransformationMethod(new Newtonsoft.Json.JsonSerializerSettings { PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.All, Converters = new Newtonsoft.Json.JsonConverter[] { new CustomConverter1(), new CustomConverter2(), new AdditionalConverter1(), new AdditionalConverter2() } })", output);
Assert.Equal("TestJsonSerializerSettingsTransformationMethod(new Newtonsoft.Json.JsonSerializerSettings { PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.All, Converters = new Newtonsoft.Json.JsonConverter[] { new CustomConverter1(), new CustomConverter2(), new AdditionalConverter1(), new AdditionalConverter2() } })", output);
}

[Fact]
public void When_using_SytemTextJson_with_JsonConverters_GenerateJsonConvertersArrayCode_generates_correctly()
{
//// Arrange
var additionalJsonConverters = new string[] { "AdditionalConverter1", "AdditionalConverter2" };
var settings = new CSharpGeneratorSettings
{
JsonLibrary = CSharpJsonLibrary.SystemTextJson,
JsonConverters = new string[] { "CustomConverter1", "CustomConverter2" }
};

//// Act
var output = CSharpJsonSerializerGenerator.GenerateJsonConvertersArrayCode(settings, additionalJsonConverters);
Console.WriteLine(output);

//// Assert
Assert.Equal("new System.Text.Json.Serialization.JsonConverter[] { new CustomConverter1(), new CustomConverter2(), new AdditionalConverter1(), new AdditionalConverter2() }", output);
}

[Fact]
public void When_using_NewtonsoftJson_with_JsonConverters_GenerateJsonConvertersArrayCode_generates_correctly()
{
//// Arrange
var additionalJsonConverters = new string[] { "AdditionalConverter1", "AdditionalConverter2" };
var settings = new CSharpGeneratorSettings
{
JsonLibrary = CSharpJsonLibrary.NewtonsoftJson,
JsonConverters = new string[] { "CustomConverter1", "CustomConverter2" }
};

//// Act
var output = CSharpJsonSerializerGenerator.GenerateJsonConvertersArrayCode(settings, additionalJsonConverters);
Console.WriteLine(output);

//// Assert
Assert.Equal("new Newtonsoft.Json.JsonConverter[] { new CustomConverter1(), new CustomConverter2(), new AdditionalConverter1(), new AdditionalConverter2() }", output);
}
}
}
Loading

0 comments on commit bc197cb

Please sign in to comment.