UNPKG

dbl-utils

Version:

Utilities for dbl, adba and others projects

1 lines 9.16 kB
{"file":"/home/diablo/dev/dbl-utils/__tests__/event-handler.test.ts","mappings":"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","names":[],"sources":["/home/diablo/dev/dbl-utils/__tests__/event-handler.test.ts"],"sourcesContent":["import { EventHandler } from '../src/event-handler';\r\n\r\ndescribe('EventHandler', () => {\r\n\r\n let eventHandler: EventHandler;\r\n\r\n beforeEach(() => {\r\n eventHandler = new EventHandler();\r\n });\r\n\r\n it('should subscribe to and dispatch an event', async () => {\r\n const mockCallback = jest.fn().mockResolvedValue('callback response');\r\n eventHandler.subscribe('testEvent', mockCallback, 'testId');\r\n\r\n const responses = await eventHandler.dispatch('testEvent', 'data1', 'data2');\r\n\r\n expect(mockCallback).toHaveBeenCalledWith('data1', 'data2', 'testId');\r\n expect(responses).toEqual(['callback response']);\r\n });\r\n\r\n it('should unsubscribe from an event', async () => {\r\n const mockCallback = jest.fn();\r\n eventHandler.subscribe('testEvent', mockCallback, 'testId');\r\n\r\n // Dispatch before unsubscribe\r\n await eventHandler.dispatch('testEvent');\r\n expect(mockCallback).toHaveBeenCalledTimes(1);\r\n\r\n eventHandler.unsubscribe('testEvent', 'testId');\r\n\r\n // Dispatch after unsubscribe\r\n await eventHandler.dispatch('testEvent');\r\n expect(mockCallback).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it('should handle wildcards in subscriptions', async () => {\r\n const mockCallback = jest.fn().mockResolvedValue('wildcard response');\r\n eventHandler.subscribe('test*', mockCallback, 'wildcardId');\r\n\r\n const responses = await eventHandler.dispatch('testWildCard___', 'data1', 'data2');\r\n\r\n expect(mockCallback).toHaveBeenCalledWith('data1', 'data2', 'wildcardId');\r\n expect(responses).toEqual(['wildcard response']);\r\n });\r\n\r\n it('should update cache correctly when unsubscribing', async () => {\n const mockCallback = jest.fn();\r\n eventHandler.subscribe('testEvent', mockCallback, 'testId');\r\n await eventHandler.dispatch('testEvent');\r\n\r\n eventHandler.unsubscribe('testEvent', 'testId');\r\n\r\n // Manually checking cache should not have testEvent anymore\r\n const cacheKeyExist = () => 'testEvent' in (eventHandler as any).cache;\r\n expect(cacheKeyExist()).toBe(false);\n });\n\n it('should add callback to existing wildcard pattern instead of creating new pattern', async () => {\n const cb1 = jest.fn().mockResolvedValue('res1');\n const cb2 = jest.fn().mockResolvedValue('res2');\n eventHandler.subscribe('pattern*', cb1, 'id1');\n eventHandler.subscribe('pattern*', cb2, 'id2');\n const responses = await eventHandler.dispatch('patternMatch', 'data');\n expect(cb1).toHaveBeenCalledWith('data', 'id1');\n expect(cb2).toHaveBeenCalledWith('data', 'id2');\n expect(responses).toEqual(['res1', 'res2']);\n });\n\n it('should use cache branch on dispatch when cache exists, even if events and patterns are cleared', async () => {\n const cb = jest.fn().mockResolvedValue('cached');\n eventHandler.subscribe('e', cb, 'cacheId');\n await eventHandler.dispatch('e', 'data1');\n // clear internal events and patterns to force cache branch\n (eventHandler as any).events['e'] = [];\n (eventHandler as any).patterns = [];\n const responses = await eventHandler.dispatch('e', 'data2');\n expect(cb).toHaveBeenCalledWith('data2', 'cacheId');\n expect(responses).toEqual(['cached']);\n });\n\n it('should subscribe to multiple events separated by spaces and commas', async () => {\n const cb = jest.fn().mockResolvedValue('multi');\n eventHandler.subscribe('e1,e2 e3', cb, 'multiId');\n expect(await eventHandler.dispatch('e1')).toEqual(['multi']);\n expect(await eventHandler.dispatch('e2')).toEqual(['multi']);\n expect(await eventHandler.dispatch('e3')).toEqual(['multi']);\n });\n\n it('should remove wildcard subscriptions and clear cache entries matching pattern', async () => {\n const cb = jest.fn().mockResolvedValue('wild');\n eventHandler.subscribe('a*', cb, 'wildId');\n await eventHandler.dispatch('apple');\n eventHandler.unsubscribe('a*', 'wildId');\n const responses = await eventHandler.dispatch('apple');\n expect(responses).toEqual([]);\n });\n\n it('should remove direct event subscriptions and clear cache when no subscribers left', async () => {\n const cb = jest.fn();\n eventHandler.subscribe('dir', cb, 'dirId');\n await eventHandler.dispatch('dir');\n eventHandler.unsubscribe('dir', 'dirId');\n const responses = await eventHandler.dispatch('dir');\n expect(cb).toHaveBeenCalledTimes(1);\n expect(responses).toEqual([]);\n });\n\r\n});\n"],"version":3}