Skip to content

Commit b7a9f29

Browse files
committed
Unit tests for SqlCreateTableWriter.
1 parent e1ddf25 commit b7a9f29

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed

test/Serilog.Sinks.MSSqlServer.Tests/Sinks/MSSqlServer/Platform/SqlCreateTableWriterTests.cs

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,133 @@ public void GetSqlFromDataTableWritesCorrectSchemaNameAndTableName()
3131
// Assert
3232
Assert.Equal(expectedResult, result);
3333
}
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+
}
34162
}
35163
}

0 commit comments

Comments
 (0)