Initial commit
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import React from 'react'
|
||||
import { renderToStaticMarkup } from 'react-dom/server'
|
||||
|
||||
import { TaskHeaderBar } from './TaskHeaderBar'
|
||||
import type { Session } from '../types/kanban'
|
||||
import type { AgentInfo } from '../types/visual'
|
||||
|
||||
const now = Date.now()
|
||||
|
||||
const nexusAgent: AgentInfo = {
|
||||
agent_id: 'nexus',
|
||||
name: 'NEXUS Executive Brief',
|
||||
description: 'Executive briefing agent',
|
||||
specialties: [],
|
||||
status: 'idle',
|
||||
appearance: { palette: 0, hue_shift: 0, seat_zone: 'north' },
|
||||
}
|
||||
|
||||
function makeSession(overrides: Partial<Session>): Session {
|
||||
return {
|
||||
projectId: 'project-a',
|
||||
taskId: 'task-a',
|
||||
channelId: 'channel-a',
|
||||
execMode: 'task',
|
||||
title: 'NEXUS Executive Brief',
|
||||
status: 'running',
|
||||
columnId: 'in-progress',
|
||||
assigneeIds: ['nexus'],
|
||||
priority: null,
|
||||
tags: [],
|
||||
progressLog: [],
|
||||
createdAt: now - 60_000,
|
||||
updatedAt: now,
|
||||
messageCount: 1,
|
||||
...overrides,
|
||||
}
|
||||
}
|
||||
|
||||
const companyMarkup = renderToStaticMarkup(
|
||||
React.createElement(TaskHeaderBar, {
|
||||
session: makeSession({
|
||||
execMode: 'org',
|
||||
isCompanyRuntime: true,
|
||||
workItemRoleName: 'Chief Analyst',
|
||||
employeeAssignment: { name: 'NEXUS Executive Brief', employeeId: 'employee-nexus' },
|
||||
selectedExecutionAgent: 'codex',
|
||||
displayTool: 'opc-collab delegate_work',
|
||||
currentTool: undefined,
|
||||
}),
|
||||
agents: [nexusAgent],
|
||||
onTitleChange: () => undefined,
|
||||
}),
|
||||
)
|
||||
|
||||
assert.match(companyMarkup, /Chief Analyst/, 'company header should keep the role pill')
|
||||
assert.match(companyMarkup, /NEXUS Executive Brief/, 'company header should keep the employee label')
|
||||
assert.match(companyMarkup, /Codex/, 'company header should keep the execution agent label')
|
||||
assert.match(companyMarkup, /opc-collab delegate_work/, 'company header should show stable displayTool while still running')
|
||||
assert.doesNotMatch(
|
||||
companyMarkup,
|
||||
/task-header-avatar/,
|
||||
'company header must not render a duplicate assignee initial avatar',
|
||||
)
|
||||
|
||||
const taskMarkup = renderToStaticMarkup(
|
||||
React.createElement(TaskHeaderBar, {
|
||||
session: makeSession({ execMode: 'task' }),
|
||||
agents: [nexusAgent],
|
||||
onTitleChange: () => undefined,
|
||||
}),
|
||||
)
|
||||
|
||||
assert.match(
|
||||
taskMarkup,
|
||||
/task-header-avatar/,
|
||||
'plain task headers should keep assignee initial avatars',
|
||||
)
|
||||
|
||||
console.log('TaskHeaderBar.test.tsx: OK (company header hides duplicate avatar and keeps stable tool label)')
|
||||
Reference in New Issue
Block a user