aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-12-19 20:12:00 +0800
committerGitHub <noreply@github.com>2020-12-19 20:12:00 +0800
commit4b3ae3edd9e8aceac5ff26ef137d2a8d686fe305 (patch)
tree8dba18b84d996f1396423788525390fdde301210 /BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs
parentebc2892d1546b8b59bd1c9adabe8a96a2e2a0754 (diff)
parent682b5a076c967f9f38dd32c0cffd4010548bd400 (diff)
downloadtimeline-4b3ae3edd9e8aceac5ff26ef137d2a8d686fe305.tar.gz
timeline-4b3ae3edd9e8aceac5ff26ef137d2a8d686fe305.tar.bz2
timeline-4b3ae3edd9e8aceac5ff26ef137d2a8d686fe305.zip
Merge pull request #194 from crupest/bookmark-timeline
Bookmark timeline.
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();
+ }
+ }
+}