Server : nginx/1.18.0 System : Linux localhost 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64 User : www-data ( 33) PHP Version : 8.0.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/ecommerce/node_modules/laravel-echo/tests/channel/ |
import { SocketIoChannel } from '../../src/channel';
describe('SocketIoChannel', () => {
let channel;
let socket;
beforeEach(() => {
const channelName = 'some.channel';
let listeners = [];
socket = {
emit: (event, data) => listeners.filter(([e]) => e === event).forEach(([, fn]) => fn(channelName, data)),
on: (event, fn) => listeners.push([event, fn]),
removeListener: (event, fn) => {
listeners = listeners.filter(([e, f]) => (!fn ? e !== event : e !== event || f !== fn));
},
};
channel = new SocketIoChannel(socket, channelName, {
namespace: false,
});
});
test('triggers all listeners for an event', () => {
const l1 = jest.fn();
const l2 = jest.fn();
const l3 = jest.fn();
channel.listen('MyEvent', l1);
channel.listen('MyEvent', l2);
channel.listen('MyOtherEvent', l3);
socket.emit('MyEvent', {});
expect(l1).toBeCalled();
expect(l2).toBeCalled();
expect(l3).not.toBeCalled();
socket.emit('MyOtherEvent', {});
expect(l3).toBeCalled();
});
test('can remove a listener for an event', () => {
const l1 = jest.fn();
const l2 = jest.fn();
const l3 = jest.fn();
channel.listen('MyEvent', l1);
channel.listen('MyEvent', l2);
channel.listen('MyOtherEvent', l3);
channel.stopListening('MyEvent', l1);
socket.emit('MyEvent', {});
expect(l1).not.toBeCalled();
expect(l2).toBeCalled();
expect(l3).not.toBeCalled();
socket.emit('MyOtherEvent', {});
expect(l3).toBeCalled();
});
test('can remove all listeners for an event', () => {
const l1 = jest.fn();
const l2 = jest.fn();
const l3 = jest.fn();
channel.listen('MyEvent', l1);
channel.listen('MyEvent', l2);
channel.listen('MyOtherEvent', l3);
channel.stopListening('MyEvent');
socket.emit('MyEvent', {});
expect(l1).not.toBeCalled();
expect(l2).not.toBeCalled();
expect(l3).not.toBeCalled();
socket.emit('MyOtherEvent', {});
expect(l3).toBeCalled();
});
});