← back to Sample Followup Sweep
test/never-false-chase.test.cjs
49 lines
'use strict';
// TK-12105 never-false-chase guard unit test. Fixtures mirror live FileMaker data.
const assert = require('node:assert');
const { suppressChase } = require('../lib/sweep');
// 1. REID-like: same SKU, two records same entered date 09/08/2026, one arrived -> SUPPRESSED (arrival dedup)
{
const siblings = [
{ entered: '', wpSampleSent: '', letterSent: '' }, // noise record (empty entered)
{ entered: '09/08/2026', wpSampleSent: '09/14/2026', letterSent: '' }, // arrived twin
{ entered: '09/08/2026', wpSampleSent: '', letterSent: '' }, // the outstanding one we'd chase
];
const g = suppressChase('09/08/2026', siblings);
assert.equal(g.suppress, true, '1 REID must be suppressed');
assert.equal(g.reason, 'arrived (duplicate record, same entered date)', '1 reason must be arrival dedup');
console.log('(1) PASS — REID same-date arrived twin -> SUPPRESSED:', g.reason);
}
// 2. GRD-like: 2024 arrived + 2026 outstanding (different entered dates) -> NOT suppressed
{
const siblings = [
{ entered: '', wpSampleSent: '', letterSent: '' }, // noise
{ entered: '06/14/2024', wpSampleSent: '06/14/2024', letterSent: '' }, // arrived, 2024
{ entered: '09/10/2026', wpSampleSent: '', letterSent: '' }, // owed, 2026
];
const g = suppressChase('09/10/2026', siblings);
assert.equal(g.suppress, false, '2 GRD-2026 must be chaseable');
console.log('(2) PASS — GRD 2024-arrived vs 2026-owed (different dates) -> CHASEABLE');
}
// 3. Already-sent: Date Sample Request Letter Sent filled -> SUPPRESSED
{
const siblings = [ { entered: '09/10/2026', wpSampleSent: '', letterSent: '09/12/2026' } ];
const g = suppressChase('09/10/2026', siblings);
assert.equal(g.suppress, true, '3 letter-sent must be suppressed');
assert.equal(g.reason, '10-day letter already sent', '3 reason must be already-sent');
console.log('(3) PASS — 10-day letter already sent -> SUPPRESSED:', g.reason);
}
// 4. Clean: not arrived on any record, no letter sent -> chaseable
{
const siblings = [ { entered: '09/10/2026', wpSampleSent: '', letterSent: '' } ];
const g = suppressChase('09/10/2026', siblings);
assert.equal(g.suppress, false, '4 clean must be chaseable');
console.log('(4) PASS — clean (no arrival, no letter) -> CHASEABLE');
}
console.log('\nALL 4 ASSERTIONS PASSED');