Skip to content

Commit eebcf1d

Browse files
author
Kadluba Christian
committed
Added unit tests.
1 parent 2f51d54 commit eebcf1d

File tree

2 files changed

+49
-3
lines changed

2 files changed

+49
-3
lines changed

test/Serilog.Sinks.MSSqlServer.Tests/Serilog.Sinks.MSSqlServer.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<PackageReference Include="Dapper.StrongName" Version="1.50.5" />
3131
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0" />
3232
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
33+
<PackageReference Include="Moq" Version="4.13.1" />
3334
<PackageReference Include="System.Diagnostics.Debug" Version="4.3.0" />
3435
</ItemGroup>
3536

test/Serilog.Sinks.MSSqlServer.Tests/Sinks/MSSqlServer/TestMSSqlServerSinkTraits.cs

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
using Serilog.Events;
1+
using Moq;
2+
using Serilog.Events;
3+
using Serilog.Formatting;
24
using Serilog.Parsing;
35
using System;
46
using System.Collections.Generic;
57
using System.Data;
68
using System.Globalization;
9+
using System.IO;
710
using System.Linq;
811
using Xunit;
912

@@ -99,10 +102,52 @@ public void GetColumnsAndValuesCreatesUtcConvertedTimeStampOfTypeDateTimeOffsetA
99102
Assert.Equal(new TimeSpan(0), timeStampColumnOffset.Offset);
100103
}
101104

102-
private void SetupTest(Serilog.Sinks.MSSqlServer.ColumnOptions options, DateTimeOffset testDateTimeOffset)
105+
[Fact]
106+
public void GetColumnsAndValuesWhenCalledWithCustomFormatterRendersLogEventPropertyUsingCustomFormatter()
107+
{
108+
// arrange
109+
const string testLogEventContent = "Content of LogEvent";
110+
var options = new Serilog.Sinks.MSSqlServer.ColumnOptions();
111+
options.Store.Add(StandardColumn.LogEvent);
112+
var logEventFormatterMock = new Mock<ITextFormatter>();
113+
logEventFormatterMock.Setup(f => f.Format(It.IsAny<LogEvent>(), It.IsAny<TextWriter>()))
114+
.Callback<LogEvent, TextWriter>((e, w) => w.Write(testLogEventContent));
115+
SetupTest(options, DateTimeOffset.UtcNow, logEventFormatterMock.Object);
116+
117+
// act
118+
var columns = traits.GetColumnsAndValues(logEvent);
119+
120+
// assert
121+
var logEventColumn = columns.Single(c => c.Key == options.LogEvent.ColumnName);
122+
Assert.Equal(testLogEventContent, logEventColumn.Value);
123+
}
124+
125+
[Fact]
126+
public void GetColumnsAndValuesWhenCalledWithoutFormatterRendersLogEventPropertyUsingInternalJsonFormatter()
127+
{
128+
// arrange
129+
const string expectedLogEventContent =
130+
"{\"TimeStamp\":\"2020-01-01T09:00:00.0000000\",\"Level\":\"Information\",\"Message\":\"\",\"MessageTemplate\":\"\"}";
131+
var options = new Serilog.Sinks.MSSqlServer.ColumnOptions();
132+
options.Store.Add(StandardColumn.LogEvent);
133+
var testDateTimeOffset = new DateTimeOffset(2020, 1, 1, 9, 0, 0, TimeSpan.Zero);
134+
SetupTest(options, testDateTimeOffset, null);
135+
136+
// act
137+
var columns = traits.GetColumnsAndValues(logEvent);
138+
139+
// assert
140+
var logEventColumn = columns.Single(c => c.Key == options.LogEvent.ColumnName);
141+
Assert.Equal(expectedLogEventContent, logEventColumn.Value);
142+
}
143+
144+
private void SetupTest(
145+
Serilog.Sinks.MSSqlServer.ColumnOptions options,
146+
DateTimeOffset testDateTimeOffset,
147+
ITextFormatter logEventFormatter = null)
103148
{
104149
this.traits = new MSSqlServerSinkTraits("connectionString", "tableName", "schemaName",
105-
options, CultureInfo.InvariantCulture, false, null);
150+
options, CultureInfo.InvariantCulture, false, logEventFormatter);
106151
this.logEvent = new LogEvent(testDateTimeOffset, LogEventLevel.Information, null,
107152
new MessageTemplate(new List<MessageTemplateToken>()), new List<LogEventProperty>());
108153
}

0 commit comments

Comments
 (0)