70 lines
2.1 KiB
JavaScript
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);
|
|
});
|