agent-ecosystem/test/shared/utils/teamMemberColors.test.ts

45 lines
1.6 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { getMemberColorByName, TEAM_LEAD_MEMBER_COLOR_ID } from '@shared/constants/memberColors';
import {
buildTeamMemberColorMap,
resolveTeamLeadColorName,
resolveTeamMemberColorName,
} from '@shared/utils/teamMemberColors';
describe('buildTeamMemberColorMap', () => {
it('assigns the high-contrast palette order to active teammates', () => {
const members = [{ name: 'alice' }, { name: 'tom' }, { name: 'bob' }, { name: 'atlas' }];
const colorMap = buildTeamMemberColorMap(members, { preferProvidedColors: false });
expect(colorMap.get('alice')).toBe('blue');
expect(colorMap.get('tom')).toBe('saffron');
expect(colorMap.get('bob')).toBe('turquoise');
expect(colorMap.get('atlas')).toBe('brick');
});
it('does not let the lead consume the teammate palette order', () => {
const members = [
{ name: 'team-lead', agentType: 'team-lead' as const },
{ name: 'alice' },
{ name: 'tom' },
];
const colorMap = buildTeamMemberColorMap(members, { preferProvidedColors: false });
expect(colorMap.get('team-lead')).toBeDefined();
expect(colorMap.get('alice')).toBe('blue');
expect(colorMap.get('tom')).toBe('saffron');
});
it('resolves standalone lead previews through the same shared roster pipeline', () => {
expect(resolveTeamLeadColorName()).toBe(
resolveTeamMemberColorName(
{ name: TEAM_LEAD_MEMBER_COLOR_ID, agentType: 'team-lead' },
{ preferProvidedColors: false }
)
);
expect(resolveTeamLeadColorName()).not.toBe(getMemberColorByName('lead'));
});
});