diff options
Diffstat (limited to 'BackEnd/Timeline.Tests/Services')
5 files changed, 124 insertions, 59 deletions
diff --git a/BackEnd/Timeline.Tests/Services/DatabaseBasedTest.cs b/BackEnd/Timeline.Tests/Services/DatabaseBasedTest.cs deleted file mode 100644 index 90fb6463..00000000 --- a/BackEnd/Timeline.Tests/Services/DatabaseBasedTest.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.Threading.Tasks;
-using Timeline.Entities;
-using Timeline.Tests.Helpers;
-using Xunit;
-using Xunit.Abstractions;
-
-namespace Timeline.Tests.Services
-{
- public abstract class DatabaseBasedTest : IAsyncLifetime
- {
- protected TestDatabase TestDatabase { get; }
- protected DatabaseContext Database { get; private set; } = default!;
-
- private readonly ITestOutputHelper? _testOutputHelper;
-
- protected DatabaseBasedTest(bool databaseCreateUsers = true, ITestOutputHelper? testOutputHelper = null)
- {
- _testOutputHelper = testOutputHelper;
- TestDatabase = new TestDatabase(databaseCreateUsers);
- }
-
- protected DatabaseBasedTest(ITestOutputHelper? testOutputHelper) : this(true, testOutputHelper) { }
-
- public async Task InitializeAsync()
- {
- await TestDatabase.InitializeAsync();
- Database = TestDatabase.CreateContext(_testOutputHelper);
- await OnDatabaseCreatedAsync();
- OnDatabaseCreated();
- }
-
- public async Task DisposeAsync()
- {
- BeforeDatabaseDestroy();
- await BeforeDatabaseDestroyAsync();
- await Database.DisposeAsync();
- await TestDatabase.DisposeAsync();
- }
-
-
- protected virtual void OnDatabaseCreated() { }
- protected virtual void BeforeDatabaseDestroy() { }
-
-
- protected virtual Task OnDatabaseCreatedAsync()
- {
- return Task.CompletedTask;
- }
-
- protected virtual Task BeforeDatabaseDestroyAsync()
- {
- return Task.CompletedTask;
- }
- }
-}
diff --git a/BackEnd/Timeline.Tests/Services/SearchServiceTest.cs b/BackEnd/Timeline.Tests/Services/SearchServiceTest.cs new file mode 100644 index 00000000..968352c0 --- /dev/null +++ b/BackEnd/Timeline.Tests/Services/SearchServiceTest.cs @@ -0,0 +1,49 @@ +using FluentAssertions;
+using System.Threading.Tasks;
+using Timeline.Services;
+using Xunit;
+
+namespace Timeline.Tests.Services
+{
+ public class SearchServiceTest : ServiceTestBase
+ {
+ private SearchService _service = default!;
+
+ protected override void OnInitialize()
+ {
+ _service = new SearchService(Database);
+ }
+
+ [Fact]
+ public async Task TimelineSearch_Should_Work()
+ {
+ await TimelineService.CreateTimeline("hahaha", UserId);
+ var t2 = await TimelineService.CreateTimeline("bababa", UserId);
+ await TimelineService.ChangeProperty(t2.Id, new TimelineChangePropertyParams { Title = "hahaha" });
+ await TimelineService.CreateTimeline("bbbbbb", UserId);
+
+ var searchResult = await _service.SearchTimeline("hah");
+ searchResult.Items.Should().HaveCount(2);
+ searchResult.Items[0].Item.Name.Should().Be("hahaha");
+ searchResult.Items[0].Score.Should().Be(2);
+ searchResult.Items[1].Item.Name.Should().Be("bababa");
+ searchResult.Items[1].Score.Should().Be(1);
+ }
+
+ [Fact]
+ public async Task UserSearch_Should_Work()
+ {
+ await UserService.CreateUser("hahaha", "p");
+ var u2 = await UserService.CreateUser("bababa", "p");
+ await UserService.ModifyUser(u2.Id, new ModifyUserParams { Nickname = "hahaha" });
+ await UserService.CreateUser("bbbbbb", "p");
+
+ var searchResult = await _service.SearchUser("hah");
+ searchResult.Items.Should().HaveCount(2);
+ searchResult.Items[0].Item.Username.Should().Be("hahaha");
+ searchResult.Items[0].Score.Should().Be(2);
+ searchResult.Items[1].Item.Username.Should().Be("bababa");
+ searchResult.Items[1].Score.Should().Be(1);
+ }
+ }
+}
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;
+ }
+ }
+}
diff --git a/BackEnd/Timeline.Tests/Services/UserDeleteServiceTest.cs b/BackEnd/Timeline.Tests/Services/UserDeleteServiceTest.cs index 59c0a9af..10014d2b 100644 --- a/BackEnd/Timeline.Tests/Services/UserDeleteServiceTest.cs +++ b/BackEnd/Timeline.Tests/Services/UserDeleteServiceTest.cs @@ -8,12 +8,12 @@ using Xunit; namespace Timeline.Tests.Services
{
- public class UserDeleteServiceTest : DatabaseBasedTest
+ public class UserDeleteServiceTest : ServiceTestBase
{
private readonly Mock<ITimelinePostService> _mockTimelinePostService = new Mock<ITimelinePostService>();
private UserDeleteService _service = default!;
- protected override void OnDatabaseCreated()
+ protected override void OnInitialize()
{
_service = new UserDeleteService(NullLogger<UserDeleteService>.Instance, Database, _mockTimelinePostService.Object);
}
diff --git a/BackEnd/Timeline.Tests/Services/UserPermissionServiceTest.cs b/BackEnd/Timeline.Tests/Services/UserPermissionServiceTest.cs index f20a7d62..0c43c025 100644 --- a/BackEnd/Timeline.Tests/Services/UserPermissionServiceTest.cs +++ b/BackEnd/Timeline.Tests/Services/UserPermissionServiceTest.cs @@ -7,7 +7,7 @@ using Xunit; namespace Timeline.Tests.Services
{
- public class UserPermissionServiceTest : DatabaseBasedTest
+ public class UserPermissionServiceTest : ServiceTestBase
{
private UserPermissionService _service = default!;
@@ -16,7 +16,7 @@ namespace Timeline.Tests.Services }
- protected override void OnDatabaseCreated()
+ protected override void OnInitialize()
{
_service = new UserPermissionService(Database);
}
|