diff --git a/SlackNet.Tests/SerializationTests.cs b/SlackNet.Tests/SerializationTests.cs index 52a0181d..b8fee122 100644 --- a/SlackNet.Tests/SerializationTests.cs +++ b/SlackNet.Tests/SerializationTests.cs @@ -5,6 +5,7 @@ using Newtonsoft.Json; using NUnit.Framework; using SlackNet.Events; +using SlackNet.WebApi; namespace SlackNet.Tests; @@ -209,6 +210,29 @@ public void TimeSpan_DeserializedFromHoursAndMinutes() }); } + [TestCase("2001-02-03")] + [TestCase("2001-02-03T04:05:06")] + [TestCase("2001-02-03T04:05:06Z")] + [TestCase("2001-02-03T04:05:06+07:00")] + public void DateString_DeserializedToStringProperty_Unchanged(string date) + { + var result = Deserialize($@"{{ ""type"": ""message"", ""text"": ""{date}"" }}"); + result.ShouldBeA() + .And.Text.ShouldBe(date); + } + + [TestCase("2001-02-03")] + [TestCase("2001-02-03T04:05:06+07:00")] + public void DateString_InWebApiResponse_Unchanged(string date) + { + var response = Deserialize($@"{{ ""ok"": true, ""messages"": [{{ ""type"": ""message"", ""text"": ""{date}"" }}] }}"); + + var result = response.Data.ToObject(JsonSerializer.Create(_sut)); + + result.Messages.ShouldBeASingular() + .And.Text.ShouldBe(date); + } + private string Serialize(object obj) => JsonConvert.SerializeObject(obj, _sut); private T Deserialize(string json) => JsonConvert.DeserializeObject(json, _sut); diff --git a/SlackNet/Default.cs b/SlackNet/Default.cs index a5b0a79e..a73f433d 100644 --- a/SlackNet/Default.cs +++ b/SlackNet/Default.cs @@ -32,6 +32,7 @@ private static JsonSerializerSettings SerializerSettings(ISlackTypeResolver slac TraceWriter = new SerializationLogger(logger), NullValueHandling = NullValueHandling.Ignore, DateFormatString = "yyyy-MM-dd", + DateParseHandling = DateParseHandling.None, ContractResolver = new SlackNetContractResolver { NamingStrategy = namingStrategy,