| import { describe, expect, it } from 'vitest'; |
| import { |
| parseAllPhaseSummaries, |
| parsePhaseSummaries, |
| extractPhaseSummary, |
| extractImplementationSummary, |
| isAccumulatedSummary, |
| } from '../../../../ui/src/lib/log-parser.ts'; |
|
|
| describe('log-parser mixed summary format compatibility', () => { |
| const mixedSummary = [ |
| 'Implemented core auth flow and API wiring.', |
| '', |
| '---', |
| '', |
| '### Code Review', |
| '', |
| 'Addressed lint warnings and improved error handling.', |
| '', |
| '---', |
| '', |
| '### Testing', |
| '', |
| 'All tests passing.', |
| ].join('\n'); |
|
|
| it('treats leading headerless section as Implementation phase', () => { |
| const phases = parsePhaseSummaries(mixedSummary); |
|
|
| expect(phases.get('implementation')).toBe('Implemented core auth flow and API wiring.'); |
| expect(phases.get('code review')).toBe('Addressed lint warnings and improved error handling.'); |
| expect(phases.get('testing')).toBe('All tests passing.'); |
| }); |
|
|
| it('returns implementation summary from mixed format', () => { |
| expect(extractImplementationSummary(mixedSummary)).toBe( |
| 'Implemented core auth flow and API wiring.' |
| ); |
| }); |
|
|
| it('includes Implementation as the first parsed phase entry', () => { |
| const entries = parseAllPhaseSummaries(mixedSummary); |
|
|
| expect(entries[0]).toMatchObject({ |
| phaseName: 'Implementation', |
| content: 'Implemented core auth flow and API wiring.', |
| }); |
| expect(entries.map((entry) => entry.phaseName)).toEqual([ |
| 'Implementation', |
| 'Code Review', |
| 'Testing', |
| ]); |
| }); |
|
|
| it('extracts specific phase summaries from mixed format', () => { |
| expect(extractPhaseSummary(mixedSummary, 'Implementation')).toBe( |
| 'Implemented core auth flow and API wiring.' |
| ); |
| expect(extractPhaseSummary(mixedSummary, 'Code Review')).toBe( |
| 'Addressed lint warnings and improved error handling.' |
| ); |
| expect(extractPhaseSummary(mixedSummary, 'Testing')).toBe('All tests passing.'); |
| }); |
|
|
| it('treats mixed format as accumulated summary', () => { |
| expect(isAccumulatedSummary(mixedSummary)).toBe(true); |
| }); |
| }); |
|
|