-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBaseDbTests.cs
More file actions
111 lines (92 loc) · 3.9 KB
/
BaseDbTests.cs
File metadata and controls
111 lines (92 loc) · 3.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using NUnit.Framework;
using Acme.Wattle.Testing.Databases.PostgreSql;
using System;
using Acme.Wattle.Testing;
using System.Globalization;
// ReSharper disable MemberCanBePrivate.Global
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
namespace Acme.DemoServer.Testing;
public abstract class BaseDbTests : BaseSlimTests
{
/*
Если адрес, логин и пароль БД PostgreSQL не указаны явно то они берутся из реестра Windows.
Файл с настройками реестра.
src\DemoServer.Testing\WindowsRegisterTestingEnvirioment.reg
*/
public static readonly string? PostgreSqlServerAdress = null;
/*
Если адрес, логин и пароль БД PostgreSQL не указаны явно то они берутся из реестра Windows.
Файл с настройками реестра.
src\DemoServer.Testing\WindowsRegisterTestingEnvirioment.reg
*/
public static readonly (string UserName, string UserPassword)? PostgreSqlUserCredentials = null;
protected string m_serverConnectionString;
protected string m_dbName;
protected string m_dbConnectionString;
protected bool m_dropDb;
protected bool m_addTags;
public static string UniqueMark()
{
var result = DateTime.Now.ToString("yyyMMddhhmmss") + "_" + ProviderRandomValues.GetUInt16().ToString(CultureInfo.InvariantCulture);
return result;
}
[SetUp]
public void BaseDbTests_SetUp()
{
m_dropDb = true;
m_addTags = true;
m_dbName = DoGetDbName() + UniqueMark();
var sqlScript = DoGetSqlScript();
/*
Если адрес, логин и пароль БД PostgreSQL не указаны явно то они берутся из реестра Windows.
Файл с настройками реестра.
src\DemoServer.Testing\WindowsRegisterTestingEnvirioment.reg
*/
m_serverConnectionString = PostgreSqlDbHelper.GetServerConnectionString(userCredentials: PostgreSqlUserCredentials, serverAdress: PostgreSqlServerAdress);
/*
Если адрес, логин и пароль БД PostgreSQL не указаны явно то они берутся из реестра Windows.
Файл с настройками реестра.
src\DemoServer.Testing\WindowsRegisterTestingEnvirioment.reg
*/
m_dbConnectionString = PostgreSqlDbHelper.GetDatabaseConnectionString(m_dbName, userCredentials: PostgreSqlUserCredentials, serverAdress: PostgreSqlServerAdress);
DoPreCreateDb();
PostgreSqlDbHelper.CreateDb(
m_dbName,
tag: m_addTags ? TestContext.CurrentContext.Test.FullName : null,
sqlScript: sqlScript,
serverConnectionString: m_serverConnectionString,
databaseConnectionString: m_dbConnectionString,
lcCollate: null,
lcCtype: null);
DoPostCreateDb();
}
[TearDown]
public void BaseTests_TearDown()
{
if (m_dropDb)
{
PostgreSqlDbHelper.DropDb(
m_dbName,
serverConnectionString: m_serverConnectionString);
DoPostDropDb();
}
}
protected abstract string DoGetDbName();
protected abstract string DoGetSqlScript();
// ReSharper disable once VirtualMemberNeverOverridden.Global
protected virtual void DoPostDropDb()
{
/* NONE */
}
// ReSharper disable once VirtualMemberNeverOverridden.Global
protected virtual void DoPreCreateDb()
{
/* NONE */
}
// ReSharper disable once VirtualMemberNeverOverridden.Global
protected virtual void DoPostCreateDb()
{
/* NONE */
}
}