← back to Sanderson Onboard
tk10873/test_promote.mjs
21 lines
#!/usr/bin/env node
// test_promote.mjs — unit tests for isTradeVerified (pure).
import { isTradeVerified } from './promote_trade_verified.mjs';
let pass = 0, fail = 0;
const ok = (c, m) => { if (c) pass++; else { fail++; console.error(`FAIL: ${m}`); } };
// retail == trade/0.65/0.85 -> verified
ok(isTradeVerified({ price_trade: 177, proposed_sellable_price: 320.36 }), '177 -> 320.36 verified');
ok(isTradeVerified({ price_trade: 247, proposed_sellable_price: 447.06 }), '247 -> 447.06 verified');
// no trade -> not verified
ok(!isTradeVerified({ price_trade: null, proposed_sellable_price: 200 }), 'no trade -> not verified');
ok(!isTradeVerified({ price_trade: 0, proposed_sellable_price: 200 }), 'zero trade -> not verified');
// trade present but retail NOT trade-derived (e.g. GBP-as-USD) -> not verified
ok(!isTradeVerified({ price_trade: 177, proposed_sellable_price: 200 }), 'trade present but retail != trade/.65/.85 -> not verified');
// tolerance boundary
ok(isTradeVerified({ price_trade: 100, proposed_sellable_price: 100 / 0.65 / 0.85 }), 'exact formula -> verified');
ok(!isTradeVerified({ price_trade: 100, proposed_sellable_price: 100 / 0.65 / 0.85 + 0.5 }), 'off by $0.50 -> not verified');
console.log(`\ntest_promote: ${pass} passed, ${fail} failed`);
process.exit(fail === 0 ? 0 : 1);