fix: validate image order and alt text updates
Quality / test (push) Canceled after 0s

This commit is contained in:
2026-09-11 00:18:11 -04:00
parent 0e81fc4022
commit cce395baf6
11 changed files with 169 additions and 14 deletions
@@ -48,3 +48,19 @@ test('moves an image through the owned atomic repository operation', async () =>
await assert.rejects(() => service.move({ imageId: 'missing', direction: 'down', sellerId: 'seller-1' }), { code: 'IMAGE_NOT_FOUND' });
await assert.rejects(() => service.move({ imageId: 'owned', direction: 'left', sellerId: 'seller-1' }), { code: 'IMAGE_MOVE_INVALID' });
});
test('validates image updates before persistence and normalizes valid alt text', async () => {
const { service, calls } = createService();
for (const sortOrder of [undefined, null, -1, 0.5, '1', NaN, Infinity, 2147483648]) {
await assert.rejects(() => service.updateOrder({ imageId: 'image-1', sortOrder, sellerId: 'seller-1' }), { code: 'IMAGE_ORDER_INVALID' });
}
for (const altText of [undefined, 123, {}, [], 'x'.repeat(1001)]) {
await assert.rejects(() => service.updateAltText({ imageId: 'image-1', altText, sellerId: 'seller-1' }), { code: 'IMAGE_ALT_TEXT_INVALID' });
}
assert.deepEqual(calls, []);
await service.updateOrder({ imageId: 'image-1', sortOrder: 2147483647, sellerId: 'seller-1' });
for (const [input, expected] of [[' Front ', 'Front'], [' ', ''], [null, null], ['x'.repeat(1000), 'x'.repeat(1000)]]) {
const result = await service.updateAltText({ imageId: 'image-1', altText: input, sellerId: 'seller-1' });
assert.equal(result.altText, expected);
}
});