mirror of
https://github.com/Shik3i/KoalaSync.git
synced 2026-08-28 19:47:25 +00:00
66 lines
3.1 KiB
JavaScript
66 lines
3.1 KiB
JavaScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
TITLE_PRIVACY_MODES,
|
|
applyTitlePrivacyToPayload,
|
|
normalizeSendTabTitle,
|
|
normalizeTabTitle,
|
|
normalizeTitlePrivacyMode,
|
|
sanitizeSharedTitle,
|
|
sanitizeTabTitle
|
|
} from './title-privacy.js';
|
|
|
|
describe('title privacy', () => {
|
|
it('normalizes settings and tab notification prefixes', () => {
|
|
expect(normalizeTitlePrivacyMode(undefined)).toBe(TITLE_PRIVACY_MODES.FULL);
|
|
expect(normalizeTitlePrivacyMode('unknown')).toBe(TITLE_PRIVACY_MODES.FULL);
|
|
expect(normalizeTitlePrivacyMode(TITLE_PRIVACY_MODES.HIDDEN)).toBe(TITLE_PRIVACY_MODES.HIDDEN);
|
|
expect(normalizeSendTabTitle(undefined, TITLE_PRIVACY_MODES.FULL)).toBe(true);
|
|
expect(normalizeSendTabTitle(undefined, TITLE_PRIVACY_MODES.EPISODE)).toBe(false);
|
|
expect(normalizeSendTabTitle(true, TITLE_PRIVACY_MODES.HIDDEN)).toBe(true);
|
|
expect(normalizeSendTabTitle(false, TITLE_PRIVACY_MODES.FULL)).toBe(false);
|
|
expect(normalizeTabTitle('(12) Testvideo - YouTube')).toBe('Testvideo - YouTube');
|
|
expect(normalizeTabTitle('[999+] Testvideo - YouTube')).toBe('Testvideo - YouTube');
|
|
expect(normalizeTabTitle('(500) Days of Summer')).toBe('Days of Summer');
|
|
for (const title of ['[7] Testvideo', '(99+) Testvideo', '(999+) Testvideo', '(101) Testvideo', '[101] Testvideo']) {
|
|
expect(normalizeTabTitle(title)).toBe('Testvideo');
|
|
}
|
|
expect(normalizeTabTitle(null)).toBeNull();
|
|
expect(normalizeTabTitle(' ')).toBeNull();
|
|
expect(sanitizeTabTitle('', true)).toBeNull();
|
|
});
|
|
|
|
it('keeps tab-title and media-title privacy independent', () => {
|
|
expect(sanitizeTabTitle('(12) Private Tab', true)).toBe('Private Tab');
|
|
expect(sanitizeTabTitle('Private Tab', false)).toBeNull();
|
|
expect(sanitizeSharedTitle('Example Movie', 'full')).toBe('Example Movie');
|
|
expect(sanitizeSharedTitle('', 'full')).toBeNull();
|
|
expect(sanitizeSharedTitle(null, 'full')).toBeNull();
|
|
expect(sanitizeSharedTitle('Show Name - S01/E04 - Title', 'episode')).toBe('S01E04');
|
|
expect(sanitizeSharedTitle('Folge 7 - Private Server', 'episode')).toBe('EP007');
|
|
expect(sanitizeSharedTitle('Example Movie', 'episode')).toBeNull();
|
|
expect(sanitizeSharedTitle('Show Name - S01E04', 'hidden')).toBeNull();
|
|
});
|
|
|
|
it('rewrites only present media keys without mutating the input', () => {
|
|
const input = {
|
|
tabTitle: 'Private Tab',
|
|
mediaTitle: 'Private Media',
|
|
expectedTitle: 'S01E04',
|
|
title: 'S01E04',
|
|
currentTime: 42
|
|
};
|
|
expect(applyTitlePrivacyToPayload(input, 'hidden')).toEqual({
|
|
tabTitle: 'Private Tab',
|
|
mediaTitle: null,
|
|
expectedTitle: null,
|
|
title: null,
|
|
currentTime: 42
|
|
});
|
|
expect(input.mediaTitle).toBe('Private Media');
|
|
expect(applyTitlePrivacyToPayload({ tabTitle: 'Private Tab', status: 'heartbeat' }, 'episode')).toEqual({
|
|
tabTitle: 'Private Tab',
|
|
status: 'heartbeat'
|
|
});
|
|
});
|
|
});
|