Skip to content

Commit 08bd508

Browse files
committed
more tests
1 parent 2934b55 commit 08bd508

File tree

1 file changed

+55
-10
lines changed

1 file changed

+55
-10
lines changed

packages/core/test/lib/client.test.ts

Lines changed: 55 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2450,12 +2450,7 @@ describe('Client', () => {
24502450
});
24512451

24522452
it('allows synchronously unregistering multiple callbacks from within the callback', () => {
2453-
const client = new TestClient(
2454-
getDefaultTestClientOptions({
2455-
dsn: PUBLIC_DSN,
2456-
enableSend: true,
2457-
}),
2458-
);
2453+
const client = new TestClient(getDefaultTestClientOptions());
24592454

24602455
const callback1 = vi.fn();
24612456
const callback2 = vi.fn();
@@ -2479,12 +2474,44 @@ describe('Client', () => {
24792474

24802475
client.emit('close');
24812476

2482-
expect(callback1).toHaveBeenCalledTimes(0);
2483-
expect(callback2).toHaveBeenCalledTimes(0);
2477+
expect(callback1).not.toHaveBeenCalled();
2478+
expect(callback2).not.toHaveBeenCalled();
2479+
});
2480+
2481+
it('allows synchronously unregistering other callbacks from within one callback', () => {
2482+
const client = new TestClient(getDefaultTestClientOptions());
2483+
2484+
const callback1 = vi.fn();
2485+
const callback2 = vi.fn();
2486+
2487+
const removeCallback1 = client.on('close', () => {
2488+
callback1();
2489+
removeCallback1();
2490+
removeCallback2();
2491+
});
2492+
const removeCallback2 = client.on('close', () => {
2493+
callback2();
2494+
removeCallback2();
2495+
removeCallback1();
2496+
});
2497+
2498+
client.emit('close');
2499+
2500+
expect(callback1).toHaveBeenCalledTimes(1);
2501+
// callback2 was already cancelled from within callback1, so it must not be called
2502+
expect(callback2).not.toHaveBeenCalled();
2503+
2504+
callback1.mockReset();
2505+
callback2.mockReset();
2506+
2507+
client.emit('close');
2508+
2509+
expect(callback1).not.toHaveBeenCalled();
2510+
expect(callback2).not.toHaveBeenCalled();
24842511
});
24852512

24862513
it('allows registering and unregistering the same callback multiple times', () => {
2487-
const client = new TestClient(options);
2514+
const client = new TestClient(getDefaultTestClientOptions());
24882515
const callback = vi.fn();
24892516

24902517
const unregister1 = client.on('close', callback);
@@ -2507,7 +2534,25 @@ describe('Client', () => {
25072534
callback.mockReset();
25082535
client.emit('close');
25092536

2510-
expect(callback).toHaveBeenCalledTimes(0);
2537+
expect(callback).not.toHaveBeenCalled();
2538+
});
2539+
2540+
it('handles unregistering a callback multiple times', () => {
2541+
const client = new TestClient(getDefaultTestClientOptions());
2542+
const callback = vi.fn();
2543+
2544+
const unregister = client.on('close', callback);
2545+
client.emit('close');
2546+
expect(callback).toHaveBeenCalledTimes(1);
2547+
2548+
callback.mockReset();
2549+
unregister();
2550+
unregister();
2551+
unregister();
2552+
2553+
client.emit('close');
2554+
2555+
expect(callback).not.toHaveBeenCalled();
25112556
});
25122557
});
25132558

0 commit comments

Comments
 (0)