56 lines
2.1 KiB
TypeScript
56 lines
2.1 KiB
TypeScript
import { describe, it, before } from 'node:test';
|
|
import assert from 'node:assert';
|
|
import React from 'react';
|
|
|
|
// Shim React for the test environment
|
|
before(() => {
|
|
// @ts-ignore
|
|
global.React = React;
|
|
});
|
|
|
|
describe('AgentAvatar Component Contract', () => {
|
|
it('exports AgentAvatar component', async () => {
|
|
const mod = await import('../../../src/components/shared/agent-avatar');
|
|
assert.ok(mod.AgentAvatar, 'AgentAvatar should be exported');
|
|
});
|
|
});
|
|
|
|
describe('AgentAvatar Role Styling', () => {
|
|
it('applies correct role color class for "ui" role', async () => {
|
|
const { AgentAvatar } = await import('../../../src/components/shared/agent-avatar');
|
|
// @ts-ignore - role prop not yet implemented
|
|
const element = AgentAvatar({ name: 'Test', status: 'active', role: 'ui' }) as any;
|
|
|
|
const className = element.props.className || '';
|
|
assert.ok(
|
|
className.includes('border-l-[3px]') && className.includes('border-l-[var(--agent-role-ui)]'),
|
|
`Expected role-colored left border for ui, but got: ${className}`
|
|
);
|
|
});
|
|
|
|
it('applies correct role color class for "orchestrator" role', async () => {
|
|
const { AgentAvatar } = await import('../../../src/components/shared/agent-avatar');
|
|
// @ts-ignore - role prop not yet implemented
|
|
const element = AgentAvatar({ name: 'Test', status: 'active', role: 'orchestrator' }) as any;
|
|
|
|
const className = element.props.className || '';
|
|
assert.ok(
|
|
className.includes('border-l-[var(--agent-role-orchestrator)]'),
|
|
`Expected role-colored left border for orchestrator, but got: ${className}`
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('AgentAvatar ZFC States', () => {
|
|
it('applies working pulse glow', async () => {
|
|
const { AgentAvatar } = await import('../../../src/components/shared/agent-avatar');
|
|
// @ts-ignore - working status not yet implemented
|
|
const element = AgentAvatar({ name: 'Test', status: 'working' }) as any;
|
|
|
|
const className = element.props.className || '';
|
|
assert.ok(
|
|
className.includes('animate-pulse') || className.includes('shadow-[0_0_12px_rgba(124,185,122,0.4)]'),
|
|
`Expected working pulse glow, but got: ${className}`
|
|
);
|
|
});
|
|
});
|