aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline.Tests
diff options
context:
space:
mode:
Diffstat (limited to 'BackEnd/Timeline.Tests')
-rw-r--r--BackEnd/Timeline.Tests/Helpers/TestDatabase.cs13
-rw-r--r--BackEnd/Timeline.Tests/Services/DatabaseBasedTest.cs10
-rw-r--r--BackEnd/Timeline.Tests/Services/HighlightTimelineServiceTest.cs49
3 files changed, 66 insertions, 6 deletions
diff --git a/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs b/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs
index a71c2208..00164835 100644
--- a/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs
+++ b/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs
@@ -1,11 +1,14 @@
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
+using System;
using System.Threading.Tasks;
using Timeline.Entities;
using Timeline.Migrations;
using Timeline.Services;
using Xunit;
+using Xunit.Abstractions;
namespace Timeline.Tests.Helpers
{
@@ -54,12 +57,14 @@ namespace Timeline.Tests.Helpers
public SqliteConnection Connection { get; }
- public DatabaseContext CreateContext()
+ public DatabaseContext CreateContext(ITestOutputHelper? testOutputHelper = null)
{
- var options = new DbContextOptionsBuilder<DatabaseContext>()
- .UseSqlite(Connection).Options;
+ var optionsBuilder = new DbContextOptionsBuilder<DatabaseContext>()
+ .UseSqlite(Connection);
- return new DatabaseContext(options);
+ if (testOutputHelper != null) optionsBuilder.LogTo(testOutputHelper.WriteLine).EnableDetailedErrors().EnableSensitiveDataLogging();
+
+ return new DatabaseContext(optionsBuilder.Options);
}
}
}
diff --git a/BackEnd/Timeline.Tests/Services/DatabaseBasedTest.cs b/BackEnd/Timeline.Tests/Services/DatabaseBasedTest.cs
index 3bb6ebb5..90fb6463 100644
--- a/BackEnd/Timeline.Tests/Services/DatabaseBasedTest.cs
+++ b/BackEnd/Timeline.Tests/Services/DatabaseBasedTest.cs
@@ -2,6 +2,7 @@
using Timeline.Entities;
using Timeline.Tests.Helpers;
using Xunit;
+using Xunit.Abstractions;
namespace Timeline.Tests.Services
{
@@ -10,15 +11,20 @@ namespace Timeline.Tests.Services
protected TestDatabase TestDatabase { get; }
protected DatabaseContext Database { get; private set; } = default!;
- protected DatabaseBasedTest(bool databaseCreateUsers = true)
+ 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();
+ Database = TestDatabase.CreateContext(_testOutputHelper);
await OnDatabaseCreatedAsync();
OnDatabaseCreated();
}
diff --git a/BackEnd/Timeline.Tests/Services/HighlightTimelineServiceTest.cs b/BackEnd/Timeline.Tests/Services/HighlightTimelineServiceTest.cs
index 8ba26613..dca070c6 100644
--- a/BackEnd/Timeline.Tests/Services/HighlightTimelineServiceTest.cs
+++ b/BackEnd/Timeline.Tests/Services/HighlightTimelineServiceTest.cs
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Timeline.Services;
using Timeline.Tests.Helpers;
using Xunit;
+using Xunit.Abstractions;
namespace Timeline.Tests.Services
{
@@ -15,6 +16,12 @@ namespace Timeline.Tests.Services
private HighlightTimelineService _service = default!;
+ public HighlightTimelineServiceTest(ITestOutputHelper testOutputHelper)
+ : base(testOutputHelper)
+ {
+
+ }
+
protected override void OnDatabaseCreated()
{
_userService = new UserService(NullLogger<UserService>.Instance, Database, new PasswordService(), new UserPermissionService(Database), _clock);
@@ -39,5 +46,47 @@ namespace Timeline.Tests.Services
ht.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.AddHighlightTimeline("t1", userId);
+
+ await _timelineService.CreateTimeline("t2", userId);
+ await _service.AddHighlightTimeline("t2", userId);
+
+ var ht = await _service.GetHighlightTimelines();
+
+ ht.Should().HaveCount(2);
+ ht[0].Name.Should().Be("t1");
+ ht[1].Name.Should().Be("t2");
+ }
+
+ [Fact]
+ public async Task Multiple_Should_Work()
+ {
+ var userId = await _userService.GetUserIdByUsername("user");
+ await _timelineService.CreateTimeline("t1", userId);
+ await _service.AddHighlightTimeline("t1", userId);
+
+ await _timelineService.CreateTimeline("t2", userId);
+ await _service.AddHighlightTimeline("t2", userId);
+
+ await _timelineService.CreateTimeline("t3", userId);
+ await _service.AddHighlightTimeline("t3", userId);
+
+ await _service.MoveHighlightTimeline("t3", 2);
+ (await _service.GetHighlightTimelines())[1].Name.Should().Be("t3");
+
+ await _service.MoveHighlightTimeline("t1", 3);
+ (await _service.GetHighlightTimelines())[2].Name.Should().Be("t1");
+
+ await _service.RemoveHighlightTimeline("t2", userId);
+ await _service.RemoveHighlightTimeline("t1", userId);
+ await _service.RemoveHighlightTimeline("t3", userId);
+ (await _service.GetHighlightTimelines()).Should().BeEmpty();
+ }
}
}