Skip to content

Commit 92342bc

Browse files
committed
* Added missing unit tests for MicrosoftExtensionsColumnOptionsProvider.
* Made a minor unification when reading config option excludeStandardColumns.
1 parent 5a6dad9 commit 92342bc

File tree

2 files changed

+90
-4
lines changed

2 files changed

+90
-4
lines changed

src/Serilog.Sinks.MSSqlServer/Configuration/Implementations/Microsoft.Extensions.Configuration/MicrosoftExtensionsColumnOptionsProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ private void ReadStandardColumns(IConfigurationSection config, ColumnOptions col
133133
{
134134
SetCommonColumnOptions(section, columnOptions.LogEvent);
135135
SetProperty.IfNotNull<bool>(section["excludeAdditionalProperties"], (val) => columnOptions.LogEvent.ExcludeAdditionalProperties = val);
136-
SetProperty.IfNotNull<bool>(section["ExcludeStandardColumns"], (val) => columnOptions.LogEvent.ExcludeStandardColumns = val);
136+
SetProperty.IfNotNull<bool>(section["excludeStandardColumns"], (val) => columnOptions.LogEvent.ExcludeStandardColumns = val);
137137
}
138138

139139
section = config.GetSection("message");

test/Serilog.Sinks.MSSqlServer.Tests/Configuration/Implementations/Microsoft.Extensions.Configuration/MicrosoftExtensionsColumnOptionsProviderTests.cs

Lines changed: 89 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using System.Data;
34
using System.Globalization;
45
using Microsoft.Extensions.Configuration;
@@ -133,7 +134,7 @@ public void ConfigureColumnOptionsAddsColumnIdBigIntOption()
133134
{
134135
// Arrange
135136
SetupConfigurationSectionMocks();
136-
var columnSectionMock = SetupColumnSectionMock("id");
137+
var columnSectionMock = SetupColumnSectionMock("id");
137138
columnSectionMock.Setup(s => s["bigInt"]).Returns("true");
138139
var sut = new MicrosoftExtensionsColumnOptionsProvider();
139140

@@ -475,7 +476,7 @@ public void ConfigureColumnOptionsAddsColumnLogEventExcludeStandardColumnsOption
475476
// Arrange
476477
SetupConfigurationSectionMocks();
477478
var columnSectionMock = SetupColumnSectionMock("logEvent");
478-
columnSectionMock.Setup(s => s["ExcludeStandardColumns"]).Returns("true");
479+
columnSectionMock.Setup(s => s["excludeStandardColumns"]).Returns("true");
479480
var sut = new MicrosoftExtensionsColumnOptionsProvider();
480481

481482
// Act
@@ -572,6 +573,91 @@ public void ConfigureColumnOptionsAddsClusteredColumnstoreIndexOption()
572573
Assert.True(result.ClusteredColumnstoreIndex);
573574
}
574575

576+
[Fact]
577+
public void ConfigureColumnOptionsThrowsWhenSettingPrimaryKeyColumnNameAndClusteredColumnstoreIndex()
578+
{
579+
// Arrange
580+
SetupConfigurationSectionMocks();
581+
_configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns("TestPrimaryKeyColumnName");
582+
_configurationSectionMock.Setup(s => s["clusteredColumnstoreIndex"]).Returns("true");
583+
var sut = new MicrosoftExtensionsColumnOptionsProvider();
584+
585+
// Act + assert
586+
Assert.Throws<ArgumentException>(() => sut.ConfigureColumnOptions(new ColumnOptions(), _configurationSectionMock.Object));
587+
}
588+
589+
[Fact]
590+
public void ConfigureColumnOptionsSetsPrimaryKeyWhenSettingPrimaryKeyColumnNameToStandardColumnName()
591+
{
592+
// Arrange
593+
SetupConfigurationSectionMocks();
594+
_configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns("Message");
595+
var sut = new MicrosoftExtensionsColumnOptionsProvider();
596+
597+
// Act
598+
var result = sut.ConfigureColumnOptions(new ColumnOptions(), _configurationSectionMock.Object);
599+
600+
// Assert
601+
Assert.Equal(result.Message, result.PrimaryKey);
602+
}
603+
604+
[Fact]
605+
public void ConfigureColumnOptionsSetsPrimaryKeyWhenSettingPrimaryKeyColumnNameToAdditionalColumn()
606+
{
607+
// Arrange
608+
const string customColumnName = "TestCustomColumn";
609+
var customColumn = new SqlColumn { ColumnName = customColumnName };
610+
var columnOptions = new ColumnOptions
611+
{
612+
PrimaryKey = null,
613+
AdditionalColumns = new List<SqlColumn> { customColumn }
614+
};
615+
SetupConfigurationSectionMocks();
616+
_configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns(customColumnName);
617+
var sut = new MicrosoftExtensionsColumnOptionsProvider();
618+
619+
// Act
620+
var result = sut.ConfigureColumnOptions(columnOptions, _configurationSectionMock.Object);
621+
622+
// Assert
623+
Assert.Equal(customColumn, result.PrimaryKey);
624+
}
625+
626+
[Fact]
627+
public void ConfigureColumnOptionsSetsPrimaryKeyWhenSettingPrimaryKeyColumnNameToAdditionalColumnCaseInsensitive()
628+
{
629+
// Arrange
630+
var customColumn = new SqlColumn { ColumnName = "TestCustomColumn" };
631+
var columnOptions = new ColumnOptions
632+
{
633+
PrimaryKey = null,
634+
AdditionalColumns = new List<SqlColumn> { customColumn }
635+
};
636+
SetupConfigurationSectionMocks();
637+
_configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns("testCustomColumn");
638+
var sut = new MicrosoftExtensionsColumnOptionsProvider();
639+
640+
// Act
641+
var result = sut.ConfigureColumnOptions(columnOptions, _configurationSectionMock.Object);
642+
643+
// Assert
644+
Assert.Equal(customColumn, result.PrimaryKey);
645+
}
646+
647+
[Fact]
648+
public void ConfigureColumnOptionsThrowsWhenSettingPrimaryKeyColumnNameToUndefinedColumnNameAndPrimaryKeyRemainsNull()
649+
{
650+
// Arrange
651+
var columnOptions = new ColumnOptions();
652+
columnOptions.PrimaryKey = null;
653+
SetupConfigurationSectionMocks();
654+
_configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns("TestUndefinedPrimaryKeyColumnName");
655+
var sut = new MicrosoftExtensionsColumnOptionsProvider();
656+
657+
// Act + assert
658+
Assert.Throws<ArgumentException>(() => sut.ConfigureColumnOptions(columnOptions, _configurationSectionMock.Object));
659+
}
660+
575661
private static void AssertColumnSqlOptions(string expectedColumnName, SqlDbType expectedDataType, bool expectedAllowNull, bool expectedNonClusteredIndex, SqlColumn actualColumn)
576662
{
577663
Assert.Equal(expectedColumnName, actualColumn.ColumnName);

0 commit comments

Comments
 (0)