From 7ec3160020c1285e8b7893d31cc9741a493dc102 Mon Sep 17 00:00:00 2001 From: Virasak Dungsrikaew Date: Fri, 23 Jun 2023 20:55:50 +0700 Subject: [PATCH] Fix wrong mapping and add tests (#33) * fix datetime format error while deserialize test report * add more date time formats update test --------- Co-authored-by: vdungsrikaew --- .../NUnitTestCaseConverterTests.cs | 6 +++++- src/Agoda.Tests.Metrics.NUnit/TestCase.cs | 20 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Agoda.Tests.Metrics.NUnit.Tests/NUnitTestCaseConverterTests.cs b/src/Agoda.Tests.Metrics.NUnit.Tests/NUnitTestCaseConverterTests.cs index 8f3e43a..0123862 100644 --- a/src/Agoda.Tests.Metrics.NUnit.Tests/NUnitTestCaseConverterTests.cs +++ b/src/Agoda.Tests.Metrics.NUnit.Tests/NUnitTestCaseConverterTests.cs @@ -54,13 +54,17 @@ public void WhenInitTestCaseConverter_ShouldPopulateListOfTestCasesCorrectly() "; var result = new NUnitXmlEventConverter(report); result.TestCases.Count.ShouldBe(4); + for (int i = 1; i <= 4; i++) { result.TestCases[i - 1].Name.ShouldBe($"{i}WhenOneIsOne_ItSHouldBeOne",customMessage:$"Name on {i}"); result.TestCases[i - 1].Id.ShouldBe($"0-100{i}", customMessage: $"Id on {i}"); result.TestCases[i - 1].Fullname.ShouldBe($"Agoda.TestingLib.Tests.UnitTest{(i+1) / 2}.{i}WhenOneIsOne_ItSHouldBeOne", customMessage: $"Fullname on {i}"); result.TestCases[i - 1].Duration.ShouldBe(0.033255, customMessage: $"Duration on {i}"); + result.TestCases[i - 1].Duration.ShouldBe(0.033255, customMessage: $"Duration on {i}"); + + var duration = (result.TestCases[i - 1].EndTime - result.TestCases[i - 1].StartTime).TotalSeconds; + duration.ShouldBe(0.0331569, customMessage: $"Duration on {i}"); } - } } \ No newline at end of file diff --git a/src/Agoda.Tests.Metrics.NUnit/TestCase.cs b/src/Agoda.Tests.Metrics.NUnit/TestCase.cs index a8f4910..fb6f24d 100644 --- a/src/Agoda.Tests.Metrics.NUnit/TestCase.cs +++ b/src/Agoda.Tests.Metrics.NUnit/TestCase.cs @@ -8,6 +8,17 @@ namespace Agoda.Tests.Metrics.NUnit [XmlRoot(ElementName = "test-case")] public class TestCase { + private static readonly string[] Formats = + { + "yyyy-MM-ddTHH:mm:ss.fffffffZ", + "yyyy-MM-dd HH:mm:ss.fffffffZ", + "yyyy-MM-ddTHH:mm:ss.fffffff", + "yyyy-MM-dd HH:mm:ss.fffffff", + "yyyy-MM-ddTHH:mm:ssZ", + "yyyy-MM-dd HH:mm:ssZ", + "yyyy-MM-ddTHH:mm:ss", + "yyyy-MM-dd HH:mm:ss", + }; [XmlAttribute(AttributeName = "id")] public string Id { get; set; } @@ -33,21 +44,24 @@ public class TestCase [XmlAttribute(AttributeName = "result")] public string Result { get; set; } + [XmlIgnore] public DateTime StartTime { get; set; } [XmlAttribute(AttributeName = "start-time")] public string StartTimeRaw { - set => StartTime = DateTime.TryParseExact(value, new[] { "yyyy-MM-dd HH:mm:ssZ", "yyyy-MM-ddTHH:mm:ss"}, CultureInfo.InvariantCulture, DateTimeStyles.None, out var result) ? result : DateTime.MinValue; + get => StartTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff"); + set => StartTime = DateTime.TryParseExact(value, Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out var result) ? result : DateTime.MinValue; } - + [XmlIgnore] public DateTime EndTime { get; set; } [XmlAttribute(AttributeName = "end-time")] public string EndTimeRaw { - set => StartTime = DateTime.TryParseExact(value, new[] { "yyyy-MM-dd HH:mm:ssZ", "yyyy-MM-ddTHH:mm:ss"}, CultureInfo.InvariantCulture, DateTimeStyles.None, out var result) ? result : DateTime.MinValue; + get => EndTime.ToString("yyyy-MM-dd HH:mm:ss.fffffff"); + set => EndTime = DateTime.TryParseExact(value, Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out var result) ? result : DateTime.MinValue; } [XmlAttribute(AttributeName = "duration")]