cadfa70e60
* #708 apply strictier linting rules and fix simple eslint bugs * #708 fix eslint errors relate to promise * #708 fix eslint import/no-extraneous-dependencies * #708 fix eslint errors of react-hook * #708 enable eslint check for typescript --------- Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
77 lines
2.4 KiB
TypeScript
77 lines
2.4 KiB
TypeScript
import { parseMessage } from '@/websocket/messaging/parseMessage'
|
|
import { WS_INBOUND_EVENTS } from '@/websocket/protocols'
|
|
|
|
describe('parseMessage', () => {
|
|
it('should return empty set for non-object messages', () => {
|
|
const result1 = parseMessage(null)
|
|
const result2 = parseMessage('string')
|
|
const result3 = parseMessage(123)
|
|
|
|
expect(result1.calendarsToRefresh).toEqual(new Set<string>())
|
|
expect(result2.calendarsToRefresh).toEqual(new Set<string>())
|
|
expect(result3.calendarsToRefresh).toEqual(new Set<string>())
|
|
})
|
|
|
|
it('should handle registered event', () => {
|
|
const message = {
|
|
[WS_INBOUND_EVENTS.CLIENT_REGISTERED]: [
|
|
'/calendars/cal1/entry1',
|
|
'/calendars/cal2/entry2'
|
|
]
|
|
}
|
|
|
|
const result = parseMessage(message)
|
|
|
|
expect(result.calendarsToRefresh).toContain('/calendars/cal1/entry1')
|
|
expect(result.calendarsToRefresh).toContain('/calendars/cal2/entry2')
|
|
expect(result.calendarsToRefresh.size).toBe(2)
|
|
})
|
|
|
|
it('should handle unregistered event', () => {
|
|
const message = {
|
|
[WS_INBOUND_EVENTS.CLIENT_UNREGISTERED]: ['/calendars/cal1/entry1']
|
|
}
|
|
|
|
const result = parseMessage(message)
|
|
|
|
expect(result.calendarsToHide).toContain('/calendars/cal1/entry1')
|
|
})
|
|
|
|
it('should handle calendar path updates', () => {
|
|
const message = {
|
|
'/calendars/cal1/entry1': { updated: true }
|
|
}
|
|
|
|
const result = parseMessage(message)
|
|
|
|
expect(result.calendarsToRefresh).toContain('/calendars/cal1/entry1')
|
|
expect(result.calendarsToRefresh.size).toBe(1)
|
|
})
|
|
|
|
it('should parse multiple calendar paths', () => {
|
|
const message = {
|
|
'/calendars/cal1/entry1': {},
|
|
'/calendars/cal2/entry2': {}
|
|
}
|
|
|
|
const result = parseMessage(message)
|
|
|
|
expect(result.calendarsToRefresh.size).toBe(2)
|
|
expect(result.calendarsToRefresh).toContain('/calendars/cal1/entry1')
|
|
expect(result.calendarsToRefresh).toContain('/calendars/cal2/entry2')
|
|
})
|
|
|
|
it('should handle multiple event types in single message', () => {
|
|
const message = {
|
|
[WS_INBOUND_EVENTS.CLIENT_REGISTERED]: ['/calendars/cal1/entry1'],
|
|
[WS_INBOUND_EVENTS.CLIENT_UNREGISTERED]: ['/calendars/cal2/entry2'],
|
|
'/calendars/cal1/entry1': {}
|
|
}
|
|
|
|
const result = parseMessage(message)
|
|
|
|
expect(result.calendarsToRefresh.size).toBe(1)
|
|
expect(result.calendarsToRefresh).toContain('/calendars/cal1/entry1')
|
|
})
|
|
})
|