woolball-client
Version:
Client-side library for Woolball enabling secure browser resource sharing for distributed AI task processing
62 lines (61 loc) • 1.99 kB
JavaScript
;
/**
* Mock implementation for Web Worker API in Node.js environment
* This file provides mocks for the Worker class and related functionality
* to enable testing of worker-related code in Jest
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.cleanupWorkerMock = exports.setupWorkerMock = exports.MockWorker = void 0;
// Mock Worker class for testing
class MockWorker {
constructor(url) {
this.url = url;
this.listeners = {
message: [],
error: []
};
}
addEventListener(type, callback) {
if (!this.listeners[type]) {
this.listeners[type] = [];
}
this.listeners[type].push(callback);
}
removeEventListener(type, callback) {
if (this.listeners[type]) {
this.listeners[type] = this.listeners[type].filter(cb => cb !== callback);
}
}
postMessage(data) {
// Simulate successful response after a short delay
setTimeout(() => {
const response = { data: { text: 'mocked transcription result' } };
this.listeners.message.forEach(callback => callback(response));
}, 20);
}
// Add a method to directly set the onmessage handler
set onmessage(handler) {
this.addEventListener('message', handler);
}
// Add a method to directly set the onerror handler
set onerror(handler) {
this.addEventListener('error', handler);
}
// Method to simulate error
triggerError(error) {
this.listeners.error.forEach(callback => callback(error));
}
}
exports.MockWorker = MockWorker;
// Global mock setup
function setupWorkerMock() {
// @ts-ignore - Override global Worker class
global.Worker = MockWorker;
}
exports.setupWorkerMock = setupWorkerMock;
// Cleanup function
function cleanupWorkerMock() {
// @ts-ignore - Restore global Worker class
delete global.Worker;
}
exports.cleanupWorkerMock = cleanupWorkerMock;