sayance-matrix-native-module
Version:
Native Matrix client module for Expo using Rust SDK
122 lines (107 loc) โข 4.11 kB
JavaScript
/**
* 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');