Merge pull request #137 from beatz174-bit/codex/fix-test-failures-in-managecategoriesscreen

Fix pick list and product select handling
This commit is contained in:
beatz174-bit
2025-11-24 20:27:50 +10:00
committed by GitHub
3 changed files with 46 additions and 42 deletions
+3 -3
View File
@@ -7,7 +7,6 @@ import {
DialogContent, DialogContent,
DialogTitle, DialogTitle,
IconButton, IconButton,
MenuItem,
Stack, Stack,
TextField, TextField,
Typography, Typography,
@@ -106,15 +105,16 @@ export const ProductRow = ({ product, categories, onSave, onDelete }: ProductRow
/> />
<TextField <TextField
select select
SelectProps={{ native: true }}
label="Category" label="Category"
value={formState.category} value={formState.category}
onChange={handleChange('category')} onChange={handleChange('category')}
size="small" size="small"
> >
{categories.map((cat) => ( {categories.map((cat) => (
<MenuItem key={cat} value={cat}> <option key={cat} value={cat}>
{cat} {cat}
</MenuItem> </option>
))} ))}
</TextField> </TextField>
{formState.barcode ? ( {formState.barcode ? (
+1 -1
View File
@@ -1,7 +1,7 @@
import { MemoryRouter } from 'react-router-dom'; import { MemoryRouter } from 'react-router-dom';
import { render, screen } from '@testing-library/react'; import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event'; import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest'; import { beforeEach, describe, expect, it, vi } from 'vitest';
import { ManageCategoriesScreen } from './ManageCategoriesScreen'; import { ManageCategoriesScreen } from './ManageCategoriesScreen';
const categoriesMock = [{ id: 'cat-1', name: 'Snacks', created_at: 0, updated_at: 0 }]; const categoriesMock = [{ id: 'cat-1', name: 'Snacks', created_at: 0, updated_at: 0 }];
+42 -38
View File
@@ -10,7 +10,6 @@ import {
ListItem, ListItem,
ListItemButton, ListItemButton,
ListItemText, ListItemText,
MenuItem,
Stack, Stack,
TextField, TextField,
Typography, Typography,
@@ -68,11 +67,13 @@ export const PickListsScreen = () => {
const saveEdit = async () => { const saveEdit = async () => {
if (!editingList || !areaId) return; if (!editingList || !areaId) return;
await db.pickLists.update(editingList.id, { const listId = editingList.id;
area_id: areaId, const trimmedNotes = notes.trim() || undefined;
notes: notes.trim() || undefined,
});
closeEdit(); closeEdit();
await db.pickLists.update(listId, {
area_id: areaId,
notes: trimmedNotes,
});
}; };
const deleteList = async (list: PickList) => { const deleteList = async (list: PickList) => {
@@ -136,39 +137,42 @@ export const PickListsScreen = () => {
))} ))}
</List> </List>
<Dialog open={Boolean(editingList)} onClose={closeEdit} fullWidth> {editingList ? (
<DialogTitle>Edit Pick List</DialogTitle> <Dialog open onClose={closeEdit} fullWidth>
<DialogContent sx={{ pt: 1 }}> <DialogTitle>Edit Pick List</DialogTitle>
<Stack spacing={2} mt={1}> <DialogContent sx={{ pt: 1 }}>
<TextField <Stack spacing={2} mt={1}>
select <TextField
fullWidth select
label="Area" SelectProps={{ native: true }}
value={areaId} fullWidth
onChange={(event) => setAreaId(event.target.value)} label="Area"
> value={areaId}
{areas.map((area) => ( onChange={(event) => setAreaId(event.target.value)}
<MenuItem key={area.id} value={area.id}> >
{area.name} {areas.map((area) => (
</MenuItem> <option key={area.id} value={area.id}>
))} {area.name}
</TextField> </option>
<TextField ))}
label="Notes" </TextField>
value={notes} <TextField
onChange={(event) => setNotes(event.target.value)} label="Notes"
multiline value={notes}
minRows={2} onChange={(event) => setNotes(event.target.value)}
/> multiline
</Stack> minRows={2}
</DialogContent> />
<DialogActions> </Stack>
<Button onClick={closeEdit}>Cancel</Button> </DialogContent>
<Button variant="contained" onClick={saveEdit} disabled={!areaId}> <DialogActions>
Save Changes <Button onClick={closeEdit}>Cancel</Button>
</Button> <Button variant="contained" onClick={saveEdit} disabled={!areaId}>
</DialogActions> Save Changes
</Dialog> </Button>
</DialogActions>
</Dialog>
) : null}
</Container> </Container>
); );
}; };