From 69d56e560fc280e9a570e858c29878514b1b5575 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 3 Jan 2021 19:07:35 +0800 Subject: fix: Fix a critical bug in bookmark timeline service. It used to create two entry with the same timeline. Now it will not create a duplicate one. --- .../Timeline.Tests/Services/BookmarkTimelineServiceTest.cs | 13 +++++++++++++ BackEnd/Timeline/Services/BookmarkTimelineService.cs | 5 +++++ 2 files changed, 18 insertions(+) (limited to 'BackEnd') diff --git a/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs b/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs index 1b8bff63..849936ec 100644 --- a/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs +++ b/BackEnd/Timeline.Tests/Services/BookmarkTimelineServiceTest.cs @@ -85,5 +85,18 @@ namespace Timeline.Tests.Services await _service.RemoveBookmark(userId, "t3"); (await _service.GetBookmarks(userId)).Should().BeEmpty(); } + + [Fact] + public async Task AddExist_Should_DoNothing() + { + var userId = await _userService.GetUserIdByUsername("user"); + + await _timelineService.CreateTimeline("t", userId); + + await _service.AddBookmark(userId, "t"); + await _service.AddBookmark(userId, "t"); + + (await _service.GetBookmarks(userId)).Should().HaveCount(1); + } } } diff --git a/BackEnd/Timeline/Services/BookmarkTimelineService.cs b/BackEnd/Timeline/Services/BookmarkTimelineService.cs index 09438193..2ec3af62 100644 --- a/BackEnd/Timeline/Services/BookmarkTimelineService.cs +++ b/BackEnd/Timeline/Services/BookmarkTimelineService.cs @@ -94,6 +94,11 @@ namespace Timeline.Services var timelineId = await _timelineService.GetTimelineIdByName(timelineName); + if (await _database.BookmarkTimelines.SingleOrDefaultAsync(t => t.TimelineId == timelineId) is not null) + { + return; + } + _database.BookmarkTimelines.Add(new BookmarkTimelineEntity { TimelineId = timelineId, -- cgit v1.2.3