Skip to content

Commit 8b58251

Browse files
committed
Unit tests for rendering UtcTimestamp/Timestamp switched from Fact to Theory to improve maintainability
For better maintainability the multi-line strings with several tokens and formats of Fact unit tests are replaced by Theory with InlineData for better maintainability/readability. Relates to #164
1 parent 88762fc commit 8b58251

File tree

1 file changed

+14
-28
lines changed

1 file changed

+14
-28
lines changed

test/Serilog.Sinks.Console.Tests/Output/OutputTemplateRendererTests.cs

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -401,49 +401,35 @@ public void TraceAndSpanAreIncludedWhenPresent()
401401
Assert.Equal($"{traceId}/{spanId}", sw.ToString());
402402
}
403403

404-
[Fact]
405-
public void TimestampTokenRendersLocalTime()
404+
[Theory]
405+
[InlineData("{Timestamp}", "09/03/2024 14:15:16 +02:00")] // Default Format
406+
[InlineData("{Timestamp:o}", "2024-09-03T14:15:16.0790000+02:00")] // Round-trip Standard Format String
407+
[InlineData("{Timestamp:yyyy-MM-dd HH:mm:ss}", "2024-09-03 14:15:16")] // Custom Format String
408+
public void TimestampTokenRendersLocalTime(string actualToken, string expectedOutput)
406409
{
407410
var logTimestampWithTimeZoneOffset = DateTimeOffset.Parse("2024-09-03T14:15:16.079+02:00", CultureInfo.InvariantCulture);
408-
var formatter = new OutputTemplateRenderer(ConsoleTheme.None,
409-
"""
410-
Default Format: {Timestamp}
411-
Round-trip Standard Format String: {Timestamp:o}
412-
Custom Format String: {Timestamp:yyyy-MM-dd HH:mm:ss}
413-
""",
414-
CultureInfo.InvariantCulture);
411+
var formatter = new OutputTemplateRenderer(ConsoleTheme.None, actualToken, CultureInfo.InvariantCulture);
415412
var evt = new LogEvent(logTimestampWithTimeZoneOffset, LogEventLevel.Debug, null,
416413
new MessageTemplate(Enumerable.Empty<MessageTemplateToken>()), Enumerable.Empty<LogEventProperty>());
417414
var sw = new StringWriter();
418415
formatter.Format(evt, sw);
419416
// expect time in local time, unchanged from the input, the +02:00 offset should not affect the output
420-
Assert.Equal("""
421-
Default Format: 09/03/2024 14:15:16 +02:00
422-
Round-trip Standard Format String: 2024-09-03T14:15:16.0790000+02:00
423-
Custom Format String: 2024-09-03 14:15:16
424-
""", sw.ToString());
417+
Assert.Equal(expectedOutput, sw.ToString());
425418
}
426419

427-
[Fact]
428-
public void UtcTimestampTokenRendersUtcTime()
420+
[Theory]
421+
[InlineData("{UtcTimestamp}", "09/03/2024 12:15:16")] // Default Format
422+
[InlineData("{UtcTimestamp:o}", "2024-09-03T12:15:16.0790000Z")] // Round-trip Standard Format String
423+
[InlineData("{UtcTimestamp:yyyy-MM-dd HH:mm:ss}", "2024-09-03 12:15:16")] // Custom Format String
424+
public void UtcTimestampTokenRendersUtcTime(string actualToken, string expectedOutput)
429425
{
430426
var logTimestampWithTimeZoneOffset = DateTimeOffset.Parse("2024-09-03T14:15:16.079+02:00", CultureInfo.InvariantCulture);
431-
var formatter = new OutputTemplateRenderer(ConsoleTheme.None,
432-
"""
433-
Default Format: {UtcTimestamp}
434-
Round-trip Standard Format String: {UtcTimestamp:o}
435-
Custom Format String: {UtcTimestamp:yyyy-MM-dd HH:mm:ss}
436-
""",
437-
CultureInfo.InvariantCulture);
427+
var formatter = new OutputTemplateRenderer(ConsoleTheme.None, actualToken, CultureInfo.InvariantCulture);
438428
var evt = new LogEvent(logTimestampWithTimeZoneOffset, LogEventLevel.Debug, null,
439429
new MessageTemplate(Enumerable.Empty<MessageTemplateToken>()), Enumerable.Empty<LogEventProperty>());
440430
var sw = new StringWriter();
441431
formatter.Format(evt, sw);
442432
// expect time in UTC, the +02:00 offset must be applied to adjust the hour
443-
Assert.Equal("""
444-
Default Format: 09/03/2024 12:15:16
445-
Round-trip Standard Format String: 2024-09-03T12:15:16.0790000Z
446-
Custom Format String: 2024-09-03 12:15:16
447-
""", sw.ToString());
433+
Assert.Equal(expectedOutput, sw.ToString());
448434
}
449435
}

0 commit comments

Comments
 (0)