Skip to content

Commit 4634355

Browse files
committed
Added tests for SqlTableCreator.
1 parent 0f2c855 commit 4634355

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using Dapper;
2+
using FluentAssertions;
3+
using Moq;
4+
using Serilog.Sinks.MSSqlServer.Platform;
5+
using Serilog.Sinks.MSSqlServer.Tests.TestUtils;
6+
using System.Data;
7+
using System.Data.SqlClient;
8+
using Xunit;
9+
10+
namespace Serilog.Sinks.MSSqlServer.Tests.Sinks.MSSqlServer.Platform
11+
{
12+
[Collection("LogTest")]
13+
public class SqlTableCreatorTests : DatabaseTestsBase
14+
{
15+
private readonly Mock<ISqlCreateTableWriter> _sqlWriterMock;
16+
private readonly SqlTableCreator _sut;
17+
18+
public SqlTableCreatorTests()
19+
{
20+
_sqlWriterMock = new Mock<ISqlCreateTableWriter>();
21+
_sut = new SqlTableCreator(_sqlWriterMock.Object);
22+
}
23+
24+
[Fact]
25+
public void CreateTableCallsSqlCreateTableWriterWithPassedValues()
26+
{
27+
// Arrange
28+
const string schemaName = "TestSchemaName";
29+
const string tableName = "TestTableName";
30+
_sqlWriterMock.Setup(w => w.GetSqlFromDataTable(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<DataTable>(),
31+
It.IsAny<Serilog.Sinks.MSSqlServer.ColumnOptions>())).Returns($"USE {DatabaseFixture.Database}");
32+
var dataTable = new DataTable();
33+
var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions();
34+
35+
// Act
36+
_sut.CreateTable(DatabaseFixture.LogEventsConnectionString, schemaName, tableName, dataTable, columnOptions);
37+
38+
// Assert
39+
_sqlWriterMock.Verify(w => w.GetSqlFromDataTable(schemaName, tableName, dataTable, columnOptions), Times.Once());
40+
}
41+
42+
[Fact]
43+
public void CreateTableExecutesCommandReturnedBySqlCreateTableWriter()
44+
{
45+
// Arrange
46+
_sqlWriterMock.Setup(w => w.GetSqlFromDataTable(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<DataTable>(),
47+
It.IsAny<Serilog.Sinks.MSSqlServer.ColumnOptions>())).Returns(
48+
$"CREATE TABLE {DatabaseFixture.LogTableName} ( Id INT IDENTITY )");
49+
50+
// Act
51+
_sut.CreateTable(DatabaseFixture.LogEventsConnectionString, "TestSchemaName", "TestTableName", new DataTable(), new Serilog.Sinks.MSSqlServer.ColumnOptions());
52+
53+
// Assert
54+
using (var conn = new SqlConnection(DatabaseFixture.LogEventsConnectionString))
55+
{
56+
var isIdentity = conn.Query<IdentityQuery>($"SELECT COLUMNPROPERTY(object_id('{DatabaseFixture.LogTableName}'), 'Id', 'IsIdentity') AS IsIdentity");
57+
isIdentity.Should().Contain(i => i.IsIdentity == 1);
58+
}
59+
}
60+
}
61+
}

0 commit comments

Comments
 (0)