import assert from 'node:assert/strict'; import test from 'node:test'; import { assertInventoryItemEditable, INVENTORY_STATUS, transitionInventoryStatus, } from '../../src/modules/inventory/domain/inventory-item.js'; test('allows an active inventory item to be sold', () => { assert.equal( transitionInventoryStatus(INVENTORY_STATUS.ACTIVE, INVENTORY_STATUS.SOLD), INVENTORY_STATUS.SOLD, ); }); test('rejects reopening sold inventory', () => { assert.throws( () => transitionInventoryStatus(INVENTORY_STATUS.SOLD, INVENTORY_STATUS.ACTIVE), /cannot transition/, ); }); test('locks sold and archived items against ordinary edits', () => { assert.throws( () => assertInventoryItemEditable(INVENTORY_STATUS.SOLD), /locked against ordinary edits/, ); assert.throws( () => assertInventoryItemEditable(INVENTORY_STATUS.ARCHIVED), /locked against ordinary edits/, ); assert.doesNotThrow(() => assertInventoryItemEditable(INVENTORY_STATUS.ACTIVE)); });