@yoroi/common
Version:
The Common package of Yoroi SDK
44 lines • 1.56 kB
JavaScript
import { observerMaker } from './observer';
describe('Observer', () => {
let observer;
let mockSubscriber1;
let mockSubscriber2;
beforeEach(() => {
observer = observerMaker();
mockSubscriber1 = jest.fn();
mockSubscriber2 = jest.fn();
});
it('should allow subscribers to subscribe', () => {
observer.subscribe(mockSubscriber1);
observer.notify(42);
expect(mockSubscriber1).toHaveBeenCalledWith(42);
});
it('should allow multiple subscribers to subscribe', () => {
const client1 = observer.subscribe(mockSubscriber1);
const client2 = observer.subscribe(mockSubscriber2);
observer.notify(42);
expect(mockSubscriber1).toHaveBeenCalledWith(42);
expect(mockSubscriber2).toHaveBeenCalledWith(42);
client1.unsubscribe();
client2.unsubscribe();
});
it('should allow subscribers to unsubscribe', () => {
const client1 = observer.subscribe(mockSubscriber1);
client1.unsubscribe();
observer.notify(42);
expect(mockSubscriber1).not.toHaveBeenCalled();
});
it('should allow destroying all subscriptions', () => {
const client1 = observer.subscribe(mockSubscriber1);
observer.subscribe(mockSubscriber2);
observer.unsubscribe(client1);
observer.notify(42);
expect(mockSubscriber2).toHaveBeenCalledWith(42);
expect(mockSubscriber1).not.toHaveBeenCalled();
observer.destroy();
observer.notify(42);
expect(mockSubscriber1).not.toHaveBeenCalled();
expect(mockSubscriber2).toHaveBeenCalledTimes(1);
});
});
//# sourceMappingURL=observer.test.js.map