@@ -29,26 +29,47 @@ var secondsToHours = 3600;
2929var secondsToDays = 86400 ;
3030
3131
32- describe ( 'delayNode ' , function ( ) {
33-
32+ describe ( 'delay Node ' , function ( ) {
33+
3434 beforeEach ( function ( done ) {
3535 helper . startServer ( done ) ;
3636 } ) ;
37-
37+
3838 afterEach ( function ( done ) {
3939 helper . unload ( ) ;
4040 helper . stopServer ( done ) ;
4141 } ) ;
4242
4343 it ( 'should be loaded' , function ( done ) {
44- var flow = [ { "id" :"delayNode1" , "type" :"delay" , "name" :"delayNode" , "pauseType" :"delay" , "timeout" :"5" , "timeoutUnits" :"seconds" , "rate" :"1" , "rateUnits" :"second " , "randomFirst" :"1" , "randomLast" :"5" , "randomUnits" :"seconds" , "drop" :false , "wires" :[ [ ] ] } ] ;
44+ var flow = [ { "id" :"delayNode1" , "type" :"delay" , "name" :"delayNode" , "pauseType" :"delay" , "timeout" :"5" , "timeoutUnits" :"seconds" , "rate" :"1" , "rateUnits" :"day " , "randomFirst" :"1" , "randomLast" :"5" , "randomUnits" :"seconds" , "drop" :false , "wires" :[ [ ] ] } ] ;
4545 helper . load ( delayNode , flow , function ( ) {
4646 var delayNode1 = helper . getNode ( "delayNode1" ) ;
4747 delayNode1 . should . have . property ( 'name' , 'delayNode' ) ;
48+ delayNode1 . should . have . property ( 'rate' , 86400000 ) ;
4849 done ( ) ;
4950 } ) ;
5051 } ) ;
51-
52+
53+ it ( 'should be able to set rate to hour' , function ( done ) {
54+ var flow = [ { "id" :"delayNode1" , "type" :"delay" , "name" :"delayNode" , "pauseType" :"delay" , "timeout" :"5" , "timeoutUnits" :"seconds" , "rate" :"1" , "rateUnits" :"hour" , "randomFirst" :"1" , "randomLast" :"5" , "randomUnits" :"seconds" , "drop" :false , "wires" :[ [ ] ] } ] ;
55+ helper . load ( delayNode , flow , function ( ) {
56+ var delayNode1 = helper . getNode ( "delayNode1" ) ;
57+ delayNode1 . should . have . property ( 'name' , 'delayNode' ) ;
58+ delayNode1 . should . have . property ( 'rate' , 3600000 ) ;
59+ done ( ) ;
60+ } ) ;
61+ } ) ;
62+
63+ it ( 'should be able to set rate to minute' , function ( done ) {
64+ var flow = [ { "id" :"delayNode1" , "type" :"delay" , "name" :"delayNode" , "pauseType" :"delay" , "timeout" :"5" , "timeoutUnits" :"seconds" , "rate" :"1" , "rateUnits" :"minute" , "randomFirst" :"1" , "randomLast" :"5" , "randomUnits" :"seconds" , "drop" :false , "wires" :[ [ ] ] } ] ;
65+ helper . load ( delayNode , flow , function ( ) {
66+ var delayNode1 = helper . getNode ( "delayNode1" ) ;
67+ delayNode1 . should . have . property ( 'name' , 'delayNode' ) ;
68+ delayNode1 . should . have . property ( 'rate' , 60000 ) ;
69+ done ( ) ;
70+ } ) ;
71+ } ) ;
72+
5273 var TimeUnitEnum = {
5374 MILLIS : "milliseconds" ,
5475 SECONDS : "seconds" ,
@@ -367,7 +388,7 @@ describe('delayNode', function() {
367388 randomDelayTest ( 0.4 , 0.8 , "seconds" , done ) ;
368389 } ) ;
369390
370- it ( ' randomly delays the message in milliseconds' , function ( done ) {
391+ it ( 'randomly delays the message in milliseconds' , function ( done ) {
371392 randomDelayTest ( "400" , "800" , "milliseconds" , done ) ;
372393 } ) ;
373394
@@ -416,5 +437,43 @@ describe('delayNode', function() {
416437 }
417438 } ) ;
418439 } ) ;
419-
440+
441+ it ( 'handles delay queue' , function ( done ) {
442+ this . timeout ( 6000 ) ;
443+
444+ var flow = [ { "id" :"delayNode1" , "type" :"delay" , "name" :"delayNode" , "pauseType" :"queue" , "timeout" :5 , "timeoutUnits" :"seconds" , "rate" :1000 , "rateUnits" :"second" , "randomFirst" :"1" , "randomLast" :"5" , "randomUnits" :"seconds" , "drop" :false , "wires" :[ [ "helperNode1" ] ] } ,
445+ { id :"helperNode1" , type :"helper" , wires :[ ] } ] ;
446+ helper . load ( delayNode , flow , function ( ) {
447+ var delayNode1 = helper . getNode ( "delayNode1" ) ;
448+ var helperNode1 = helper . getNode ( "helperNode1" ) ;
449+ var messages = 2 ;
450+ var c = 0 ;
451+
452+ helperNode1 . on ( "input" , function ( msg ) {
453+ c += 1 ;
454+ msg . should . have . a . property ( 'payload' ) ;
455+ msg . should . have . a . property ( 'topic' ) ;
456+ if ( msg . topic === "A" ) {
457+ msg . payload . should . equal ( 4 ) ;
458+ }
459+ else {
460+ msg . topic . should . equal ( "_none_" ) ;
461+ msg . payload . should . equal ( 2 ) ;
462+ }
463+ if ( c == 2 ) {
464+ done ( ) ; // it will timeout if we don't receive both messages
465+ }
466+ } ) ;
467+
468+ // send test messages
469+ delayNode1 . receive ( { payload :1 , topic :"A" } ) ;
470+ delayNode1 . receive ( { payload :1 } ) ;
471+ delayNode1 . receive ( { payload :2 , topic :"A" } ) ;
472+ delayNode1 . receive ( { payload :3 , topic :"A" } ) ;
473+ delayNode1 . receive ( { payload :2 } ) ; // only this should get out
474+ delayNode1 . receive ( { payload :4 , topic :"A" } ) ; // and this one also
475+
476+ } ) ;
477+ } ) ;
478+
420479} ) ;
0 commit comments