aboutsummaryrefslogtreecommitdiff
path: root/tests/Jellyfin.Server.Implementations.Tests/Users/DisplayPreferencesManagerTests.cs
blob: 4110eb513f850114e76e26f8136c74c131b888ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using Jellyfin.Database.Implementations.Entities;
using Jellyfin.Server.Implementations.Tests.Item;
using Jellyfin.Server.Implementations.Users;
using Xunit;

namespace Jellyfin.Server.Implementations.Tests.Users;

/// <summary>
/// Item display preferences are looked up by the item they belong to, so they have to be stored under it as well:
/// a row stored under any other item is never found again, and every later request stores another one.
/// </summary>
public sealed class DisplayPreferencesManagerTests : SqliteDbTestFixture
{
    private const string Client = "client";

    private static readonly Guid _userId = Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa");
    private static readonly Guid _itemId = Guid.Parse("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb");

    private readonly DisplayPreferencesManager _manager;

    public DisplayPreferencesManagerTests()
    {
        _manager = new DisplayPreferencesManager(CreateDbContextFactory());

        using var context = CreateDbContext();
        context.Users.Add(new User("user", "auth-provider", "reset-provider") { Id = _userId });
        context.SaveChanges();
    }

    [Fact]
    public void GetItemDisplayPreferences_NewItem_StoresThePreferencesUnderThatItem()
    {
        var preferences = _manager.GetItemDisplayPreferences(_userId, _itemId, Client);

        Assert.Equal(_itemId, preferences.ItemId);

        using var context = CreateDbContext();
        Assert.Equal(_itemId, Assert.Single(context.ItemDisplayPreferences).ItemId);
    }

    [Fact]
    public void GetItemDisplayPreferences_SameItemTwice_ReturnsTheStoredPreferences()
    {
        var first = _manager.GetItemDisplayPreferences(_userId, _itemId, Client);
        var second = _manager.GetItemDisplayPreferences(_userId, _itemId, Client);

        Assert.Equal(first.Id, second.Id);

        using var context = CreateDbContext();
        Assert.Single(context.ItemDisplayPreferences);
    }
}