1
- using Microsoft . Extensions . Configuration ;
1
+ using System ;
2
+ using Microsoft . Extensions . Configuration ;
2
3
using Moq ;
4
+ using Serilog . Formatting ;
5
+ using Serilog . Sinks . MSSqlServer . Configuration . Extensions . Hybrid ;
3
6
using Xunit ;
4
7
5
8
namespace Serilog . Sinks . MSSqlServer . Tests . Configuration . Extensions . Hybrid
@@ -10,24 +13,79 @@ public class LoggerConfigurationMSSqlServerExtensionsTests
10
13
public void MSSqlServerCallsApplyMicrosoftExtensionsConfigurationGetConnectionString ( )
11
14
{
12
15
// Arrange
13
- const string connectionString = "TestConnectionString" ;
16
+ const string inputConnectionString = "TestConnectionString" ;
17
+ var loggerConfiguration = new LoggerConfiguration ( ) ;
18
+ var applyMicrosoftExtensionsConfigurationMock = new Mock < IApplyMicrosoftExtensionsConfiguration > ( ) ;
19
+ applyMicrosoftExtensionsConfigurationMock . Setup ( c => c . GetConnectionString ( It . IsAny < string > ( ) , It . IsAny < IConfiguration > ( ) ) ) ;
20
+ var appConfigurationMock = new Mock < IConfiguration > ( ) ;
21
+ var columnOptionsSectionMock = new Mock < IConfigurationSection > ( ) ;
22
+ var sinkFactoryMock = new Mock < IMSSqlServerSinkFactory > ( ) ;
23
+
24
+ // Act
25
+ loggerConfiguration . WriteTo . MSSqlServerInternal (
26
+ connectionString : inputConnectionString ,
27
+ tableName : "TestTableName" ,
28
+ appConfiguration : appConfigurationMock . Object ,
29
+ columnOptionsSection : columnOptionsSectionMock . Object ,
30
+ applyMicrosoftExtensionsConfiguration : applyMicrosoftExtensionsConfigurationMock . Object ,
31
+ sinkFactory : sinkFactoryMock . Object ) ;
32
+
33
+ // Assert
34
+ applyMicrosoftExtensionsConfigurationMock . Verify ( c => c . GetConnectionString ( inputConnectionString , appConfigurationMock . Object ) ,
35
+ Times . Once ) ;
36
+ }
37
+
38
+ [ Fact ]
39
+ public void MSSqlServerCallsSinkFactoryWithConnectionStringFromConfig ( )
40
+ {
41
+ // Arrange
42
+ const string inputConnectionString = "TestConnectionString" ;
43
+ const string configConnectionString = "TestConnectionStringFromConfig" ;
14
44
var loggerConfiguration = new LoggerConfiguration ( ) ;
15
45
var applyMicrosoftExtensionsConfigurationMock = new Mock < IApplyMicrosoftExtensionsConfiguration > ( ) ;
16
46
applyMicrosoftExtensionsConfigurationMock . Setup ( c => c . GetConnectionString ( It . IsAny < string > ( ) , It . IsAny < IConfiguration > ( ) ) )
17
- . Returns ( connectionString ) ;
47
+ . Returns ( configConnectionString ) ;
18
48
var appConfigurationMock = new Mock < IConfiguration > ( ) ;
19
49
var columnOptionsSectionMock = new Mock < IConfigurationSection > ( ) ;
50
+ var sinkFactoryMock = new Mock < IMSSqlServerSinkFactory > ( ) ;
20
51
21
52
// Act
22
53
loggerConfiguration . WriteTo . MSSqlServerInternal (
23
- connectionString : connectionString ,
54
+ connectionString : inputConnectionString ,
24
55
tableName : "TestTableName" ,
25
56
appConfiguration : appConfigurationMock . Object ,
26
57
columnOptionsSection : columnOptionsSectionMock . Object ,
27
- applyMicrosoftExtensionsConfiguration : applyMicrosoftExtensionsConfigurationMock . Object ) ;
58
+ applyMicrosoftExtensionsConfiguration : applyMicrosoftExtensionsConfigurationMock . Object ,
59
+ sinkFactory : sinkFactoryMock . Object ) ;
60
+
61
+ // Assert
62
+ applyMicrosoftExtensionsConfigurationMock . Verify ( c => c . GetConnectionString ( inputConnectionString , appConfigurationMock . Object ) ,
63
+ Times . Once ) ;
64
+ sinkFactoryMock . Verify ( f => f . Create ( configConnectionString , It . IsAny < string > ( ) , It . IsAny < int > ( ) , It . IsAny < TimeSpan > ( ) ,
65
+ It . IsAny < IFormatProvider > ( ) , It . IsAny < bool > ( ) , It . IsAny < ColumnOptions > ( ) , It . IsAny < string > ( ) , It . IsAny < ITextFormatter > ( ) ) , Times . Once ) ;
66
+ }
67
+
68
+ [ Fact ]
69
+ public void MSSqlServerDoesNotCallApplyMicrosoftExtensionsConfigurationGetConnectionStringWhenAppConfigIsNull ( )
70
+ {
71
+ // Arrange
72
+ var loggerConfiguration = new LoggerConfiguration ( ) ;
73
+ var applyMicrosoftExtensionsConfigurationMock = new Mock < IApplyMicrosoftExtensionsConfiguration > ( ) ;
74
+ var columnOptionsSectionMock = new Mock < IConfigurationSection > ( ) ;
75
+ var sinkFactoryMock = new Mock < IMSSqlServerSinkFactory > ( ) ;
76
+
77
+ // Act
78
+ loggerConfiguration . WriteTo . MSSqlServerInternal (
79
+ connectionString : "TestConnectionString" ,
80
+ tableName : "TestTableName" ,
81
+ appConfiguration : null ,
82
+ columnOptionsSection : columnOptionsSectionMock . Object ,
83
+ applyMicrosoftExtensionsConfiguration : applyMicrosoftExtensionsConfigurationMock . Object ,
84
+ sinkFactory : sinkFactoryMock . Object ) ;
28
85
29
86
// Assert
30
- applyMicrosoftExtensionsConfigurationMock . Verify ( c => c . GetConnectionString ( connectionString , appConfigurationMock . Object ) ) ;
87
+ applyMicrosoftExtensionsConfigurationMock . Verify ( c => c . GetConnectionString ( It . IsAny < string > ( ) , It . IsAny < IConfiguration > ( ) ) ,
88
+ Times . Never ) ;
31
89
}
32
90
}
33
91
}
0 commit comments