Skip to content

Commit a19e029

Browse files
committed
merged to main
2 parents 6c60a99 + 3ac38f0 commit a19e029

17 files changed

+646
-423
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<Project>
22
<PropertyGroup>
3-
<Version>0.1.5</Version>
3+
<Version>0.2.0</Version>
44
</PropertyGroup>
55
</Project>

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# QAToolKit Engine Database library
2-
[![Build .NET Library](https://github.com/qatoolkit/qatoolkit-engine-database-net/workflows/.NET%20Core/badge.svg?branch=main)](https://github.com/qatoolkit/qatoolkit-engine-database-net/actions)
2+
[![Build .NET Library](https://github.com/qatoolkit/qatoolkit-engine-database-net/workflows/Build%20.NET%20Library/badge.svg)](https://github.com/qatoolkit/qatoolkit-engine-database-net/actions)
33
[![CodeQL](https://github.com/qatoolkit/qatoolkit-engine-database-net/workflows/CodeQL%20Analyze/badge.svg)](https://github.com/qatoolkit/qatoolkit-engine-database-net/security/code-scanning)
44
[![Sonarcloud Quality gate](https://github.com/qatoolkit/qatoolkit-engine-database-net/workflows/Sonarqube%20Analyze/badge.svg)](https://sonarcloud.io/dashboard?id=qatoolkit_qatoolkit-engine-database-net)
55
[![NuGet package](https://img.shields.io/nuget/v/QAToolKit.Engine.DataBase?label=QAToolKit.Engine.Database)](https://www.nuget.org/packages/QAToolKit.Engine.Database/)

src/QAToolKit.Engine.Database.Test/MySqlTestGeneratorTests.cs

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using ExpectedObjects;
22
using QAToolKit.Engine.Database.Generators;
33
using QAToolKit.Engine.Database.Models;
4-
using System;
54
using System.Collections.Generic;
65
using System.Threading.Tasks;
76
using Xunit;
@@ -15,7 +14,6 @@ public async Task MySqlTableExistScriptTest_Success()
1514
{
1615
var generator = new MySqlTestGenerator(options =>
1716
{
18-
options.UseDatabase(DatabaseKind.MySQL);
1917
options.AddDatabaseObjectExitsRule(new string[] { "mytable" }, DatabaseObjectType.Table);
2018
});
2119

@@ -37,7 +35,6 @@ public async Task MySqlViewExistScriptTest_Success()
3735
{
3836
var generator = new MySqlTestGenerator(options =>
3937
{
40-
options.UseDatabase(DatabaseKind.MySQL);
4138
options.AddDatabaseObjectExitsRule(new string[] { "myview" }, DatabaseObjectType.View);
4239
});
4340

@@ -59,7 +56,6 @@ public async Task MySqlStoredProcedureExistScriptTest_Success()
5956
{
6057
var generator = new MySqlTestGenerator(options =>
6158
{
62-
options.UseDatabase(DatabaseKind.MySQL);
6359
options.AddDatabaseObjectExitsRule(new string[] { "mystoredprocedure" }, DatabaseObjectType.StoredProcedure);
6460
});
6561

@@ -81,7 +77,6 @@ public async Task MySqlMultipleTableExistScriptTest_Success()
8177
{
8278
var generator = new MySqlTestGenerator(options =>
8379
{
84-
options.UseDatabase(DatabaseKind.MySQL);
8580
options.AddDatabaseObjectExitsRule(new string[] { "table1", "table2" }, DatabaseObjectType.Table);
8681
});
8782

@@ -108,7 +103,6 @@ public async Task MySqlMultipleViewExistScriptTest_Success()
108103
{
109104
var generator = new MySqlTestGenerator(options =>
110105
{
111-
options.UseDatabase(DatabaseKind.MySQL);
112106
options.AddDatabaseObjectExitsRule(new string[] { "view1", "view2" }, DatabaseObjectType.View);
113107
});
114108

@@ -135,7 +129,6 @@ public async Task MySqlMultipleStoredProcedureExistScriptTest_Success()
135129
{
136130
var generator = new MySqlTestGenerator(options =>
137131
{
138-
options.UseDatabase(DatabaseKind.MySQL);
139132
options.AddDatabaseObjectExitsRule(new string[] { "sp1", "sp2" }, DatabaseObjectType.StoredProcedure);
140133
});
141134

@@ -169,12 +162,61 @@ public void MySqlObjectExistScriptNullDbKindTest_Success()
169162
}
170163

171164
[Fact]
172-
public async Task MySqlObjectExistScriptNullOptionsTest_Fails()
165+
public async Task MySqlRecordExistScriptTest_Success()
173166
{
174-
var generator = new MySqlTestGenerator();
167+
var generator = new MySqlTestGenerator(options =>
168+
{
169+
options.AddDatabaseRecordExitsRule(
170+
new List<DatabaseRule>()
171+
{
172+
new DatabaseRule()
173+
{
174+
TableName = "mytable",
175+
PredicateValue = "= 'myname'"
176+
}
177+
});
178+
});
179+
180+
var results = new List<DatabaseScript>
181+
{
182+
new DatabaseScript(
183+
"mytable",
184+
$@"SELECT EXISTS (SELECT 1 FROM mytable WHERE = 'myname');",
185+
DatabaseTestType.RecordExist,
186+
DatabaseKind.MySQL)
187+
}.ToExpectedObject();
188+
189+
results.ShouldEqual(await generator.Generate());
190+
Assert.Equal(DatabaseKind.MySQL, generator.DatabaseKind);
191+
}
175192

193+
[Fact]
194+
public async Task MySqlRecordCountScriptTest_Success()
195+
{
196+
var generator = new MySqlTestGenerator(options =>
197+
{
198+
options.AddDatabaseRecordsCountRule(
199+
new List<DatabaseRule>()
200+
{
201+
new DatabaseRule()
202+
{
203+
TableName = "mytable",
204+
PredicateValue = "=100"
205+
}
206+
});
207+
});
208+
209+
var results = new List<DatabaseScript>
210+
{
211+
new DatabaseScript(
212+
"mytable",
213+
$@"SELECT EXISTS (SELECT 1 FROM mytable WHERE (SELECT count(*) FROM mytable)=100);",
214+
DatabaseTestType.RecordCount,
215+
DatabaseKind.MySQL)
216+
}.ToExpectedObject();
217+
218+
results.ShouldEqual(await generator.Generate());
176219
Assert.Equal(DatabaseKind.MySQL, generator.DatabaseKind);
177-
await Assert.ThrowsAsync<ArgumentNullException>(async() => await generator.Generate());
178220
}
179221
}
180222
}

src/QAToolKit.Engine.Database.Test/PostgresqlTestGeneratorTests.cs

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using ExpectedObjects;
22
using QAToolKit.Engine.Database.Generators;
33
using QAToolKit.Engine.Database.Models;
4-
using System;
54
using System.Collections.Generic;
65
using System.Threading.Tasks;
76
using Xunit;
@@ -15,7 +14,6 @@ public async Task PostgresqlTableExistScriptTest_Success()
1514
{
1615
var generator = new PostgresqlTestGenerator(options =>
1716
{
18-
options.UseDatabase(DatabaseKind.PostgreSQL);
1917
options.AddDatabaseObjectExitsRule(new string[] { "mytable" }, DatabaseObjectType.Table);
2018
});
2119

@@ -37,7 +35,6 @@ public async Task PostgresqlViewExistScriptTest_Success()
3735
{
3836
var generator = new PostgresqlTestGenerator(options =>
3937
{
40-
options.UseDatabase(DatabaseKind.PostgreSQL);
4138
options.AddDatabaseObjectExitsRule(new string[] { "myview" }, DatabaseObjectType.View);
4239
});
4340

@@ -59,7 +56,6 @@ public async Task PostgresqlStoredProcedureExistScriptTest_Success()
5956
{
6057
var generator = new PostgresqlTestGenerator(options =>
6158
{
62-
options.UseDatabase(DatabaseKind.PostgreSQL);
6359
options.AddDatabaseObjectExitsRule(new string[] { "mystoredprocedure" }, DatabaseObjectType.StoredProcedure);
6460
});
6561

@@ -81,7 +77,6 @@ public async Task PostgresqlMultipleTableExistScriptTest_Success()
8177
{
8278
var generator = new PostgresqlTestGenerator(options =>
8379
{
84-
options.UseDatabase(DatabaseKind.PostgreSQL);
8580
options.AddDatabaseObjectExitsRule(new string[] { "table1", "table2" }, DatabaseObjectType.Table);
8681
});
8782

@@ -108,7 +103,6 @@ public async Task PostgresqlMultipleViewExistScriptTest_Success()
108103
{
109104
var generator = new PostgresqlTestGenerator(options =>
110105
{
111-
options.UseDatabase(DatabaseKind.PostgreSQL);
112106
options.AddDatabaseObjectExitsRule(new string[] { "view1", "view2" }, DatabaseObjectType.View);
113107
});
114108

@@ -135,7 +129,6 @@ public async Task PostgresqlMultipleStoredProcedureExistScriptTest_Success()
135129
{
136130
var generator = new PostgresqlTestGenerator(options =>
137131
{
138-
options.UseDatabase(DatabaseKind.PostgreSQL);
139132
options.AddDatabaseObjectExitsRule(new string[] { "sp1", "sp2" }, DatabaseObjectType.StoredProcedure);
140133
});
141134

@@ -169,12 +162,61 @@ public void PostgresqlObjectExistScriptNullDbKindTest_Success()
169162
}
170163

171164
[Fact]
172-
public async Task PostgresqlObjectExistScriptNullOptionsTest_Fails()
165+
public async Task PostgresqlRecordExistScriptTest_Success()
173166
{
174-
var generator = new PostgresqlTestGenerator();
167+
var generator = new PostgresqlTestGenerator(options =>
168+
{
169+
options.AddDatabaseRecordExitsRule(
170+
new List<DatabaseRule>()
171+
{
172+
new DatabaseRule()
173+
{
174+
TableName = "mytable",
175+
PredicateValue = "= 'myname'"
176+
}
177+
});
178+
});
179+
180+
var results = new List<DatabaseScript>
181+
{
182+
new DatabaseScript(
183+
"mytable",
184+
$@"SELECT EXISTS (SELECT 1 FROM mytable WHERE = 'myname');",
185+
DatabaseTestType.RecordExist,
186+
DatabaseKind.PostgreSQL)
187+
}.ToExpectedObject();
188+
189+
results.ShouldEqual(await generator.Generate());
190+
Assert.Equal(DatabaseKind.PostgreSQL, generator.DatabaseKind);
191+
}
175192

193+
[Fact]
194+
public async Task PostgresqlRecordCountScriptTest_Success()
195+
{
196+
var generator = new PostgresqlTestGenerator(options =>
197+
{
198+
options.AddDatabaseRecordsCountRule(
199+
new List<DatabaseRule>()
200+
{
201+
new DatabaseRule()
202+
{
203+
TableName = "mytable",
204+
PredicateValue = "=100"
205+
}
206+
});
207+
});
208+
209+
var results = new List<DatabaseScript>
210+
{
211+
new DatabaseScript(
212+
"mytable",
213+
$@"SELECT EXISTS (SELECT 1 FROM mytable WHERE (SELECT count(*) FROM mytable)=100);",
214+
DatabaseTestType.RecordCount,
215+
DatabaseKind.PostgreSQL)
216+
}.ToExpectedObject();
217+
218+
results.ShouldEqual(await generator.Generate());
176219
Assert.Equal(DatabaseKind.PostgreSQL, generator.DatabaseKind);
177-
await Assert.ThrowsAsync<ArgumentNullException>(async () => await generator.Generate());
178220
}
179221
}
180222
}

src/QAToolKit.Engine.Database.Test/SqlServerTestGeneratorTests.cs

Lines changed: 53 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using ExpectedObjects;
22
using QAToolKit.Engine.Database.Generators;
33
using QAToolKit.Engine.Database.Models;
4-
using System;
54
using System.Collections.Generic;
65
using System.Threading.Tasks;
76
using Xunit;
@@ -15,7 +14,6 @@ public async Task SqlServerTableExistScriptTest_Success()
1514
{
1615
var generator = new SqlServerTestGenerator(options =>
1716
{
18-
options.UseDatabase(DatabaseKind.SQLServer);
1917
options.AddDatabaseObjectExitsRule(new string[] { "mytable" }, DatabaseObjectType.Table);
2018
});
2119

@@ -37,7 +35,6 @@ public async Task SqlServerViewExistScriptTest_Success()
3735
{
3836
var generator = new SqlServerTestGenerator(options =>
3937
{
40-
options.UseDatabase(DatabaseKind.SQLServer);
4138
options.AddDatabaseObjectExitsRule(new string[] { "myview" }, DatabaseObjectType.View);
4239
});
4340

@@ -59,7 +56,6 @@ public async Task SqlServerStoredProcedureExistScriptTest_Success()
5956
{
6057
var generator = new SqlServerTestGenerator(options =>
6158
{
62-
options.UseDatabase(DatabaseKind.SQLServer);
6359
options.AddDatabaseObjectExitsRule(new string[] { "mystoredprocedure" }, DatabaseObjectType.StoredProcedure);
6460
});
6561

@@ -81,7 +77,6 @@ public async Task SqlServerMultipleTableExistScriptTest_Success()
8177
{
8278
var generator = new SqlServerTestGenerator(options =>
8379
{
84-
options.UseDatabase(DatabaseKind.SQLServer);
8580
options.AddDatabaseObjectExitsRule(new string[] { "table1", "table2" }, DatabaseObjectType.Table);
8681
});
8782

@@ -108,7 +103,6 @@ public async Task SqlServerMultipleViewExistScriptTest_Success()
108103
{
109104
var generator = new SqlServerTestGenerator(options =>
110105
{
111-
options.UseDatabase(DatabaseKind.SQLServer);
112106
options.AddDatabaseObjectExitsRule(new string[] { "view1", "view2" }, DatabaseObjectType.View);
113107
});
114108

@@ -135,7 +129,6 @@ public async Task SqlServerMultipleStoredProcedureExistScriptTest_Success()
135129
{
136130
var generator = new SqlServerTestGenerator(options =>
137131
{
138-
options.UseDatabase(DatabaseKind.SQLServer);
139132
options.AddDatabaseObjectExitsRule(new string[] { "sp1", "sp2" }, DatabaseObjectType.StoredProcedure);
140133
});
141134

@@ -168,13 +161,63 @@ public void SqlServerObjectExistScriptNullDbKindTest_Success()
168161
Assert.Equal(DatabaseKind.SQLServer, generator.DatabaseKind);
169162
}
170163

164+
171165
[Fact]
172-
public async Task SqlServerObjectExistScriptNullOptionsTest_Fails()
166+
public async Task SqlServerRecordExistScriptTest_Success()
173167
{
174-
var generator = new SqlServerTestGenerator();
168+
var generator = new SqlServerTestGenerator(options =>
169+
{
170+
options.AddDatabaseRecordExitsRule(
171+
new List<DatabaseRule>()
172+
{
173+
new DatabaseRule()
174+
{
175+
TableName = "mytable",
176+
PredicateValue = "= 'myname'"
177+
}
178+
});
179+
});
180+
181+
var results = new List<DatabaseScript>
182+
{
183+
new DatabaseScript(
184+
"mytable",
185+
$@"IF EXISTS(SELECT 1 FROM mytable WHERE = 'myname') BEGIN Select 1 END ELSE BEGIN Select 0 END",
186+
DatabaseTestType.RecordExist,
187+
DatabaseKind.SQLServer)
188+
}.ToExpectedObject();
189+
190+
results.ShouldEqual(await generator.Generate());
191+
Assert.Equal(DatabaseKind.SQLServer, generator.DatabaseKind);
192+
}
175193

194+
[Fact]
195+
public async Task SqlServerRecordCountScriptTest_Success()
196+
{
197+
var generator = new SqlServerTestGenerator(options =>
198+
{
199+
options.AddDatabaseRecordsCountRule(
200+
new List<DatabaseRule>()
201+
{
202+
new DatabaseRule()
203+
{
204+
TableName = "mytable",
205+
PredicateValue = "=100"
206+
}
207+
});
208+
});
209+
210+
var results = new List<DatabaseScript>
211+
{
212+
new DatabaseScript(
213+
"mytable",
214+
$@"IF EXISTS(SELECT 1 FROM mytable WHERE (SELECT count(*) FROM mytable)=100) BEGIN Select 1 END ELSE BEGIN Select 0 END",
215+
DatabaseTestType.RecordCount,
216+
DatabaseKind.SQLServer)
217+
}.ToExpectedObject();
218+
219+
results.ShouldEqual(await generator.Generate());
176220
Assert.Equal(DatabaseKind.SQLServer, generator.DatabaseKind);
177-
await Assert.ThrowsAsync<ArgumentNullException>(async () => await generator.Generate());
178221
}
179222
}
180223
}

0 commit comments

Comments
 (0)