summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/StatsDisplay.test.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/components/StatsDisplay.test.tsx')
-rw-r--r--packages/cli/src/ui/components/StatsDisplay.test.tsx88
1 files changed, 88 insertions, 0 deletions
diff --git a/packages/cli/src/ui/components/StatsDisplay.test.tsx b/packages/cli/src/ui/components/StatsDisplay.test.tsx
index eed105e3..6d6fa809 100644
--- a/packages/cli/src/ui/components/StatsDisplay.test.tsx
+++ b/packages/cli/src/ui/components/StatsDisplay.test.tsx
@@ -50,6 +50,10 @@ describe('<StatsDisplay />', () => {
totalDecisions: { accept: 0, reject: 0, modify: 0 },
byName: {},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
const { lastFrame } = renderWithMockedStats(zeroMetrics);
@@ -96,6 +100,10 @@ describe('<StatsDisplay />', () => {
totalDecisions: { accept: 0, reject: 0, modify: 0 },
byName: {},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
const { lastFrame } = renderWithMockedStats(metrics);
@@ -139,6 +147,10 @@ describe('<StatsDisplay />', () => {
},
},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
const { lastFrame } = renderWithMockedStats(metrics);
@@ -172,6 +184,10 @@ describe('<StatsDisplay />', () => {
},
},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
const { lastFrame } = renderWithMockedStats(metrics);
@@ -206,6 +222,10 @@ describe('<StatsDisplay />', () => {
totalDecisions: { accept: 0, reject: 0, modify: 0 },
byName: {},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
const { lastFrame } = renderWithMockedStats(metrics);
@@ -228,6 +248,10 @@ describe('<StatsDisplay />', () => {
totalDecisions: { accept: 0, reject: 0, modify: 0 },
byName: {},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
const { lastFrame } = renderWithMockedStats(metrics);
expect(lastFrame()).toMatchSnapshot();
@@ -244,6 +268,10 @@ describe('<StatsDisplay />', () => {
totalDecisions: { accept: 0, reject: 0, modify: 0 },
byName: {},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
const { lastFrame } = renderWithMockedStats(metrics);
expect(lastFrame()).toMatchSnapshot();
@@ -260,12 +288,68 @@ describe('<StatsDisplay />', () => {
totalDecisions: { accept: 0, reject: 0, modify: 0 },
byName: {},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
const { lastFrame } = renderWithMockedStats(metrics);
expect(lastFrame()).toMatchSnapshot();
});
});
+ describe('Code Changes Display', () => {
+ it('displays Code Changes when line counts are present', () => {
+ const metrics: SessionMetrics = {
+ models: {},
+ tools: {
+ totalCalls: 1,
+ totalSuccess: 1,
+ totalFail: 0,
+ totalDurationMs: 100,
+ totalDecisions: { accept: 0, reject: 0, modify: 0 },
+ byName: {},
+ },
+ files: {
+ totalLinesAdded: 42,
+ totalLinesRemoved: 18,
+ },
+ };
+
+ const { lastFrame } = renderWithMockedStats(metrics);
+ const output = lastFrame();
+
+ expect(output).toContain('Code Changes:');
+ expect(output).toContain('+42');
+ expect(output).toContain('-18');
+ expect(output).toMatchSnapshot();
+ });
+
+ it('hides Code Changes when no lines are added or removed', () => {
+ const metrics: SessionMetrics = {
+ models: {},
+ tools: {
+ totalCalls: 1,
+ totalSuccess: 1,
+ totalFail: 0,
+ totalDurationMs: 100,
+ totalDecisions: { accept: 0, reject: 0, modify: 0 },
+ byName: {},
+ },
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
+ };
+
+ const { lastFrame } = renderWithMockedStats(metrics);
+ const output = lastFrame();
+
+ expect(output).not.toContain('Code Changes:');
+ expect(output).toMatchSnapshot();
+ });
+ });
+
describe('Title Rendering', () => {
const zeroMetrics: SessionMetrics = {
models: {},
@@ -277,6 +361,10 @@ describe('<StatsDisplay />', () => {
totalDecisions: { accept: 0, reject: 0, modify: 0 },
byName: {},
},
+ files: {
+ totalLinesAdded: 0,
+ totalLinesRemoved: 0,
+ },
};
it('renders the default title when no title prop is provided', () => {