From 280698f244bdaf3fbe2896d7104826d132c0b95a Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 16 Jan 2021 19:48:09 +0800 Subject: test: Add unit tests for search service. --- BackEnd/Timeline.Tests/Services/ServiceTestBase.cs | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 BackEnd/Timeline.Tests/Services/ServiceTestBase.cs (limited to 'BackEnd/Timeline.Tests/Services/ServiceTestBase.cs') 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.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; + } + } +} -- cgit v1.2.3