Show persistent timestamps for operation and teacher messages
This commit is contained in:
@@ -11,6 +11,28 @@ vi.mock('@/lib/coding-attachments', () => ({
|
||||
}));
|
||||
|
||||
describe('CodingConversationTimeline', () => {
|
||||
it('shows stable timestamps beneath both sides without changing message content', async () => {
|
||||
const { codingConversationStore } = await import('@/stores/coding-conversations');
|
||||
const { CodingConversationTimeline } = await import('@/pages/Chat/CodingConversationTimeline');
|
||||
const snapshot = createProductSnapshot('message-times', 1);
|
||||
snapshot.run = { status: 'idle' };
|
||||
const sent = Date.parse('2026-09-28T08:01:02Z'), finished = sent + 40000;
|
||||
snapshot.nodes = [
|
||||
{ kind: 'message', id: 'u', role: 'user', status: 'complete', timestamp: sent, blocks: [{ kind: 'text', id: 'ut', status: 'complete', text: '时间问题' }] },
|
||||
{ kind: 'message', id: 'a', role: 'assistant', status: 'complete', timestamp: finished, blocks: [{ kind: 'text', id: 'at', status: 'complete', text: '时间回答' }] },
|
||||
];
|
||||
codingConversationStore.getState().primeConversation(snapshot);
|
||||
const view = render(<CodingConversationTimeline conversationId="message-times" />);
|
||||
const userTime = view.container.querySelector('[data-node-id="u"] time');
|
||||
const agentTime = view.container.querySelector('[data-node-id="a"] time');
|
||||
expect(userTime).toHaveAttribute('datetime', new Date(sent).toISOString());
|
||||
expect(userTime).toHaveClass('text-right');
|
||||
expect(agentTime).toHaveAttribute('datetime', new Date(finished).toISOString());
|
||||
act(() => codingConversationStore.getState().primeConversation(structuredClone(snapshot)));
|
||||
expect(view.container.querySelector('[data-node-id="a"] time')).toHaveAttribute('datetime', new Date(finished).toISOString());
|
||||
expect(screen.getByText('时间回答')).toBeVisible();
|
||||
});
|
||||
|
||||
it('gives the failed hidden work action one login recovery and removes it when work is ready', async () => {
|
||||
const { codingConversationStore } = await import('@/stores/coding-conversations');
|
||||
const { CodingConversationTimeline } = await import('@/pages/Chat/CodingConversationTimeline');
|
||||
|
||||
Reference in New Issue
Block a user