/ debug-outreach2.mjs
debug-outreach2.mjs
1 import { createInMemoryDb, getTestDbPath } from './src/utils/test-db.js'; 2 import { mock } from 'node:test'; 3 4 const dbName = 'outreach-unit-test-debug2'; 5 process.env.DATABASE_PATH = getTestDbPath(dbName); 6 process.env.CAN_SPAM_PHYSICAL_ADDRESS = '123 Test St'; 7 8 delete process.env.OUTREACH_SKIP_METHODS; 9 delete process.env.OUTREACH_BLOCKED_COUNTRIES; 10 delete process.env.OUTREACH_BLOCKED_SMS_COUNTRIES; 11 12 // Mock sendBulkSMS etc 13 mock.module('./src/outreach/sms.js', { 14 namedExports: { 15 sendSMS: async () => ({ success: true }), 16 sendBulkSMS: async () => ({ success: true }), 17 }, 18 }); 19 mock.module('./src/outreach/email.js', { 20 namedExports: { 21 sendEmail: async () => ({ success: true }), 22 sendBulkEmails: async () => ({ success: true }), 23 }, 24 }); 25 mock.module('./src/outreach/form.js', { 26 namedExports: { 27 submitContactForm: async () => ({ success: true }), 28 bulkSubmitContactForms: async () => ({ succeeded: 1, failed: 0 }), 29 }, 30 }); 31 mock.module('./src/outreach/x.js', { 32 namedExports: { 33 sendX: async () => ({ success: true }), 34 bulkX: async () => ({ success: true }), 35 }, 36 }); 37 mock.module('./src/outreach/linkedin.js', { 38 namedExports: { 39 sendLinkedIn: async () => ({ success: true }), 40 bulkLinkedIn: async () => ({ success: true }), 41 }, 42 }); 43 mock.module('./src/contacts/prioritize.js', { 44 namedExports: { 45 bulkUpdateOutreachContacts: () => 0, 46 }, 47 }); 48 49 const { runOutreachStage } = await import('./src/stages/outreach.js'); 50 const setupDb = createInMemoryDb(dbName); 51 52 const site = setupDb 53 .prepare( 54 `INSERT INTO sites (domain, landing_page_url, keyword, status, score, country_code) VALUES (?, ?, ?, ?, ?, 'US')` 55 ) 56 .run('test.com', 'https://test.com', 'test keyword', 'proposals_drafted', 75); 57 58 setupDb 59 .prepare( 60 `INSERT INTO messages (site_id, contact_method, contact_uri, message_body, approval_status) VALUES (?, ?, ?, ?, ?)` 61 ) 62 .run(site.lastInsertRowid, 'sms', '+1234567890', 'Test SMS Reply STOP to opt out', 'approved'); 63 64 setupDb.close(); 65 66 const result = await runOutreachStage({ channel: 'sms' }); 67 console.log('Result:', JSON.stringify(result));