Files
NapCatQQ/.pnpm-store/v3/files/20/233e828bfca8a1b5d432bdeba12e75b0e26e617c383a76ea37a96dcdea2d2de7881471b54ab29c56f776f458379b1df3250ee05ac4e4d2d2693d733e376ab3
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

103 lines
3.1 KiB
Plaintext

import {
getSubscribers,
hasSubscribers,
addSubscriber,
removeSubscriber,
resetSubscribers,
} from './manage-subscribers';
import { Subscriber } from './types';
const URL = 'ws://localhost:1234';
const SECOND_URL = 'ws://localhost:4321'
const noop = () => { };
const subscriber1: Subscriber = {
setLastMessage: noop,
setReadyState: noop,
optionsRef: { current: {} },
reconnectCount: { current: 0 },
lastMessageTime: { current: Date.now() },
reconnect: { current: noop },
};
const subscriber2: Subscriber = {
setLastMessage: noop,
setReadyState: noop,
optionsRef: { current: {} },
reconnectCount: { current: 0 },
lastMessageTime: { current: Date.now() },
reconnect: { current: noop },
};
beforeEach(() => {
if (hasSubscribers(URL)) {
getSubscribers(URL).forEach(subscriber => {
removeSubscriber(URL, subscriber);
});
}
});
test('getSubscribers returns the number of subscribers, and if no subscription found for url, returns 0', () => {
expect(getSubscribers(URL)).toHaveLength(0);
});
test('addSubscriber takes a subscriber and a url and adds to or creates a new subscription', () => {
addSubscriber(URL, subscriber1);
expect(getSubscribers(URL)).toHaveLength(1);
addSubscriber(URL, subscriber2);
expect(getSubscribers(URL)).toHaveLength(2);
});
test('addSubscriber stores subscribers in a Set, so duplicate subscriptions are not possible', () => {
addSubscriber(URL, subscriber1);
expect(getSubscribers(URL)).toHaveLength(1);
addSubscriber(URL, subscriber1);
expect(getSubscribers(URL)).toHaveLength(1);
});
test('hasSubscribers returns a boolean indicating whether there are any subscribers by url', () => {
expect(hasSubscribers(URL)).toBe(false);
addSubscriber(URL, subscriber1);
expect(hasSubscribers(URL)).toBe(true);
});
test('removeSubscriber removes a subscriber from a url subscription', () => {
addSubscriber(URL, subscriber1);
addSubscriber(URL, subscriber2);
expect(getSubscribers(URL)).toHaveLength(2);
removeSubscriber(URL, subscriber1);
removeSubscriber(URL, subscriber2);
expect(getSubscribers(URL)).toHaveLength(0);
});
test('resetSubscribers removes subscribers only for a specific URL', () => {
addSubscriber(URL, subscriber1);
addSubscriber(URL, subscriber2);
expect(getSubscribers(URL)).toHaveLength(2);
addSubscriber(SECOND_URL, subscriber1);
addSubscriber(SECOND_URL, subscriber2);
expect(getSubscribers(SECOND_URL)).toHaveLength(2);
resetSubscribers(URL);
expect(getSubscribers(URL)).toHaveLength(0);
expect(getSubscribers(SECOND_URL)).toHaveLength(2);
});
test('resetSubscribers removes all subscribers when URL is not set', () => {
addSubscriber(URL, subscriber1);
addSubscriber(URL, subscriber2);
expect(getSubscribers(URL)).toHaveLength(2);
addSubscriber(SECOND_URL, subscriber1);
addSubscriber(SECOND_URL, subscriber2);
expect(getSubscribers(SECOND_URL)).toHaveLength(2);
resetSubscribers();
expect(getSubscribers(URL)).toHaveLength(0);
expect(getSubscribers(SECOND_URL)).toHaveLength(0);
});