const assert = require('node:assert/strict'); global.window = {}; require('../../static/js/contact-lifecycle.js'); const {escape, templateOptions, editPayload} = window.ContactLifecycle; assert.equal(escape(''), '<img src=x onerror="bad">'); const templates = [ {id:1,category:'onboarding',customer_id:null}, {id:2,category:'onboarding',customer_id:12}, {id:3,category:'offboarding',customer_id:12}, {id:4,category:'onboarding',customer_id:13}, ]; assert.deepEqual(templateOptions(templates, '12', 'onboarding').map(item => item.id), [1,2]); assert.deepEqual(templateOptions(templates, '12', 'offboarding').map(item => item.id), [3]); assert.deepEqual(templateOptions(templates, '', 'onboarding').map(item => item.id), [1]); const update = {customer_id:12,event_date:'2026-11-20',lead_days:14,auto_create:true,parent_case_id:99,template_id:1,responsible_user_id:2}; assert.deepEqual(editPayload(update,true), {event_date:'2026-11-20',lead_days:14,auto_create:true}); assert.equal(editPayload(update,false), update); console.log('Contact lifecycle escaping and customer/type template scoping passed');