blob: 7153e99bde5baf5ab3c3a6cfe5232515c5a6cdf4 (
plain)
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
|
using Microsoft.Extensions.Logging.Abstractions;
using System.Threading.Tasks;
using Timeline.Entities;
using Timeline.Services.Timeline;
using Timeline.Services.User;
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(ITestOutputHelper? testOutputHelper = null)
{
_testOutputHelper = testOutputHelper;
TestDatabase = new TestDatabase();
}
public async Task InitializeAsync()
{
await TestDatabase.InitializeAsync();
Database = TestDatabase.CreateContext(_testOutputHelper);
UserService = new UserService(NullLogger<UserService>.Instance, Database, new PasswordService(), Clock);
TimelineService = new TimelineService(NullLoggerFactory.Instance, Database, UserService, Clock);
UserId = await UserService.GetUserIdByUsernameAsync("user");
AdminId = await UserService.GetUserIdByUsernameAsync("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;
}
}
}
|