Skip to content

Commit c9f7fc0

Browse files
authored
fix(session-state): previne divisão por zero em getProgressSummary (#537)
Merge: trivial fix, CodeRabbit APPROVED, all Jest tests pass (Node 18-25), Codecov 100%
1 parent ec3d784 commit c9f7fc0

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

.aios-core/core/orchestration/session-state.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,9 @@ O que você quer fazer?
618618
progress: {
619619
completed: progress.stories_done.length,
620620
total: epic.total_stories,
621-
percentage: Math.round((progress.stories_done.length / epic.total_stories) * 100),
621+
percentage: epic.total_stories > 0
622+
? Math.round((progress.stories_done.length / epic.total_stories) * 100)
623+
: 0,
622624
storiesDone: progress.stories_done,
623625
storiesPending: progress.stories_pending,
624626
currentStory: progress.current_story,

tests/core/orchestration/session-state.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,23 @@ describe('SessionState', () => {
541541
expect(summary.progress.storiesDone).toEqual(['11.1', '11.2']);
542542
expect(summary.context.branch).toBe('feature/bob');
543543
});
544+
545+
it('should return 0 percentage when totalStories is 0 (no division by zero)', async () => {
546+
const epicInfo = {
547+
id: 'epic-empty',
548+
title: 'Empty Epic',
549+
totalStories: 0,
550+
storyIds: [],
551+
};
552+
await sessionState.createSessionState(epicInfo, 'feature/empty');
553+
554+
const summary = sessionState.getProgressSummary();
555+
556+
expect(summary.progress.percentage).toBe(0);
557+
expect(Number.isNaN(summary.progress.percentage)).toBe(false);
558+
expect(summary.progress.total).toBe(0);
559+
expect(summary.progress.completed).toBe(0);
560+
});
544561
});
545562

546563
describe('discard()', () => {

0 commit comments

Comments
 (0)