@@ -31,5 +31,133 @@ public void GetSqlFromDataTableWritesCorrectSchemaNameAndTableName()
31
31
// Assert
32
32
Assert . Equal ( expectedResult , result ) ;
33
33
}
34
+
35
+ [ Fact ]
36
+ public void GetSqlFromDataTableCreatesIdPrimaryColumnCorrectly ( )
37
+ {
38
+ // Arrange
39
+ var dataTable = new DataTable ( ) ;
40
+ var dataColumnId = new DataColumn ( ) ;
41
+ var sqlColumnId = new SqlColumn { AllowNull = false , ColumnName = "Id" , DataType = SqlDbType . Int , StandardColumnIdentifier = StandardColumn . Id } ;
42
+ dataColumnId . ExtendedProperties [ "SqlColumn" ] = sqlColumnId ;
43
+ dataTable . Columns . Add ( dataColumnId ) ;
44
+ var columnOptions = new Serilog . Sinks . MSSqlServer . ColumnOptions { PrimaryKey = sqlColumnId } ;
45
+ string expectedResult = "CREATE TABLE [TestSchemaName].[TestTableName] ( \r \n "
46
+ + "[Id] INT IDENTITY(1,1) NOT NULL\r \n "
47
+ + " CONSTRAINT [PK_TestTableName] PRIMARY KEY CLUSTERED ([Id])" ;
48
+
49
+ // Act
50
+ var result = _sut . GetSqlFromDataTable ( "TestSchemaName" , "TestTableName" , dataTable , columnOptions ) ;
51
+
52
+ // Assert
53
+ Assert . Contains ( expectedResult , result ) ;
54
+ }
55
+
56
+ [ Fact ]
57
+ public void GetSqlFromDataTableCreatesIdAndMessageWithLengthColumnsCorrectly ( )
58
+ {
59
+ // Arrange
60
+ var dataTable = new DataTable ( ) ;
61
+ var dataColumnId = new DataColumn ( ) ;
62
+ var sqlColumnId = new SqlColumn { AllowNull = false , ColumnName = "Id" , DataType = SqlDbType . Int } ;
63
+ dataColumnId . ExtendedProperties [ "SqlColumn" ] = sqlColumnId ;
64
+ dataTable . Columns . Add ( dataColumnId ) ;
65
+ var dataColumnMessage = new DataColumn ( ) ;
66
+ var sqlColumnMessage = new SqlColumn { AllowNull = false , ColumnName = "Message" , DataType = SqlDbType . NVarChar , DataLength = 100 } ;
67
+ dataColumnMessage . ExtendedProperties [ "SqlColumn" ] = sqlColumnMessage ;
68
+ dataTable . Columns . Add ( dataColumnMessage ) ;
69
+ var columnOptions = new Serilog . Sinks . MSSqlServer . ColumnOptions { PrimaryKey = sqlColumnId } ;
70
+ string expectedResult = "CREATE TABLE [TestSchemaName].[TestTableName] ( \r \n "
71
+ + "[Id] INT NOT NULL,\r \n "
72
+ + "[Message] NVARCHAR(100) NOT NULL\r \n "
73
+ + " CONSTRAINT [PK_TestTableName] PRIMARY KEY CLUSTERED ([Id])" ;
74
+
75
+ // Act
76
+ var result = _sut . GetSqlFromDataTable ( "TestSchemaName" , "TestTableName" , dataTable , columnOptions ) ;
77
+
78
+ // Assert
79
+ Assert . Contains ( expectedResult , result ) ;
80
+ }
81
+
82
+ [ Fact ]
83
+ public void GetSqlFromDataTableCreatesMessageMaxLengthColumnCorrectly ( )
84
+ {
85
+ // Arrange
86
+ var dataTable = new DataTable ( ) ;
87
+ var dataColumnMessage = new DataColumn ( ) ;
88
+ var sqlColumnMessage = new SqlColumn { AllowNull = false , ColumnName = "Message" , DataType = SqlDbType . NVarChar } ;
89
+ dataColumnMessage . ExtendedProperties [ "SqlColumn" ] = sqlColumnMessage ;
90
+ dataTable . Columns . Add ( dataColumnMessage ) ;
91
+ var columnOptions = new Serilog . Sinks . MSSqlServer . ColumnOptions ( ) ;
92
+ string expectedResult = "CREATE TABLE [TestSchemaName].[TestTableName] ( \r \n "
93
+ + "[Message] NVARCHAR(MAX) NOT NULL\r \n " ;
94
+
95
+ // Act
96
+ var result = _sut . GetSqlFromDataTable ( "TestSchemaName" , "TestTableName" , dataTable , columnOptions ) ;
97
+
98
+ // Assert
99
+ Assert . Contains ( expectedResult , result ) ;
100
+ }
101
+
102
+ [ Fact ]
103
+ public void GetSqlFromDataTableCreatesIdAndNullableColumnsCorrectly ( )
104
+ {
105
+ // Arrange
106
+ var dataTable = new DataTable ( ) ;
107
+ var dataColumnId = new DataColumn ( ) ;
108
+ var sqlColumnId = new SqlColumn { AllowNull = false , ColumnName = "Id" , DataType = SqlDbType . Int } ;
109
+ dataColumnId . ExtendedProperties [ "SqlColumn" ] = sqlColumnId ;
110
+ dataTable . Columns . Add ( dataColumnId ) ;
111
+ var dataColumnException = new DataColumn ( ) ;
112
+ var sqlColumnException = new SqlColumn { AllowNull = true , ColumnName = "Exception" , DataType = SqlDbType . NVarChar , DataLength = 100 } ;
113
+ dataColumnException . ExtendedProperties [ "SqlColumn" ] = sqlColumnException ;
114
+ dataTable . Columns . Add ( dataColumnException ) ;
115
+ var columnOptions = new Serilog . Sinks . MSSqlServer . ColumnOptions { PrimaryKey = sqlColumnId } ;
116
+ string expectedResult = "CREATE TABLE [TestSchemaName].[TestTableName] ( \r \n "
117
+ + "[Id] INT NOT NULL,\r \n "
118
+ + "[Exception] NVARCHAR(100) NULL\r \n "
119
+ + " CONSTRAINT [PK_TestTableName] PRIMARY KEY CLUSTERED ([Id])" ;
120
+
121
+ // Act
122
+ var result = _sut . GetSqlFromDataTable ( "TestSchemaName" , "TestTableName" , dataTable , columnOptions ) ;
123
+
124
+ // Assert
125
+ Assert . Contains ( expectedResult , result ) ;
126
+ }
127
+
128
+ [ Fact ]
129
+ public void GetSqlFromDataTableCreatesIdNonClusteredIndexColumnsCorrectly ( )
130
+ {
131
+ // Arrange
132
+ var dataTable = new DataTable ( ) ;
133
+ var dataColumnId = new DataColumn ( ) ;
134
+ var sqlColumnId = new SqlColumn { AllowNull = false , ColumnName = "Id" , DataType = SqlDbType . Int } ;
135
+ dataColumnId . ExtendedProperties [ "SqlColumn" ] = sqlColumnId ;
136
+ dataTable . Columns . Add ( dataColumnId ) ;
137
+ var dataColumnIndexCol1 = new DataColumn ( ) ;
138
+ var sqlColumnIndexCol1 = new SqlColumn { AllowNull = false , ColumnName = "IndexCol1" , DataType = SqlDbType . NVarChar , DataLength = 100 , NonClusteredIndex = true } ;
139
+ dataColumnIndexCol1 . ExtendedProperties [ "SqlColumn" ] = sqlColumnIndexCol1 ;
140
+ dataTable . Columns . Add ( dataColumnIndexCol1 ) ;
141
+ var dataColumnIndexCol2 = new DataColumn ( ) ;
142
+ var sqlColumnIndexCol2 = new SqlColumn { AllowNull = false , ColumnName = "IndexCol2" , DataType = SqlDbType . NVarChar , DataLength = 50 , NonClusteredIndex = true } ;
143
+ dataColumnIndexCol2 . ExtendedProperties [ "SqlColumn" ] = sqlColumnIndexCol2 ;
144
+ dataTable . Columns . Add ( dataColumnIndexCol2 ) ;
145
+ var columnOptions = new Serilog . Sinks . MSSqlServer . ColumnOptions { PrimaryKey = sqlColumnId } ;
146
+ string expectedResult = "CREATE TABLE [TestSchemaName].[TestTableName] ( \r \n "
147
+ + "[Id] INT NOT NULL,\r \n "
148
+ + "[IndexCol1] NVARCHAR(100) NOT NULL,\r \n "
149
+ + "[IndexCol2] NVARCHAR(50) NOT NULL\r \n "
150
+ + " CONSTRAINT [PK_TestTableName] PRIMARY KEY CLUSTERED ([Id])\r \n "
151
+ + ");\r \n "
152
+ + "CREATE NONCLUSTERED INDEX [IX1_TestTableName] ON [TestSchemaName].[TestTableName] ([IndexCol1]);\r \n "
153
+ + "CREATE NONCLUSTERED INDEX [IX2_TestTableName] ON [TestSchemaName].[TestTableName] ([IndexCol2]);\r \n "
154
+ + "END" ;
155
+
156
+ // Act
157
+ var result = _sut . GetSqlFromDataTable ( "TestSchemaName" , "TestTableName" , dataTable , columnOptions ) ;
158
+
159
+ // Assert
160
+ Assert . Contains ( expectedResult , result ) ;
161
+ }
34
162
}
35
163
}
0 commit comments