/ 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));