Files
2026-07-13 12:34:04 +08:00

70 lines
2.1 KiB
JavaScript

'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const {
addSessionGroup,
assignTabToSessionGroup,
clearTabSessionGroup,
pruneSessionGroups,
renameSessionGroup,
} = require('./session-groups.js');
test('addSessionGroup creates a named group and keeps names unique', () => {
const initialState = { groups: [], assignments: {} };
const { state, group } = addSessionGroup(initialState, 'Work');
assert.equal(group.name, 'Work');
assert.equal(state.groups.length, 1);
assert.throws(() => addSessionGroup(state, 'Work'), /already exists/i);
});
test('assignTabToSessionGroup stores a single active assignment per tab', () => {
const initialState = {
groups: [{ id: 'g1', name: 'Work', createdAt: '2026-04-16T00:00:00.000Z' }],
assignments: {},
};
const assigned = assignTabToSessionGroup(initialState, 101, 'g1');
assert.equal(assigned.assignments['101'], 'g1');
const cleared = clearTabSessionGroup(assigned, 101);
assert.equal(cleared.assignments['101'], undefined);
});
test('pruneSessionGroups removes closed tabs and empty groups', () => {
const initialState = {
groups: [
{ id: 'g1', name: 'Work', createdAt: '2026-04-16T00:00:00.000Z' },
{ id: 'g2', name: 'Research', createdAt: '2026-04-16T00:01:00.000Z' },
],
assignments: {
'101': 'g1',
'102': 'g2',
},
};
const pruned = pruneSessionGroups(initialState, [101]);
assert.deepEqual(pruned.assignments, { '101': 'g1' });
assert.deepEqual(pruned.groups.map(group => group.id), ['g1']);
});
test('renameSessionGroup updates the target name and preserves uniqueness', () => {
const initialState = {
groups: [
{ id: 'g1', name: 'Work', createdAt: '2026-04-16T00:00:00.000Z' },
{ id: 'g2', name: 'Research', createdAt: '2026-04-16T00:01:00.000Z' },
],
assignments: {
'101': 'g1',
},
};
const renamed = renameSessionGroup(initialState, 'g1', 'Reading desk');
assert.equal(renamed.groups[0].name, 'Reading desk');
assert.equal(renamed.assignments['101'], 'g1');
assert.throws(() => renameSessionGroup(renamed, 'g1', 'Research'), /already exists/i);
});