@@ -396,6 +396,61 @@ describe('Reactor', () => {
396396
397397 expect ( mockFn . calls . count ( ) ) . toEqual ( 0 )
398398 } )
399+
400+ it ( 'should trigger an observer for a late registered store' , ( ) => {
401+ var mockFn = jasmine . createSpy ( )
402+ var reactor = new Reactor ( )
403+ reactor . observe ( [ 'test' ] , mockFn )
404+
405+ expect ( mockFn . calls . count ( ) ) . toEqual ( 0 )
406+
407+ reactor . registerStores ( {
408+ test : Store ( {
409+ getInitialState ( ) {
410+ return 1
411+ }
412+ } )
413+ } )
414+
415+ expect ( mockFn . calls . count ( ) ) . toEqual ( 1 )
416+ expect ( mockFn . calls . argsFor ( 0 ) ) . toEqual ( [ 1 ] )
417+ } )
418+
419+ it ( 'should trigger an observer for a late registered store for the identity getter' , ( ) => {
420+ var mockFn = jasmine . createSpy ( )
421+ var reactor = new Reactor ( )
422+ reactor . observe ( [ ] , mockFn )
423+
424+ expect ( mockFn . calls . count ( ) ) . toEqual ( 0 )
425+
426+ reactor . registerStores ( {
427+ test : Store ( {
428+ getInitialState ( ) {
429+ return 1
430+ } ,
431+ initialize ( ) {
432+ this . on ( 'increment' , ( state ) => state + 1 )
433+ }
434+ } )
435+ } )
436+
437+ // it should call the observer after the store has been registered
438+ expect ( mockFn . calls . count ( ) ) . toEqual ( 1 )
439+ var observedValue = mockFn . calls . argsFor ( 0 ) [ 0 ]
440+ var expectedHandlerValue = Map ( {
441+ test : 1
442+ } )
443+ expect ( is ( observedValue , expectedHandlerValue ) ) . toBe ( true )
444+
445+ // it should call the observer again when the store handles an action
446+ reactor . dispatch ( 'increment' )
447+ expect ( mockFn . calls . count ( ) ) . toEqual ( 2 )
448+ var observedValue = mockFn . calls . argsFor ( 1 ) [ 0 ]
449+ var expectedHandlerValue = Map ( {
450+ test : 2
451+ } )
452+ expect ( is ( observedValue , expectedHandlerValue ) ) . toBe ( true )
453+ } )
399454 } )
400455
401456 describe ( '#unobserve' , ( ) => {
0 commit comments