Files
manage/frontend/tests/userState.test.mjs
2026-05-04 13:50:53 +02:00

132 lines
3.1 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
mergeUsersWithActivity,
resolveUserSelection,
} from "../src/userState.js";
test("mergeUsersWithActivity attaches session activity to user state", () => {
const merged = mergeUsersWithActivity(
[
{
jellyfin_id: "jf1",
username: "alex",
display_name: "alex",
email: "alex@example.com",
email_source: "jellyseerr:user",
avatar: "",
avatar_source: "",
contactable: true,
source: "jellyfin",
source_summary: "name=jellyfin",
name_source: "jellyfin",
access_source: "",
jellyseerr_user_id: 7,
jellyseerr_username: "alex",
user_type: 3,
user_type_label: "jellyfin",
role: "admin",
permissions: 10,
permissions_label: "admin, manage_users",
request_count: 3,
},
],
[
{
user: "alex",
title: "Test Movie",
type: "Movie",
state: "playing",
transcoding: "yes",
transcoding_type: "audio",
device: "Chrome",
session_id: "sess1",
},
],
);
assert.equal(merged[0].activity_count, 1);
assert.equal(merged[0].activity_active_count, 1);
assert.equal(merged[0].activity_label, "Playing");
assert.equal(merged[0].activity.summary, "1 session · 1 active");
assert.equal(merged[0].activity.sessions[0].title, "Test Movie");
});
test("mergeUsersWithActivity marks paused sessions as paused", () => {
const merged = mergeUsersWithActivity(
[
{
jellyfin_id: "jf2",
username: "sam",
display_name: "Sam",
email: "sam@example.com",
email_source: "jellyseerr:user",
avatar: "",
avatar_source: "",
contactable: true,
source: "jellyfin",
source_summary: "name=jellyfin",
name_source: "jellyfin",
access_source: "",
jellyseerr_user_id: 8,
jellyseerr_username: "sam",
user_type: 3,
user_type_label: "jellyfin",
role: "user",
permissions: 0,
permissions_label: "",
request_count: 0,
},
],
[
{
user: "sam",
title: "Paused Episode",
type: "Episode",
state: "paused",
transcoding: "no",
transcoding_type: "",
device: "Firefox",
session_id: "sess2",
},
],
);
assert.equal(merged[0].activity_label, "Paused");
assert.equal(merged[0].activity.summary, "1 session · 1 active");
});
test("resolveUserSelection matches id username and display name", () => {
const users = mergeUsersWithActivity(
[
{
jellyfin_id: "jf1",
username: "alex",
display_name: "Alexander",
email: "alex@example.com",
email_source: "jellyseerr:user",
avatar: "",
avatar_source: "",
contactable: true,
source: "jellyfin",
source_summary: "name=jellyfin",
name_source: "jellyfin",
access_source: "",
jellyseerr_user_id: 7,
jellyseerr_username: "alex",
user_type: 3,
user_type_label: "jellyfin",
role: "admin",
permissions: 10,
permissions_label: "admin, manage_users",
request_count: 3,
},
],
[],
);
assert.equal(resolveUserSelection(users, "jf1")?.username, "alex");
assert.equal(resolveUserSelection(users, "alex")?.jellyfin_id, "jf1");
assert.equal(resolveUserSelection(users, "Alexander")?.jellyfin_id, "jf1");
});