diff options
Diffstat (limited to 'BackEnd/Timeline.Tests/ServiceTests')
-rw-r--r-- | BackEnd/Timeline.Tests/ServiceTests/ServiceTestBase.cs | 67 | ||||
-rw-r--r-- | BackEnd/Timeline.Tests/ServiceTests/User/RegisterCode/RegisterCodeServiceTest.cs | 42 |
2 files changed, 109 insertions, 0 deletions
diff --git a/BackEnd/Timeline.Tests/ServiceTests/ServiceTestBase.cs b/BackEnd/Timeline.Tests/ServiceTests/ServiceTestBase.cs new file mode 100644 index 00000000..0019de02 --- /dev/null +++ b/BackEnd/Timeline.Tests/ServiceTests/ServiceTestBase.cs @@ -0,0 +1,67 @@ +using Microsoft.Extensions.Logging.Abstractions;
+using System.Threading.Tasks;
+using Timeline.Entities;
+using Timeline.Services.User;
+using Timeline.Tests.Helpers;
+using Xunit;
+using Xunit.Abstractions;
+
+namespace Timeline.Tests.ServiceTests
+{
+ public abstract class ServiceTestBase : IAsyncLifetime
+ {
+ private readonly ITestOutputHelper? _testOutputHelper;
+
+ protected TestDatabase TestDatabase { get; }
+ protected DatabaseContext Database { get; private set; } = default!;
+
+ protected TestClock Clock { get; } = new TestClock();
+ protected UserService UserService { get; private set; } = default!;
+
+ protected long AdminId { get; private set; }
+ protected long UserId { 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);
+
+ AdminId = await UserService.GetUserIdByUsernameAsync("admin");
+ UserId = await UserService.GetUserIdByUsernameAsync("user");
+
+ 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;
+ }
+ }
+}
diff --git a/BackEnd/Timeline.Tests/ServiceTests/User/RegisterCode/RegisterCodeServiceTest.cs b/BackEnd/Timeline.Tests/ServiceTests/User/RegisterCode/RegisterCodeServiceTest.cs new file mode 100644 index 00000000..6542696f --- /dev/null +++ b/BackEnd/Timeline.Tests/ServiceTests/User/RegisterCode/RegisterCodeServiceTest.cs @@ -0,0 +1,42 @@ +using System.Threading.Tasks; +using FluentAssertions; +using Timeline.Services.User.RegisterCode; +using Xunit; + +namespace Timeline.Tests.ServiceTests.User.RegisterCode +{ + public class RegisterCodeServiceTest : ServiceTestBase + { + private RegisterCodeService _registerCodeService = default!; + + protected override void OnInitialize() + { + _registerCodeService = new RegisterCodeService(Database); + } + + protected override void OnDispose() + { + _registerCodeService.Dispose(); + } + + [Fact] + public async Task Test() + { + var a = await _registerCodeService.GetCurrentCode(AdminId); + a.Should().BeNull(); + var b = await _registerCodeService.CreateNewCode(AdminId); + b.Should().NotBeNullOrEmpty(); + var c = await _registerCodeService.GetCurrentCode(AdminId); + c.Should().Be(b); + var d = await _registerCodeService.CreateNewCode(AdminId); + d.Should().NotBe(b); + var e = await _registerCodeService.GetCodeOwner(d); + e.Should().Be(AdminId); + var f = await _registerCodeService.GetCodeOwner(b); + f.Should().BeNull(); + var g = await _registerCodeService.GetCodeOwner(b, false); + g.Should().Be(AdminId); + } + } +} + |