aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline.Tests/Services/ServiceTestBase.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-01-19 15:27:01 +0800
committerGitHub <noreply@github.com>2021-01-19 15:27:01 +0800
commit23433673f91c1b07c43c4b2280e29db45e8896b5 (patch)
tree455fbd07678b1b21a1bfa3ad7e3778b1957fd12f /BackEnd/Timeline.Tests/Services/ServiceTestBase.cs
parenta23b8af0b06be2ab58d1831a0a25a30d934ec1e2 (diff)
parentfb6442f1716406c7a2da79e4a1cc42e23908d218 (diff)
downloadtimeline-23433673f91c1b07c43c4b2280e29db45e8896b5.tar.gz
timeline-23433673f91c1b07c43c4b2280e29db45e8896b5.tar.bz2
timeline-23433673f91c1b07c43c4b2280e29db45e8896b5.zip
Merge pull request #211 from crupest/search
Back search feature.
Diffstat (limited to 'BackEnd/Timeline.Tests/Services/ServiceTestBase.cs')
-rw-r--r--BackEnd/Timeline.Tests/Services/ServiceTestBase.cs71
1 files changed, 71 insertions, 0 deletions
diff --git a/BackEnd/Timeline.Tests/Services/ServiceTestBase.cs b/BackEnd/Timeline.Tests/Services/ServiceTestBase.cs
new file mode 100644
index 00000000..5a3e1e19
--- /dev/null
+++ b/BackEnd/Timeline.Tests/Services/ServiceTestBase.cs
@@ -0,0 +1,71 @@
+using Microsoft.Extensions.Logging.Abstractions;
+using System.Threading.Tasks;
+using Timeline.Entities;
+using Timeline.Services;
+using Timeline.Tests.Helpers;
+using Xunit;
+using Xunit.Abstractions;
+
+namespace Timeline.Tests.Services
+{
+ public abstract class ServiceTestBase : IAsyncLifetime
+ {
+ protected TestDatabase TestDatabase { get; }
+ protected DatabaseContext Database { get; private set; } = default!;
+
+ private readonly ITestOutputHelper? _testOutputHelper;
+
+ protected TestClock Clock { get; } = new TestClock();
+ protected UserService UserService { get; private set; } = default!;
+ protected TimelineService TimelineService { get; private set; } = default!;
+
+ protected long UserId { get; private set; }
+ protected long AdminId { get; private set; }
+
+ protected ServiceTestBase(bool databaseCreateUsers = true, ITestOutputHelper? testOutputHelper = null)
+ {
+ _testOutputHelper = testOutputHelper;
+ TestDatabase = new TestDatabase(databaseCreateUsers);
+ }
+
+ protected ServiceTestBase(ITestOutputHelper? testOutputHelper) : this(true, testOutputHelper) { }
+
+ public async Task InitializeAsync()
+ {
+ await TestDatabase.InitializeAsync();
+ Database = TestDatabase.CreateContext(_testOutputHelper);
+
+ UserService = new UserService(NullLogger<UserService>.Instance, Database, new PasswordService(), Clock);
+ TimelineService = new TimelineService(Database, UserService, Clock);
+
+ UserId = await UserService.GetUserIdByUsername("user");
+ AdminId = await UserService.GetUserIdByUsername("admin");
+
+ await OnInitializeAsync();
+ OnInitialize();
+ }
+
+ public async Task DisposeAsync()
+ {
+ OnDispose();
+ await OnDisposeAsync();
+ await Database.DisposeAsync();
+ await TestDatabase.DisposeAsync();
+ }
+
+
+ protected virtual void OnInitialize() { }
+ protected virtual void OnDispose() { }
+
+
+ protected virtual Task OnInitializeAsync()
+ {
+ return Task.CompletedTask;
+ }
+
+ protected virtual Task OnDisposeAsync()
+ {
+ return Task.CompletedTask;
+ }
+ }
+}