11import { HandlerRegistry } from './handler-registry'
22import { Mock , IMock , Times , It } from 'typemoq'
33import { Logger } from '@node-ts/logger-core'
4- import { TestEvent , TestEventHandler , TestCommandHandler } from '../test'
4+ import { TestEvent , TestEventHandler , TestCommandHandler , TestCommand } from '../test'
55import { Container , interfaces } from 'inversify'
6+ import { Message } from '@node-ts/bus-messages'
67
78describe ( 'HandlerRegistry' , ( ) => {
89 let sut : HandlerRegistry
910
1011 let logger : IMock < Logger >
1112
12- const messageName = TestEvent . name
13+ const messageName = TestEvent . NAME
1314 const symbol = Symbol ( )
1415 const handler = TestEventHandler
1516 const messageType = TestEvent
@@ -21,16 +22,21 @@ describe('HandlerRegistry', () => {
2122 )
2223 } )
2324
24- describe ( 'when registring a handler' , ( ) => {
25+ describe ( 'when registering a handler for a bus message ' , ( ) => {
2526 beforeEach ( ( ) => {
26- sut . register ( messageName , symbol , handler , messageType )
27+ sut . register ( ( m : Message ) => m . $name === messageName , symbol , handler , messageType )
2728 } )
2829
2930 it ( 'should register the handler' , ( ) => {
30- const handlers = sut . get ( messageName )
31+ const handlers = sut . get ( new TestEvent ( ) )
3132 expect ( handlers ) . toHaveLength ( 1 )
3233 } )
3334
35+ it ( 'should add it to the subscribed bus messages list' , ( ) => {
36+ const subscription = sut . subscribedBusMessages . find ( s => new s ( ) . $name === messageType . NAME )
37+ expect ( subscription ) . toBeDefined ( )
38+ } )
39+
3440 describe ( 'when binding handlers to the container' , ( ) => {
3541 let container : IMock < Container >
3642 let bindingTo : IMock < interfaces . BindingToSyntax < { } > >
@@ -66,10 +72,21 @@ describe('HandlerRegistry', () => {
6672 } )
6773 } )
6874
69- describe ( 'when registrying a handler twice ' , ( ) => {
75+ describe ( 'when registering a handler for an external message ' , ( ) => {
7076 beforeEach ( ( ) => {
71- sut . register ( messageName , symbol , handler , messageType )
72- sut . register ( messageName , symbol , handler , messageType )
77+ sut . register ( ( m : Message ) => m . $name === messageName , symbol , handler )
78+ } )
79+
80+ it ( 'should not include the message in the subscribed bus messages list' , ( ) => {
81+ const messageSubscription = sut . subscribedBusMessages . find ( m => new m ( ) . $name === messageName )
82+ expect ( messageSubscription ) . toBeUndefined ( )
83+ } )
84+ } )
85+
86+ describe ( 'when registering a handler twice' , ( ) => {
87+ beforeEach ( ( ) => {
88+ sut . register ( ( m : Message ) => m . $name === messageName , symbol , handler , messageType )
89+ sut . register ( ( m : Message ) => m . $name === messageName , symbol , handler , messageType )
7390 } )
7491
7592 it ( 'should warn that the handler is already registered' , ( ) => {
@@ -80,32 +97,25 @@ describe('HandlerRegistry', () => {
8097 } )
8198
8299 it ( 'should register a single instance of the handler' , ( ) => {
83- const handlers = sut . get ( messageName )
100+ const handlers = sut . get ( new TestEvent ( ) )
84101 expect ( handlers ) . toHaveLength ( 1 )
85102 } )
86103 } )
87104
88- describe ( 'when adding two handlers of the same name' , ( ) => {
89- it ( 'should throw an error' , ( ) => {
90- sut . register ( messageName , symbol , handler , messageType )
91- expect ( ( ) => sut . register ( 'random' , symbol , handler , messageType ) ) . toThrowError ( )
92- } )
93- } )
94-
95105 describe ( 'when getting a handler' , ( ) => {
96- it ( 'should return an empty array for an unregisterd handler' , ( ) => {
97- expect ( sut . get ( '' ) ) . toHaveLength ( 0 )
106+ it ( 'should return an empty array for an unregistered handler' , ( ) => {
107+ expect ( sut . get ( new TestCommand ( ) ) ) . toHaveLength ( 0 )
98108 } )
99109
100110 it ( 'should return a single handler for a single registration' , ( ) => {
101- sut . register ( messageName , symbol , handler , messageType )
102- expect ( sut . get ( messageName ) ) . toHaveLength ( 1 )
111+ sut . register ( ( m : Message ) => m . $name === messageName , symbol , handler , messageType )
112+ expect ( sut . get ( new TestEvent ( ) ) ) . toHaveLength ( 1 )
103113 } )
104114
105115 it ( 'should return a multiple handlers for multiple registrations' , ( ) => {
106- sut . register ( messageName , symbol , handler , messageType )
107- sut . register ( messageName , Symbol ( ) , TestCommandHandler , messageType )
108- expect ( sut . get ( messageName ) ) . toHaveLength ( 2 )
116+ sut . register ( ( m : Message ) => m . $name === messageName , symbol , handler , messageType )
117+ sut . register ( ( m : Message ) => m . $name === messageName , Symbol ( ) , TestCommandHandler , messageType )
118+ expect ( sut . get ( new TestEvent ( ) ) ) . toHaveLength ( 2 )
109119 } )
110120 } )
111121
0 commit comments