This commit is contained in:
seb
2026-10-20 05:33:11 +02:00
parent 5cb38874ca
commit bcefd81af7
23 changed files with 514 additions and 150 deletions

View File

@@ -753,6 +753,7 @@ describe('store.article', () => {
await store.shipment.create(gid, {
orderId: o2.id,
lines: [{ sku: art.sku, amount: 5 }],
});
res = await store.article.getBySku(gid, art.sku);

View File

@@ -69,15 +69,10 @@ describe('store.shipment', () => {
assert.equal(rest.lines[0].amount, 7);
});
it('ships everything remaining when lines are omitted', async () => {
it('rejects when lines are omitted or empty', async () => {
const order = await makeOrder();
await store.shipment.create(gid, { orderId: order.id, lines: [{ sku: 'SH-A', amount: 4 }] });
const rest = await store.shipment.create(gid, { orderId: order.id });
assert.deepEqual(
rest.lines.map((l) => [l.sku, l.amount]).sort(),
[['SH-A', 6], ['SH-B', 5]],
);
await assert.rejects(() => store.shipment.create(gid, { orderId: order.id }), { message: 'All items already shipped' });
await assert.rejects(() => store.shipment.create(gid, { orderId: order.id }), { message: 'Invalid lines' });
await assert.rejects(() => store.shipment.create(gid, { orderId: order.id, lines: [] }), { message: 'Invalid lines' });
});
it('updates the order summary', async () => {
@@ -88,7 +83,7 @@ describe('store.shipment', () => {
await store.shipment.create(gid, { orderId: order.id, lines: [{ sku: 'SH-A', amount: 10 }] });
assert.equal(summary().shipped_quantity, 10);
assert.equal(summary().is_shipped, 0);
await store.shipment.create(gid, { orderId: order.id });
await store.shipment.create(gid, { orderId: order.id, lines: [{ sku: 'SH-B', amount: 5 }] });
assert.equal(summary().shipped_quantity, 15);
assert.equal(summary().is_shipped, 1);
});
@@ -120,18 +115,18 @@ describe('store.shipment', () => {
() => store.shipment.create(gid, { orderId: order.id, lines: [{ sku: 'SH-A', amount: 0 }] }),
{ message: 'Invalid lines' },
);
await assert.rejects(() => store.shipment.create(gid, { orderId: 999999 }), { message: 'Order not found' });
await assert.rejects(() => store.shipment.create(gid, { orderId: 999999, lines: [{ sku: 'SH-A', amount: 1 }] }), { message: 'Order not found' });
});
it('rejects orders without lines', async () => {
const empty = await makeOrder([]);
await assert.rejects(() => store.shipment.create(gid, { orderId: empty.id }), { message: 'Order has no lines' });
await assert.rejects(() => store.shipment.create(gid, { orderId: empty.id, lines: [{ sku: 'SH-A', amount: 1 }] }), { message: 'Order has no lines' });
});
it('cannot ship orders of another company', async () => {
const order = await makeOrder();
await assert.rejects(
() => store.shipment.create(other.googleAuthId, { orderId: order.id }),
() => store.shipment.create(other.googleAuthId, { orderId: order.id, lines: [{ sku: 'SH-A', amount: 1 }] }),
{ message: 'Order not found' },
);
});