You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
using System.Text.Json; |
|
using Bit.Core.Utilities; |
|
using Xunit; |
|
|
|
namespace Bit.Core.Test.Helpers; |
|
|
|
public class JsonHelpersTests |
|
{ |
|
private static void CompareJson<T>(T value, JsonSerializerOptions options, Newtonsoft.Json.JsonSerializerSettings settings) |
|
{ |
|
var stgJson = JsonSerializer.Serialize(value, options); |
|
var nsJson = Newtonsoft.Json.JsonConvert.SerializeObject(value, settings); |
|
|
|
Assert.Equal(stgJson, nsJson); |
|
} |
|
|
|
|
|
[Fact] |
|
public void DefaultJsonOptions() |
|
{ |
|
var testObject = new SimpleTestObject |
|
{ |
|
Id = 0, |
|
Name = "Test", |
|
}; |
|
|
|
CompareJson(testObject, JsonHelpers.Default, new Newtonsoft.Json.JsonSerializerSettings()); |
|
} |
|
|
|
[Fact] |
|
public void IndentedJsonOptions() |
|
{ |
|
var testObject = new SimpleTestObject |
|
{ |
|
Id = 10, |
|
Name = "Test Name" |
|
}; |
|
|
|
CompareJson(testObject, JsonHelpers.Indented, new Newtonsoft.Json.JsonSerializerSettings |
|
{ |
|
Formatting = Newtonsoft.Json.Formatting.Indented, |
|
}); |
|
} |
|
|
|
[Fact] |
|
public void NullValueHandlingJsonOptions() |
|
{ |
|
var testObject = new SimpleTestObject |
|
{ |
|
Id = 14, |
|
Name = null, |
|
}; |
|
|
|
CompareJson(testObject, JsonHelpers.IgnoreWritingNull, new Newtonsoft.Json.JsonSerializerSettings |
|
{ |
|
NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, |
|
}); |
|
} |
|
} |
|
|
|
public class SimpleTestObject |
|
{ |
|
public int Id { get; set; } |
|
public string Name { get; set; } |
|
}
|
|
|