require('dotenv').config(); const customerDb = require('./services/customerDb'); // Mock process.env.NO_ADMIN for testing purposes if not set or to ensure test consistency // We'll use a dummy admin number for this test authentication const TEST_ADMIN_NUMBER = '628123456789'; // Format used in code logic check process.env.NO_ADMIN = TEST_ADMIN_NUMBER; async function testAdminLogic() { console.log("Testing Admin Logic..."); // 1. Simulate Message from Admin const mockMessage = { from: '628123456789@c.us', // Check against NO_ADMIN body: 'Cek 0812345678' // Search intent }; console.log(`\n[Input] Sender: ${mockMessage.from}, Message: "${mockMessage.body}"`); // Logic replicated from index.js for testing isolation let customerContext = null; let isAdmin = false; const adminNumbers = (process.env.NO_ADMIN || '').split(',').map(n => n.trim()); const senderNumber = mockMessage.from.replace('@c.us', ''); if (adminNumbers.some(admin => senderNumber.endsWith(admin.replace(/^0|^62/, '')))) { isAdmin = true; } console.log(`[Status] Is Admin? ${isAdmin ? '✅ YES' : '❌ NO'}`); if (isAdmin) { const searchPattern = /(\d{9,})|cek|cari|info/i; if (searchPattern.test(mockMessage.body)) { let query = mockMessage.body.replace(/cek|cari|info/gi, '').trim(); console.log(`[Action] Searching for: "${query}"`); // Call actual DB service // Note: This relies on the DB having the dummy data or at least connecting // We will search for a number that might NOT exist, but we check if the function runs // To make it pass successfully on the empty DB, we'll search for 'Budi' or just expect 'Not Found' but no error try { const searchResults = await customerDb.searchCustomer(query); console.log(`[DB Result] Found ${searchResults.length} matches.`); if (searchResults.length > 0) { customerContext = `[ADMIN MODE - HASIL PENCARIAN]\n`; searchResults.forEach((c, i) => { customerContext += `${i + 1}. Nama: ${c.name}\n`; }); console.log("[Context Generated] \n" + customerContext); } else { console.log("[Context Generated] [ADMIN MODE] Pencarian tidak ditemukan (Expected if DB is empty or no match)."); } } catch (err) { console.error("DB Error:", err); } } } } testAdminLogic().then(() => process.exit());