mirror of
https://github.com/Cameri/nostream.git
synced 2025-06-08 22:19:11 +02:00
79 lines
2.4 KiB
TypeScript
79 lines
2.4 KiB
TypeScript
import { expect } from 'chai'
|
|
|
|
import { IEventRepository, IUserRepository } from '../../../src/@types/repositories'
|
|
import { IncomingMessage, MessageType } from '../../../src/@types/messages'
|
|
import { DelegatedEventMessageHandler } from '../../../src/handlers/delegated-event-message-handler'
|
|
import { Event } from '../../../src/@types/event'
|
|
import { EventMessageHandler } from '../../../src/handlers/event-message-handler'
|
|
import { EventTags } from '../../../src/constants/base'
|
|
import { IWebSocketAdapter } from '../../../src/@types/adapters'
|
|
import { messageHandlerFactory } from '../../../src/factories/message-handler-factory'
|
|
import { SubscribeMessageHandler } from '../../../src/handlers/subscribe-message-handler'
|
|
import { UnsubscribeMessageHandler } from '../../../src/handlers/unsubscribe-message-handler'
|
|
|
|
describe('messageHandlerFactory', () => {
|
|
let event: Event
|
|
let eventRepository: IEventRepository
|
|
let userRepository: IUserRepository
|
|
let message: IncomingMessage
|
|
let adapter: IWebSocketAdapter
|
|
let factory
|
|
|
|
beforeEach(() => {
|
|
eventRepository = {} as any
|
|
userRepository = {} as any
|
|
adapter = {} as any
|
|
event = {
|
|
tags: [],
|
|
} as any
|
|
factory = messageHandlerFactory(eventRepository, userRepository)
|
|
})
|
|
|
|
it('returns EventMessageHandler when given an EVENT message', () => {
|
|
message = [
|
|
MessageType.EVENT,
|
|
event,
|
|
]
|
|
|
|
expect(factory([message, adapter])).to.be.an.instanceOf(EventMessageHandler)
|
|
})
|
|
|
|
it('returns DelegatedEventMessageHandler when given an EVENT message with delegated event', () => {
|
|
event.tags = [
|
|
[EventTags.Delegation, '', '', ''],
|
|
]
|
|
message = [
|
|
MessageType.EVENT,
|
|
event,
|
|
]
|
|
|
|
expect(factory([message, adapter])).to.be.an.instanceOf(DelegatedEventMessageHandler)
|
|
})
|
|
|
|
it('returns SubscribeMessageHandler when given a REQ message', () => {
|
|
message = [
|
|
MessageType.REQ,
|
|
'',
|
|
{},
|
|
] as any
|
|
|
|
expect(factory([message, adapter])).to.be.an.instanceOf(SubscribeMessageHandler)
|
|
})
|
|
|
|
it('returns UnsubscribeMessageHandler when given a REQ message', () => {
|
|
message = [
|
|
MessageType.CLOSE,
|
|
'',
|
|
]
|
|
|
|
expect(factory([message, adapter])).to.be.an.instanceOf(UnsubscribeMessageHandler)
|
|
})
|
|
|
|
it('throws when given an invalid message', () => {
|
|
message = [] as any
|
|
|
|
expect(() => factory([message, adapter])).to.throw(Error, 'Unknown message type: undefined')
|
|
})
|
|
|
|
|
|
}) |