agent-ecosystem/test/renderer/components/team/members/CurrentTaskIndicator.test.ts

77 lines
2.3 KiB
TypeScript

import React, { act } from 'react';
import { createRoot } from 'react-dom/client';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { CurrentTaskIndicator } from '@renderer/components/team/members/CurrentTaskIndicator';
import type { TeamTaskWithKanban } from '@shared/types';
const task: TeamTaskWithKanban = {
id: 'task-1',
displayId: '9d1915a7',
subject: 'Полный аудит актуальности документации и связанных onboarding заметок',
status: 'in_progress',
} as unknown as TeamTaskWithKanban;
describe('CurrentTaskIndicator', () => {
afterEach(() => {
document.body.innerHTML = '';
});
it('uses all available width for the task pill without early subject truncation', async () => {
vi.stubGlobal('IS_REACT_ACT_ENVIRONMENT', true);
const host = document.createElement('div');
document.body.appendChild(host);
const root = createRoot(host);
await act(async () => {
root.render(
React.createElement(CurrentTaskIndicator, {
task,
borderColor: '#3b82f6',
})
);
await Promise.resolve();
});
const wrapper = host.firstElementChild as HTMLElement | null;
const button = host.querySelector('button');
expect(wrapper?.className).toContain('flex-1');
expect(button?.className).toContain('flex-1');
expect(button?.className).toContain('text-left');
expect(button?.textContent).toContain(task.subject);
expect(button?.style.border).toBe('');
await act(async () => {
root.unmount();
await Promise.resolve();
});
});
it('still supports an explicit subject ceiling when a compact caller requests it', async () => {
vi.stubGlobal('IS_REACT_ACT_ENVIRONMENT', true);
const host = document.createElement('div');
document.body.appendChild(host);
const root = createRoot(host);
await act(async () => {
root.render(
React.createElement(CurrentTaskIndicator, {
task,
borderColor: '#3b82f6',
maxSubjectLength: 12,
})
);
await Promise.resolve();
});
const button = host.querySelector('button');
expect(button?.textContent).toContain('Полный аудит…');
await act(async () => {
root.unmount();
await Promise.resolve();
});
});
});