Skip to content

Commit c7e6dff

Browse files
authored
Merge pull request #247 from ckadluba/refactoring-cleanup-tests
Fixed unit test parallel execution
2 parents 2022d74 + 200d4f5 commit c7e6dff

File tree

23 files changed

+138
-85
lines changed

23 files changed

+138
-85
lines changed

src/Serilog.Sinks.MSSqlServer/Configuration/Extensions/Hybrid/LoggerConfigurationMSSqlServerExtensions.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,19 @@ public static LoggerConfiguration MSSqlServer(
8282

8383
if (ConfigurationManager.GetSection(AppConfigSectionName) is MSSqlServerConfigurationSection serviceConfigSection)
8484
{
85-
colOpts = ApplySystemConfiguration.ConfigureColumnOptions(serviceConfigSection, colOpts);
86-
connStr = ApplySystemConfiguration.GetConnectionString(connStr);
85+
var systemConfiguration = new ApplySystemConfiguration();
86+
colOpts = systemConfiguration.ConfigureColumnOptions(serviceConfigSection, colOpts);
87+
connStr = systemConfiguration.GetConnectionString(connStr);
8788

8889
if (appConfiguration != null || columnOptionsSection != null)
8990
SelfLog.WriteLine("Warning: Both System.Configuration (app.config or web.config) and Microsoft.Extensions.Configuration are being applied to the MSSQLServer sink.");
9091
}
9192

9293
if (appConfiguration != null || columnOptionsSection != null)
9394
{
94-
connStr = ApplyMicrosoftExtensionsConfiguration.GetConnectionString(connStr, appConfiguration);
95-
colOpts = ApplyMicrosoftExtensionsConfiguration.ConfigureColumnOptions(colOpts, columnOptionsSection);
95+
var microsoftExtensionsConfiguration = new ApplyMicrosoftExtensionsConfiguration();
96+
connStr = microsoftExtensionsConfiguration.GetConnectionString(connStr, appConfiguration);
97+
colOpts = microsoftExtensionsConfiguration.ConfigureColumnOptions(colOpts, columnOptionsSection);
9698
}
9799

98100
return loggerConfiguration.Sink(
@@ -146,17 +148,19 @@ public static LoggerConfiguration MSSqlServer(
146148

147149
if (ConfigurationManager.GetSection(AppConfigSectionName) is MSSqlServerConfigurationSection serviceConfigSection)
148150
{
149-
colOpts = ApplySystemConfiguration.ConfigureColumnOptions(serviceConfigSection, colOpts);
150-
connStr = ApplySystemConfiguration.GetConnectionString(connStr);
151+
var systemConfiguration = new ApplySystemConfiguration();
152+
colOpts = systemConfiguration.ConfigureColumnOptions(serviceConfigSection, colOpts);
153+
connStr = systemConfiguration.GetConnectionString(connStr);
151154

152155
if (appConfiguration != null || columnOptionsSection != null)
153156
SelfLog.WriteLine("Warning: Both System.Configuration (app.config or web.config) and Microsoft.Extensions.Configuration are being applied to the MSSQLServer sink.");
154157
}
155158

156159
if (appConfiguration != null || columnOptionsSection != null)
157160
{
158-
connStr = ApplyMicrosoftExtensionsConfiguration.GetConnectionString(connStr, appConfiguration);
159-
colOpts = ApplyMicrosoftExtensionsConfiguration.ConfigureColumnOptions(colOpts, columnOptionsSection);
161+
var microsoftExtensionsConfiguration = new ApplyMicrosoftExtensionsConfiguration();
162+
connStr = microsoftExtensionsConfiguration.GetConnectionString(connStr, appConfiguration);
163+
colOpts = microsoftExtensionsConfiguration.ConfigureColumnOptions(colOpts, columnOptionsSection);
160164
}
161165

162166
return loggerAuditSinkConfiguration.Sink(

src/Serilog.Sinks.MSSqlServer/Configuration/Extensions/Microsoft.Extensions.Configuration/LoggerConfigurationMSSqlServerExtensions.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ public static LoggerConfiguration MSSqlServer(
6868
throw new ArgumentNullException(nameof(loggerConfiguration));
6969

7070
var defaultedPeriod = period ?? MSSqlServerSink.DefaultPeriod;
71-
var connectionStr = ApplyMicrosoftExtensionsConfiguration.GetConnectionString(connectionString, appConfiguration);
72-
var colOpts = ApplyMicrosoftExtensionsConfiguration.ConfigureColumnOptions(columnOptions, columnOptionsSection);
71+
72+
var microsoftExtensionsConfiguration = new ApplyMicrosoftExtensionsConfiguration();
73+
var connectionStr = microsoftExtensionsConfiguration.GetConnectionString(connectionString, appConfiguration);
74+
var colOpts = microsoftExtensionsConfiguration.ConfigureColumnOptions(columnOptions, columnOptionsSection);
7375

7476
return loggerConfiguration.Sink(
7577
new MSSqlServerSink(
@@ -117,8 +119,9 @@ public static LoggerConfiguration MSSqlServer(
117119
if (loggerAuditSinkConfiguration == null)
118120
throw new ArgumentNullException(nameof(loggerAuditSinkConfiguration));
119121

120-
connectionString = ApplyMicrosoftExtensionsConfiguration.GetConnectionString(connectionString, appConfiguration);
121-
columnOptions = ApplyMicrosoftExtensionsConfiguration.ConfigureColumnOptions(columnOptions, columnOptionsSection);
122+
var microsoftExtensionsConfiguration = new ApplyMicrosoftExtensionsConfiguration();
123+
connectionString = microsoftExtensionsConfiguration.GetConnectionString(connectionString, appConfiguration);
124+
columnOptions = microsoftExtensionsConfiguration.ConfigureColumnOptions(columnOptions, columnOptionsSection);
122125

123126
return loggerAuditSinkConfiguration.Sink(
124127
new MSSqlServerAuditSink(

src/Serilog.Sinks.MSSqlServer/Configuration/Extensions/System.Configuration/LoggerConfigurationMSSqlServerExtensions.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,11 @@ public static LoggerConfiguration MSSqlServer(
7171
var defaultedPeriod = period ?? MSSqlServerSink.DefaultPeriod;
7272
var colOpts = columnOptions ?? new ColumnOptions();
7373

74+
var systemConfiguration = new ApplySystemConfiguration();
7475
if (ConfigurationManager.GetSection(AppConfigSectionName) is MSSqlServerConfigurationSection serviceConfigSection)
75-
colOpts = ApplySystemConfiguration.ConfigureColumnOptions(serviceConfigSection, colOpts);
76+
colOpts = systemConfiguration.ConfigureColumnOptions(serviceConfigSection, colOpts);
7677

77-
connectionString = ApplySystemConfiguration.GetConnectionString(connectionString);
78+
connectionString = systemConfiguration.GetConnectionString(connectionString);
7879

7980
return loggerConfiguration.Sink(
8081
new MSSqlServerSink(
@@ -123,10 +124,11 @@ public static LoggerConfiguration MSSqlServer(
123124

124125
var colOpts = columnOptions ?? new ColumnOptions();
125126

127+
var systemConfiguration = new ApplySystemConfiguration();
126128
if (ConfigurationManager.GetSection(AppConfigSectionName) is MSSqlServerConfigurationSection serviceConfigSection)
127-
colOpts = ApplySystemConfiguration.ConfigureColumnOptions(serviceConfigSection, colOpts);
129+
colOpts = systemConfiguration.ConfigureColumnOptions(serviceConfigSection, colOpts);
128130

129-
connectionString = ApplySystemConfiguration.GetConnectionString(connectionString);
131+
connectionString = systemConfiguration.GetConnectionString(connectionString);
130132

131133
return loggerAuditSinkConfiguration.Sink(
132134
new MSSqlServerAuditSink(

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

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,25 @@ namespace Serilog.Sinks.MSSqlServer
66
/// <summary>
77
/// Configures the sink's connection string and ColumnOtions object.
88
/// </summary>
9-
internal static class ApplyMicrosoftExtensionsConfiguration
9+
internal class ApplyMicrosoftExtensionsConfiguration
1010
{
11-
internal static IMicrosoftExtensionsConnectionStringProvider ConnectionStringProvider { get; set; } = new MicrosoftExtensionsConnectionStringProvider();
11+
private readonly IMicrosoftExtensionsConnectionStringProvider _connectionStringProvider;
12+
private readonly IMicrosoftExtensionsColumnOptionsProvider _columnOptionsProvider;
1213

13-
internal static IMicrosoftExtensionsColumnOptionsProvider ColumnOptionsProvider { get; set; } = new MicrosoftExtensionsColumnOptionsProvider();
14+
public ApplyMicrosoftExtensionsConfiguration()
15+
{
16+
_connectionStringProvider = new MicrosoftExtensionsConnectionStringProvider();
17+
_columnOptionsProvider = new MicrosoftExtensionsColumnOptionsProvider();
18+
}
19+
20+
// Constructor with injectable dependencies for tests
21+
internal ApplyMicrosoftExtensionsConfiguration(
22+
IMicrosoftExtensionsConnectionStringProvider connectionStringProvider,
23+
IMicrosoftExtensionsColumnOptionsProvider columnOptionsProvider)
24+
{
25+
_connectionStringProvider = connectionStringProvider;
26+
_columnOptionsProvider = columnOptionsProvider;
27+
}
1428

1529
/// <summary>
1630
/// Examine if supplied connection string is a reference to an item in the "ConnectionStrings" section of web.config
@@ -19,16 +33,16 @@ internal static class ApplyMicrosoftExtensionsConfiguration
1933
/// <param name="nameOrConnectionString">The name of the ConnectionStrings key or raw connection string.</param>
2034
/// <param name="appConfiguration">Additional application-level configuration.</param>
2135
/// <remarks>Pulled from review of Entity Framework 6 methodology for doing the same</remarks>
22-
internal static string GetConnectionString(string nameOrConnectionString, IConfiguration appConfiguration) =>
23-
ConnectionStringProvider.GetConnectionString(nameOrConnectionString, appConfiguration);
36+
public string GetConnectionString(string nameOrConnectionString, IConfiguration appConfiguration) =>
37+
_connectionStringProvider.GetConnectionString(nameOrConnectionString, appConfiguration);
2438

2539
/// <summary>
2640
/// Create or add to the ColumnOptions object and apply any configuration changes to it.
2741
/// </summary>
2842
/// <param name="columnOptions">An optional externally-created ColumnOptions object to be updated with additional configuration values.</param>
2943
/// <param name="config">A configuration section typically named "columnOptionsSection" (see docs).</param>
3044
/// <returns></returns>
31-
internal static ColumnOptions ConfigureColumnOptions(ColumnOptions columnOptions, IConfigurationSection config) =>
32-
ColumnOptionsProvider.ConfigureColumnOptions(columnOptions, config);
45+
public ColumnOptions ConfigureColumnOptions(ColumnOptions columnOptions, IConfigurationSection config) =>
46+
_columnOptionsProvider.ConfigureColumnOptions(columnOptions, config);
3347
}
3448
}

src/Serilog.Sinks.MSSqlServer/Configuration/Implementations/System.Configuration/ApplySystemConfiguration.cs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,39 @@ namespace Serilog.Sinks.MSSqlServer
66
/// <summary>
77
/// Configures the sink's connection string and ColumnOtions object.
88
/// </summary>
9-
internal static class ApplySystemConfiguration
9+
internal class ApplySystemConfiguration
1010
{
11-
internal static ISystemConfigurationConnectionStringProvider ConnectionStringProvider { get; set; } = new SystemConfigurationConnectionStringProvider();
11+
private readonly ISystemConfigurationConnectionStringProvider _connectionStringProvider;
12+
private readonly ISystemConfigurationColumnOptionsProvider _columnOptionsProvider;
1213

13-
internal static ISystemConfigurationColumnOptionsProvider ColumnOptionsProvider { get; set; } = new SystemConfigurationColumnOptionsProvider();
14+
public ApplySystemConfiguration()
15+
{
16+
_connectionStringProvider = new SystemConfigurationConnectionStringProvider();
17+
_columnOptionsProvider = new SystemConfigurationColumnOptionsProvider();
18+
}
19+
20+
// Constructor with injectable dependencies for tests
21+
internal ApplySystemConfiguration(
22+
ISystemConfigurationConnectionStringProvider connectionStringProvider,
23+
ISystemConfigurationColumnOptionsProvider columnOptionsProvider)
24+
{
25+
_connectionStringProvider = connectionStringProvider;
26+
_columnOptionsProvider = columnOptionsProvider;
27+
}
1428

1529
/// <summary>
1630
/// Examine if supplied connection string is a reference to an item in the "ConnectionStrings" section of web.config
1731
/// If it is, return the ConnectionStrings item, if not, return string as supplied.
1832
/// </summary>
1933
/// <param name="nameOrConnectionString">The name of the ConnectionStrings key or raw connection string.</param>
2034
/// <remarks>Pulled from review of Entity Framework 6 methodology for doing the same</remarks>
21-
internal static string GetConnectionString(string nameOrConnectionString) =>
22-
ConnectionStringProvider.GetConnectionString(nameOrConnectionString);
35+
public string GetConnectionString(string nameOrConnectionString) =>
36+
_connectionStringProvider.GetConnectionString(nameOrConnectionString);
2337

2438
/// <summary>
2539
/// Populate ColumnOptions properties and collections from app config
2640
/// </summary>
27-
internal static ColumnOptions ConfigureColumnOptions(MSSqlServerConfigurationSection config, ColumnOptions columnOptions) =>
28-
ColumnOptionsProvider.ConfigureColumnOptions(config, columnOptions);
41+
public ColumnOptions ConfigureColumnOptions(MSSqlServerConfigurationSection config, ColumnOptions columnOptions) =>
42+
_columnOptionsProvider.ConfigureColumnOptions(config, columnOptions);
2943
}
3044
}

test/Serilog.Sinks.MSSqlServer.Tests/App.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</startup>
1010

1111
<connectionStrings>
12-
<add name="NamedConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=SerilogTest;Integrated Security=true" providerName="System.Data.SqlClient" />
12+
<add name="NamedConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=LogTest;Integrated Security=true" providerName="System.Data.SqlClient" />
1313
</connectionStrings>
1414

1515
<CustomStandardColumnNames>

test/Serilog.Sinks.MSSqlServer.Tests/Configuration/Extensions/Microsoft.Extensions.Configuration/ConfigurationExtensionsTests.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,19 @@
66
using FluentAssertions;
77
using Microsoft.Extensions.Configuration;
88
using Serilog.Sinks.MSSqlServer.Tests.TestUtils;
9+
using Xunit.Abstractions;
910

1011
namespace Serilog.Sinks.MSSqlServer.Tests.Configuration.Extensions.Microsoft.Extensions.Configuration
1112
{
12-
[Collection("LogTest")]
1313
public class ConfigurationExtensionsTests : DatabaseTestsBase
1414
{
1515
private const string ConnectionStringName = "NamedConnection";
1616
private const string ColumnOptionsSection = "CustomColumnNames";
1717

18+
public ConfigurationExtensionsTests(ITestOutputHelper output) : base(output)
19+
{
20+
}
21+
1822
IConfiguration TestConfiguration() =>
1923
new ConfigurationBuilder()
2024
.AddInMemoryCollection(new Dictionary<string, string>

test/Serilog.Sinks.MSSqlServer.Tests/Configuration/Extensions/System.Configuration/ConfigurationExtensionsTests.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Data.SqlClient;
66
using System.Linq;
77
using Serilog.Sinks.MSSqlServer.Tests.TestUtils;
8+
using Xunit.Abstractions;
89

910
// Because System.Configuration is static and config is loaded automatically,
1011
// the tests alter the static AppConfigSectionName string value exposed by the
@@ -15,9 +16,12 @@
1516

1617
namespace Serilog.Sinks.MSSqlServer.Tests.Configuration.Extensions.System.Configuration
1718
{
18-
[Collection("LogTest")]
1919
public class ConfigurationExtensionsTests : DatabaseTestsBase
2020
{
21+
public ConfigurationExtensionsTests(ITestOutputHelper output) : base(output)
22+
{
23+
}
24+
2125
[Fact]
2226
public void ConnectionStringByName()
2327
{

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

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,8 @@
55

66
namespace Serilog.Sinks.MSSqlServer.Tests.Configuration.Implementations.Microsoft.Extensions.Configuration
77
{
8-
[Collection("LogTest")]
98
public class ApplyMicrosoftExtensionsConfigurationTests
109
{
11-
[Fact]
12-
public void InitializesSystemConfigurationConnectionStringProvider()
13-
{
14-
Assert.NotNull(ApplyMicrosoftExtensionsConfiguration.ConnectionStringProvider);
15-
Assert.IsType<MicrosoftExtensionsConnectionStringProvider>(ApplyMicrosoftExtensionsConfiguration.ConnectionStringProvider);
16-
}
17-
18-
[Fact]
19-
public void InitializesSystemConfigurationColumnOptionsProvider()
20-
{
21-
Assert.NotNull(ApplyMicrosoftExtensionsConfiguration.ColumnOptionsProvider);
22-
Assert.IsType<MicrosoftExtensionsColumnOptionsProvider>(ApplyMicrosoftExtensionsConfiguration.ColumnOptionsProvider);
23-
}
24-
2510
[Fact]
2611
public void GetConfigurationStringCallsAttachedConfigurationStringProvider()
2712
{
@@ -31,10 +16,10 @@ public void GetConfigurationStringCallsAttachedConfigurationStringProvider()
3116
var configurationMock = new Mock<IConfiguration>();
3217
var connectionStringProviderMock = new Mock<IMicrosoftExtensionsConnectionStringProvider>();
3318
connectionStringProviderMock.Setup(p => p.GetConnectionString(It.IsAny<string>(), It.IsAny<IConfiguration>())).Returns(expectedResult);
34-
ApplyMicrosoftExtensionsConfiguration.ConnectionStringProvider = connectionStringProviderMock.Object;
19+
var sut = new ApplyMicrosoftExtensionsConfiguration(connectionStringProviderMock.Object, null);
3520

3621
// Act
37-
var result = ApplyMicrosoftExtensionsConfiguration.GetConnectionString(connectionStringName, configurationMock.Object);
22+
var result = sut.GetConnectionString(connectionStringName, configurationMock.Object);
3823

3924
// Assert
4025
connectionStringProviderMock.Verify(p => p.GetConnectionString(connectionStringName, configurationMock.Object), Times.Once);
@@ -51,10 +36,10 @@ public void ConfigureColumnOptionsCallsAttachedColumnOptionsProvider()
5136
var columnOptionsProviderMock = new Mock<IMicrosoftExtensionsColumnOptionsProvider>();
5237
columnOptionsProviderMock.Setup(p => p.ConfigureColumnOptions(It.IsAny<ColumnOptions>(), It.IsAny<IConfigurationSection>()))
5338
.Returns(expectedResult);
54-
ApplyMicrosoftExtensionsConfiguration.ColumnOptionsProvider = columnOptionsProviderMock.Object;
39+
var sut = new ApplyMicrosoftExtensionsConfiguration(null, columnOptionsProviderMock.Object);
5540

5641
// Act
57-
var result = ApplyMicrosoftExtensionsConfiguration.ConfigureColumnOptions(inputColumnOptions, configurationSectionMock.Object);
42+
var result = sut.ConfigureColumnOptions(inputColumnOptions, configurationSectionMock.Object);
5843

5944
// Assert
6045
columnOptionsProviderMock.Verify(p => p.ConfigureColumnOptions(inputColumnOptions, configurationSectionMock.Object), Times.Once);

0 commit comments

Comments
 (0)