Skip to content

Commit 053b2f0

Browse files
committed
Added DateTimeConverte tests for verifying default time, local time and utc time conversion.
1 parent a590ff2 commit 053b2f0

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed

tests/CommunityToolkit.Datasync.Client.Test/Serialization/DateTimeConverter_Tests.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,52 @@ public void Converter_HandlesNullDateInInput(string culture)
7575
});
7676
}
7777

78+
[Theory]
79+
[MemberData(nameof(Locales))]
80+
public void Converter_Roundtrip_Consistent_Default(string culture)
81+
{
82+
DateTime value = default;
83+
84+
TestWithCulture(culture, () =>
85+
{
86+
Entity entity = new() { UpdatedAt = value };
87+
string serialized = JsonSerializer.Serialize(entity, SerializerOptions);
88+
Entity deserialized = JsonSerializer.Deserialize<Entity>(serialized, SerializerOptions);
89+
Assert.Equal(deserialized.UpdatedAt, value);
90+
});
91+
}
92+
93+
[Theory]
94+
[MemberData(nameof(Locales))]
95+
public void Converter_Roundtrip_Consistent_Local(string culture)
96+
{
97+
DateTime value = new(2021, 8, 21, 12, 30, 15, 123, DateTimeKind.Local);
98+
99+
TestWithCulture(culture, () =>
100+
{
101+
Entity entity = new() { UpdatedAt = value };
102+
string serialized = JsonSerializer.Serialize(entity, SerializerOptions);
103+
Entity deserialized = JsonSerializer.Deserialize<Entity>(serialized, SerializerOptions);
104+
Assert.Equal(deserialized.UpdatedAt, value);
105+
});
106+
}
107+
108+
[Theory]
109+
[MemberData(nameof(Locales))]
110+
public void Converter_Roundtrip_Consistent_Utc(string culture)
111+
{
112+
DateTime value = new(2021, 8, 21, 14, 35, 20, 12, DateTimeKind.Utc);
113+
114+
TestWithCulture(culture, () =>
115+
{
116+
Entity entity = new() { UpdatedAt = value };
117+
string serialized = JsonSerializer.Serialize(entity, SerializerOptions);
118+
Entity deserialized = JsonSerializer.Deserialize<Entity>(serialized, SerializerOptions);
119+
// Roundtrip will convert to local time, DateTimeKind is not preserved.
120+
Assert.Equal(deserialized.UpdatedAt, value.ToLocalTime());
121+
});
122+
}
123+
78124
#region Models
79125
public class Entity
80126
{

tests/CommunityToolkit.Datasync.Server.Abstractions.Test/Json/DateTimeConverter_Tests.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,52 @@ public void Converter_ThrowsOnNullDateInInput()
6969
act.Should().Throw<FormatException>();
7070
}
7171

72+
[Theory]
73+
[MemberData(nameof(Locales))]
74+
public void Converter_Roundtrip_Consistent_Default(string culture)
75+
{
76+
DateTime value = default;
77+
78+
TestWithCulture(culture, () =>
79+
{
80+
Entity entity = new() { UpdatedAt = value };
81+
string serialized = JsonSerializer.Serialize(entity, SerializerOptions);
82+
Entity deserialized = JsonSerializer.Deserialize<Entity>(serialized, SerializerOptions);
83+
Assert.Equal(deserialized.UpdatedAt, value);
84+
});
85+
}
86+
87+
[Theory]
88+
[MemberData(nameof(Locales))]
89+
public void Converter_Roundtrip_Consistent_Local(string culture)
90+
{
91+
DateTime value = new(2021, 8, 21, 12, 30, 15, 123, DateTimeKind.Local);
92+
93+
TestWithCulture(culture, () =>
94+
{
95+
Entity entity = new() { UpdatedAt = value };
96+
string serialized = JsonSerializer.Serialize(entity, SerializerOptions);
97+
Entity deserialized = JsonSerializer.Deserialize<Entity>(serialized, SerializerOptions);
98+
Assert.Equal(deserialized.UpdatedAt, value);
99+
});
100+
}
101+
102+
[Theory]
103+
[MemberData(nameof(Locales))]
104+
public void Converter_Roundtrip_Consistent_Utc(string culture)
105+
{
106+
DateTime value = new(2021, 8, 21, 14, 35, 20, 12, DateTimeKind.Utc);
107+
108+
TestWithCulture(culture, () =>
109+
{
110+
Entity entity = new() { UpdatedAt = value };
111+
string serialized = JsonSerializer.Serialize(entity, SerializerOptions);
112+
Entity deserialized = JsonSerializer.Deserialize<Entity>(serialized, SerializerOptions);
113+
// Roundtrip will convert to local time, DateTimeKind is not preserved.
114+
Assert.Equal(deserialized.UpdatedAt, value.ToLocalTime());
115+
});
116+
}
117+
72118
#region Models
73119
public class Entity
74120
{

0 commit comments

Comments
 (0)