agent-ecosystem/test/renderer/utils/sessionTitleParser.test.ts
iliya 46355d87df refactor(session): improve session label formatting and enhance session item display
- Replaced direct access to session.firstMessage with formatSessionLabel for consistent label formatting across components.
- Updated SessionItem, TeamSessionsSection, and KanbanFilterPopover to utilize the new formatting function.
- Enhanced display logic in SessionItem to differentiate between regular and team sessions, improving user experience.
- Added new icons for team sessions and adjusted metadata display for better clarity.
2026-03-29 01:16:04 +02:00

124 lines
4 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { formatSessionLabel, parseSessionTitle } from '@renderer/utils/sessionTitleParser';
describe('parseSessionTitle', () => {
it('returns regular/Untitled for undefined', () => {
expect(parseSessionTitle(undefined)).toEqual({
kind: 'regular',
displayText: 'Untitled',
});
});
it('returns regular/Untitled for empty string', () => {
expect(parseSessionTitle('')).toEqual({
kind: 'regular',
displayText: 'Untitled',
});
});
it('parses new team provisioning with straight quotes', () => {
const msg =
'agent_teams_ui [Agent Team: "summit-ops" | Project: "sol_team_proj" | Lead: "team-lead"] — team does NOT exist yet.';
const result = parseSessionTitle(msg);
expect(result).toEqual({
kind: 'team-new',
displayText: 'summit-ops',
teamName: 'summit-ops',
projectName: 'sol_team_proj',
});
});
it('parses new team provisioning with smart quotes', () => {
const msg =
'agent_teams_ui [Agent Team: \u201Csummit-ops\u201D | Project: \u201Csol_team_proj\u201D | Lead: \u201Cteam-lead\u201D] \u2014 team does NOT exist yet.';
const result = parseSessionTitle(msg);
expect(result).toEqual({
kind: 'team-new',
displayText: 'summit-ops',
teamName: 'summit-ops',
projectName: 'sol_team_proj',
});
});
it('parses Team Start as resume', () => {
const msg =
'Team Start [Agent Team: "atlas-hq-2" | Project: "sol_team_proj" | Lead: "team-lead"] You are running in a non-interactive CLI session.';
const result = parseSessionTitle(msg);
expect(result).toEqual({
kind: 'team-resume',
displayText: 'atlas-hq-2',
teamName: 'atlas-hq-2',
projectName: 'sol_team_proj',
});
});
it('parses Team Start (resume) as resume', () => {
const msg =
'Team Start (resume) [Agent Team: "atlas-hq-2" | Project: "sol_team_proj" | Lead: "team-lead"] You are running...';
const result = parseSessionTitle(msg);
expect(result).toEqual({
kind: 'team-resume',
displayText: 'atlas-hq-2',
teamName: 'atlas-hq-2',
projectName: 'sol_team_proj',
});
});
it('passes through regular text as-is', () => {
const msg = 'Fix the login bug in auth module';
const result = parseSessionTitle(msg);
expect(result).toEqual({
kind: 'regular',
displayText: 'Fix the login bug in auth module',
});
});
it('strips single [Image #N] prefix', () => {
const msg = '[Image #1] Сделай чтобы было без иконки';
const result = parseSessionTitle(msg);
expect(result).toEqual({
kind: 'regular',
displayText: 'Сделай чтобы было без иконки',
});
});
it('strips multiple [Image #N] prefixes', () => {
const msg = '[Image #1] [Image #2] Something with two images';
const result = parseSessionTitle(msg);
expect(result).toEqual({
kind: 'regular',
displayText: 'Something with two images',
});
});
it('returns Untitled when only image prefixes remain', () => {
const msg = '[Image #1] ';
const result = parseSessionTitle(msg);
expect(result).toEqual({
kind: 'regular',
displayText: 'Untitled',
});
});
});
describe('formatSessionLabel', () => {
it('returns team name for new team session', () => {
const msg =
'agent_teams_ui [Agent Team: "my-team" | Project: "my-proj" | Lead: "lead"] — team does NOT exist yet.';
expect(formatSessionLabel(msg)).toBe('my-team');
});
it('returns team name for resume session', () => {
const msg = 'Team Start [Agent Team: "my-team" | Project: "proj" | Lead: "lead"] ...';
expect(formatSessionLabel(msg)).toBe('my-team');
});
it('returns cleaned text for regular session', () => {
expect(formatSessionLabel('Hello world')).toBe('Hello world');
});
it('returns Untitled for undefined', () => {
expect(formatSessionLabel(undefined)).toBe('Untitled');
});
});