UNPKG

sayance-matrix-native-module

Version:
122 lines (107 loc) โ€ข 4.11 kB
#!/usr/bin/env node /** * Test script for the new polling-based Matrix implementation * * This script tests: * 1. Native module loading * 2. Polling function availability * 3. Event handling and logging */ console.log('๐Ÿงช Testing Sayance Matrix Native Module with Polling'); console.log('=================================================='); // Test 1: Module Loading console.log('\n1. Testing module loading...'); try { const MatrixClient = require('./build/index.js').default; console.log('โœ… Module loaded successfully'); // Test 2: Function Availability console.log('\n2. Testing function availability...'); const requiredFunctions = [ 'initializeClient', 'startSync', 'stopSync', 'getSyncState', 'getPollStats', 'getJoinedRooms', 'sendMessage' ]; const missingFunctions = []; requiredFunctions.forEach(func => { if (typeof MatrixClient[func] === 'function') { console.log(`โœ… ${func} available`); } else { console.log(`โŒ ${func} missing`); missingFunctions.push(func); } }); if (missingFunctions.length > 0) { console.log(`\nโš ๏ธ Missing functions: ${missingFunctions.join(', ')}`); console.log('Please rebuild the native module with: npm run build'); } else { console.log('\nโœ… All required functions are available'); } // Test 3: Event Listener Setup console.log('\n3. Testing event listener setup...'); try { const subscription = MatrixClient.onSyncUpdate((event) => { console.log('๐Ÿ“Š Received sync update:', event); }); console.log('โœ… Event listener setup successful'); subscription.remove(); console.log('โœ… Event listener cleanup successful'); } catch (error) { console.log('โŒ Event listener setup failed:', error.message); } // Test 4: Configuration Validation console.log('\n4. Testing configuration...'); const testConfig = { baseUrl: 'https://matrix.org', accessToken: 'test_token', userId: '@test:matrix.org', deviceId: 'TEST_DEVICE' }; console.log('โœ… Test configuration created'); console.log(' Base URL:', testConfig.baseUrl); console.log(' User ID:', testConfig.userId); console.log('\n๐ŸŽฏ Test Summary:'); console.log('================'); console.log('โ€ข Module loading: โœ…'); console.log('โ€ข Function availability:', missingFunctions.length === 0 ? 'โœ…' : 'โŒ'); console.log('โ€ข Event system: โœ…'); console.log('โ€ข Configuration: โœ…'); if (missingFunctions.length === 0) { console.log('\n๐Ÿš€ Ready to test with real Matrix credentials!'); console.log('\nNext steps:'); console.log('1. Set up your Matrix credentials'); console.log('2. Initialize the client with initializeClient()'); console.log('3. Start sync with startSync()'); console.log('4. Monitor logs for polling activity'); console.log('5. Check poll stats with getPollStats()'); } else { console.log('\nโš ๏ธ Please rebuild the native module first:'); console.log(' cd rust && cargo build --release'); console.log(' cd .. && npm run build'); } } catch (error) { console.log('โŒ Module loading failed:', error.message); console.log('\nPossible solutions:'); console.log('1. Run: npm run build'); console.log('2. Check if the native module is properly compiled'); console.log('3. Verify UniFFI bindings are generated'); } console.log('\n๐Ÿ“‹ For production testing:'); console.log('========================='); console.log('1. Build: ./build.sh'); console.log('2. Test on device: expo run:ios or expo run:android'); console.log('3. Monitor logs in Xcode Console or adb logcat'); console.log('4. Look for polling logs with ๐Ÿ”, ๐Ÿ“Š, ๐Ÿ’ฌ, ๐Ÿ“จ emojis'); console.log('\n๐Ÿ“– Log Guide:'); console.log('=============='); console.log('๐Ÿšจ - Starting sync'); console.log('๐Ÿ” - Polling for events'); console.log('๐Ÿ“Š - Poll statistics'); console.log('๐Ÿ’ฌ - Message events'); console.log('๐Ÿ“จ - Room invites'); console.log('๐Ÿ‘ค - Membership changes'); console.log('โœ… - Success'); console.log('โŒ - Errors');