diff --git a/packages/rubric/src/__tests__/rubric.test.jsx b/packages/rubric/src/__tests__/rubric.test.jsx index cb5c3d925..0274101a2 100644 --- a/packages/rubric/src/__tests__/rubric.test.jsx +++ b/packages/rubric/src/__tests__/rubric.test.jsx @@ -82,14 +82,7 @@ describe('Rubric', () => { describe('draggable', () => { it('renders 3 draggable items when excludeZero is true', () => { - const { container } = renderComponent({ excludeZero: true }); - // When excludeZero is true, the last point (0 pts) should not be rendered - // So we should have 3 draggable items - const draggableItems = container.querySelectorAll('[data-draggable-index]'); - expect(draggableItems.length).toEqual(3); - - // Verify the 0 pt label is not rendered expect(screen.queryByText('0 pt')).not.toBeInTheDocument(); }); @@ -99,6 +92,7 @@ describe('Rubric', () => { // When excludeZero is false, all points including 0 should be rendered const draggableItems = container.querySelectorAll('[data-draggable-index]'); expect(draggableItems.length).toEqual(4); + expect(screen.getByText('0 pt')).toBeInTheDocument(); // Verify all point labels are rendered expect(screen.getByText('3 pts')).toBeInTheDocument(); diff --git a/packages/rubric/src/authoring.jsx b/packages/rubric/src/authoring.jsx index cbbe65668..690b726d8 100644 --- a/packages/rubric/src/authoring.jsx +++ b/packages/rubric/src/authoring.jsx @@ -233,18 +233,16 @@ export class RawAuthoring extends React.Component { onChange({ ...value, excludeZero: !value.excludeZero }); }; - shouldRenderPoint = (index, value) => { - if (!value.excludeZero) { - return true; - } else { - if (index < value.points.length - 1) { - return true; - } else if (index === value.points.length - 1) { - return false; - } + getPointForIndex = (index, value) => { + const maxPoint = value.excludeZero ? value.points.length - 1 + 1 : value.points.length - 1; + return maxPoint - index; + }; - return true; - } + getMaxPoint = (value) => (value.excludeZero ? value.points.length : value.points.length - 1); + + shouldRenderPoint = (index, value) => { + const point = this.getPointForIndex(index, value); + return point > 0 || !value.excludeZero; }; onPointMenuChange = (index, clickedItem) => { @@ -280,7 +278,7 @@ export class RawAuthoring extends React.Component { } // for rubric value is computed based on points - const maxPointsValue = !rubricless ? value.points.length - 1 : maxPoints; + const maxPointsValue = rubricless ? maxPoints : value.excludeZero ? value.points.length : value.points.length - 1; return (
@@ -338,7 +336,7 @@ export class RawAuthoring extends React.Component { {...provided.dragHandleProps} >