fix: correct rectangle reducer and update CI workflow with build step

- Remove incorrect scene deletion from rectangle reducer (rectangles only exist in model)
- Update rectangle tests to reflect correct behavior
- Add npm build step to CI workflow to catch build errors early
This commit is contained in:
Stan
2025-09-08 08:03:57 +01:00
parent 32bcce57b7
commit 2bd1318441
3 changed files with 8 additions and 13 deletions

View File

@@ -51,5 +51,7 @@ jobs:
path: |
packages/*/test-results/
test-results/
if-no-files-found: ignore
retention-days: 7
retention-days: 7
- name: Run NPM build to check there are no build errors
run: npm build

View File

@@ -65,9 +65,6 @@ describe('rectangle reducer', () => {
grid: { enabled: true, size: 10, style: 'dots' },
connectors: {},
viewItems: {},
rectangles: {
'rect1': { /* scene data if any */ }
},
textBoxes: {}
}
};
@@ -249,14 +246,13 @@ describe('rectangle reducer', () => {
});
describe('deleteRectangle', () => {
it('should delete a rectangle from both model and scene', () => {
it('should delete a rectangle from model', () => {
const result = deleteRectangle('rect1', mockContext);
// Check rectangle is removed from model
expect(result.model.views[0].rectangles).toHaveLength(0);
// Check rectangle is removed from scene
expect(result.scene.rectangles['rect1']).toBeUndefined();
// Rectangles don't have scene data - only stored in model
});
it('should throw error when rectangle does not exist', () => {
@@ -289,16 +285,13 @@ describe('rectangle reducer', () => {
};
mockState.model.views[0].rectangles = [mockRectangle, rect2];
mockState.scene.rectangles['rect2'] = {};
const result = deleteRectangle('rect1', mockContext);
expect(result.model.views[0].rectangles).toHaveLength(1);
expect(result.model.views[0].rectangles![0].id).toBe('rect2');
// Verify proper scene cleanup
expect(result.scene.rectangles['rect1']).toBeUndefined();
expect(result.scene.rectangles['rect2']).toBeDefined();
// Rectangles don't have scene data - only verify model is updated
});
});

View File

@@ -53,7 +53,7 @@ export const deleteRectangle = (
const newState = produce(state, (draft) => {
draft.model.views[view.index].rectangles?.splice(rectangle.index, 1);
delete draft.scene.rectangles[id];
// Rectangles don't have scene data - they're only stored in the model
});
return newState;