feat(api): add staff order booking contract and shift timeline alias
This commit is contained in:
@@ -449,6 +449,16 @@ async function main() {
|
||||
}
|
||||
logStep('client.orders.view.ok', { count: viewedOrders.items.length });
|
||||
|
||||
const scheduledShifts = await apiCall(`/client/shifts/scheduled?${reportWindow}`, {
|
||||
token: ownerSession.sessionToken,
|
||||
});
|
||||
assert.ok(Array.isArray(scheduledShifts.items));
|
||||
assert.equal(scheduledShifts.items.length, viewedOrders.items.length);
|
||||
if (viewedOrders.items[0] && scheduledShifts.items[0]) {
|
||||
assert.equal(scheduledShifts.items[0].itemId, viewedOrders.items[0].itemId);
|
||||
}
|
||||
logStep('client.shifts.scheduled.ok', { count: scheduledShifts.items.length });
|
||||
|
||||
const reorderPreview = await apiCall(`/client/orders/${fixture.orders.completed.id}/reorder-preview`, {
|
||||
token: ownerSession.sessionToken,
|
||||
});
|
||||
@@ -814,6 +824,33 @@ async function main() {
|
||||
assert.ok(Array.isArray(assignedShifts.items));
|
||||
logStep('staff.shifts.assigned.ok', { count: assignedShifts.items.length });
|
||||
|
||||
const availableOrders = await apiCall('/staff/orders/available?limit=20', {
|
||||
token: staffAuth.idToken,
|
||||
});
|
||||
const availableOrder = availableOrders.items.find((item) => item.orderId === createdRecurringOrder.orderId)
|
||||
|| availableOrders.items[0];
|
||||
assert.ok(availableOrder);
|
||||
assert.ok(availableOrder.roleId);
|
||||
logStep('staff.orders.available.ok', { count: availableOrders.items.length, orderId: availableOrder.orderId });
|
||||
|
||||
const bookedOrder = await apiCall(`/staff/orders/${availableOrder.orderId}/book`, {
|
||||
method: 'POST',
|
||||
token: staffAuth.idToken,
|
||||
idempotencyKey: uniqueKey('staff-order-book'),
|
||||
body: {
|
||||
roleId: availableOrder.roleId,
|
||||
},
|
||||
});
|
||||
assert.equal(bookedOrder.orderId, availableOrder.orderId);
|
||||
assert.ok(bookedOrder.assignedShiftCount >= 1);
|
||||
assert.equal(bookedOrder.status, 'PENDING');
|
||||
assert.ok(Array.isArray(bookedOrder.assignedShifts));
|
||||
logStep('staff.orders.book.ok', {
|
||||
orderId: bookedOrder.orderId,
|
||||
assignedShiftCount: bookedOrder.assignedShiftCount,
|
||||
status: bookedOrder.status,
|
||||
});
|
||||
|
||||
const openShifts = await apiCall('/staff/shifts/open', {
|
||||
token: staffAuth.idToken,
|
||||
});
|
||||
@@ -827,6 +864,9 @@ async function main() {
|
||||
const pendingShifts = await apiCall('/staff/shifts/pending', {
|
||||
token: staffAuth.idToken,
|
||||
});
|
||||
assert.ok(
|
||||
bookedOrder.assignedShifts.some((shift) => pendingShifts.items.some((item) => item.shiftId === shift.shiftId))
|
||||
);
|
||||
const pendingShift = pendingShifts.items.find((item) => item.shiftId === fixture.shifts.available.id)
|
||||
|| pendingShifts.items[0];
|
||||
assert.ok(pendingShift);
|
||||
|
||||
Reference in New Issue
Block a user