aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-12-18 22:40:22 +0800
committercrupest <crupest@outlook.com>2020-12-18 22:40:22 +0800
commitb102ed3edf1330e77240708afb59ec8f91d67b41 (patch)
treed9d0006436c8edd114048a082683a9c2b25478fd /BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs
parent61630cf39af0f74f102f772ed0f3ca4a73731e11 (diff)
downloadtimeline-b102ed3edf1330e77240708afb59ec8f91d67b41.tar.gz
timeline-b102ed3edf1330e77240708afb59ec8f91d67b41.tar.bz2
timeline-b102ed3edf1330e77240708afb59ec8f91d67b41.zip
feat: Bookmark timeline service unit tests.
Diffstat (limited to 'BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs')
-rw-r--r--BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs89
1 files changed, 89 insertions, 0 deletions
diff --git a/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs b/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs
new file mode 100644
index 00000000..1b8bff63
--- /dev/null
+++ b/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs
@@ -0,0 +1,89 @@
+using FluentAssertions;
+using Microsoft.Extensions.Logging.Abstractions;
+using System.Threading.Tasks;
+using Timeline.Services;
+using Timeline.Tests.Helpers;
+using Xunit;
+
+namespace Timeline.Tests.Services
+{
+ public class BookmarkTimelineServiceTest : DatabaseBasedTest
+ {
+ private BookmarkTimelineService _service = default!;
+ private UserService _userService = default!;
+ private TimelineService _timelineService = default!;
+
+ protected override void OnDatabaseCreated()
+ {
+ var clock = new TestClock();
+ _userService = new UserService(NullLogger<UserService>.Instance, Database, new PasswordService(), new UserPermissionService(Database), clock);
+ _timelineService = new TimelineService(Database, _userService, clock);
+ _service = new BookmarkTimelineService(Database, _userService, _timelineService);
+ }
+
+ [Fact]
+ public async Task Should_Work()
+ {
+ var userId = await _userService.GetUserIdByUsername("user");
+
+ {
+ var b = await _service.GetBookmarks(userId);
+ b.Should().BeEmpty();
+ }
+
+ await _timelineService.CreateTimeline("tl", userId);
+ await _service.AddBookmark(userId, "tl");
+
+ {
+ var b = await _service.GetBookmarks(userId);
+ b.Should().HaveCount(1).And.BeEquivalentTo(await _timelineService.GetTimeline("tl"));
+ }
+ }
+
+ [Fact]
+ public async Task NewOne_Should_BeAtLast()
+ {
+ var userId = await _userService.GetUserIdByUsername("user");
+ await _timelineService.CreateTimeline("t1", userId);
+ await _service.AddBookmark(userId, "t1");
+
+ await _timelineService.CreateTimeline("t2", userId);
+ await _service.AddBookmark(userId, "t2");
+
+ var b = await _service.GetBookmarks(userId);
+
+ b.Should().HaveCount(2);
+ b[0].Name.Should().Be("t1");
+ b[1].Name.Should().Be("t2");
+ }
+
+ [Fact]
+ public async Task Multiple_Should_Work()
+ {
+ var userId = await _userService.GetUserIdByUsername("user");
+
+ // make timeline id not same as entity id.
+ await _timelineService.CreateTimeline("t0", userId);
+
+ await _timelineService.CreateTimeline("t1", userId);
+ await _service.AddBookmark(userId, "t1");
+
+ await _timelineService.CreateTimeline("t2", userId);
+ await _service.AddBookmark(userId, "t2");
+
+ await _timelineService.CreateTimeline("t3", userId);
+ await _service.AddBookmark(userId, "t3");
+
+ await _service.MoveBookmark(userId, "t3", 2);
+ (await _service.GetBookmarks(userId))[1].Name.Should().Be("t3");
+
+ await _service.MoveBookmark(userId, "t1", 3);
+ (await _service.GetBookmarks(userId))[2].Name.Should().Be("t1");
+
+ await _service.RemoveBookmark(userId, "t2");
+ await _service.RemoveBookmark(userId, "t1");
+ await _service.RemoveBookmark(userId, "t3");
+ (await _service.GetBookmarks(userId)).Should().BeEmpty();
+ }
+ }
+}