@@ -10,6 +10,7 @@ import { Param } from '../src/params/param';
10
10
import { Rejection , RejectType } from '../src/transition/rejectFactory' ;
11
11
import { TestingPlugin } from './_testingPlugin' ;
12
12
import { StateDeclaration } from '../src/state/interface' ;
13
+ import { PathNode } from '../src/path/pathNode' ;
13
14
14
15
describe ( 'stateService' , function ( ) {
15
16
let router : UIRouter ;
@@ -504,14 +505,66 @@ describe('stateService', function () {
504
505
await initStateTo ( A ) ;
505
506
expect ( enterlog ) . toBe ( 'A;' ) ;
506
507
507
- let promise = $state . transitionTo ( A , { } ) ; // no-op
508
- expect ( promise ) . toBeDefined ( ) ; // but we still get a valid promise
509
- let value = await promise ;
508
+ try {
509
+ let promise = $state . transitionTo ( A , { } ) ; // no-op
510
+ await promise . transition . promise ;
511
+ } catch ( error ) {
512
+ let reject = error as Rejection ;
513
+ expect ( reject . type ) . toBe ( RejectType . IGNORED ) ;
514
+ expect ( reject . message ) . toMatch ( / i g n o r e d / ) ;
515
+ expect ( $state . current ) . toBe ( A ) ;
516
+ expect ( enterlog ) . toBe ( 'A;' ) ;
517
+
518
+ done ( ) ;
519
+ }
520
+ } ) ;
521
+
522
+ it ( 'is not ignored when reload: true option is set' , async ( done ) => {
523
+ let enterlog = "" ;
524
+ $transitions . onEnter ( { entering : 'A' } , ( trans , state ) => { enterlog += state . name + ";" ; } ) ;
525
+ await initStateTo ( A ) ;
526
+ expect ( enterlog ) . toBe ( 'A;' ) ;
527
+
528
+ let value = await $state . transitionTo ( A , { } , { reload : true } ) ;
510
529
511
530
expect ( value ) . toBe ( A ) ;
512
531
expect ( $state . current ) . toBe ( A ) ;
532
+ expect ( enterlog ) . toBe ( 'A;A;' ) ;
533
+
534
+ done ( ) ;
535
+ } ) ;
536
+
537
+ it ( 'is not ignored if any nodes are found in treechanges.entering' , async ( done ) => {
538
+ let enterlog = "" ;
539
+ $transitions . onEnter ( { entering : 'A' } , ( trans , state ) => { enterlog += state . name + ";" ; } ) ;
540
+ await initStateTo ( A ) ;
513
541
expect ( enterlog ) . toBe ( 'A;' ) ;
514
542
543
+ let pathNode = new PathNode ( A . $$state ( ) ) ;
544
+ $transitions . onCreate ( { } , trans => trans . treeChanges ( ) . entering . push ( pathNode ) ) ;
545
+
546
+ let goPromise = $state . transitionTo ( A ) ;
547
+ await goPromise ;
548
+ await goPromise . transition . promise ;
549
+
550
+ expect ( enterlog ) . toBe ( 'A;A;' ) ;
551
+
552
+ done ( ) ;
553
+ } ) ;
554
+
555
+ it ( 'is not ignored if any nodes are found in treechanges.exiting' , async ( done ) => {
556
+ let exitlog = "" ;
557
+ $transitions . onExit ( { exiting : 'A' } , ( trans , state ) => { exitlog += state . name + ";" ; } ) ;
558
+ await initStateTo ( A ) ;
559
+
560
+ let pathNode = new PathNode ( A . $$state ( ) ) ;
561
+ $transitions . onCreate ( { } , trans => trans . treeChanges ( ) . exiting . push ( pathNode ) ) ;
562
+ let goPromise = $state . transitionTo ( A ) ;
563
+ await goPromise ;
564
+ await goPromise . transition . promise ;
565
+
566
+ expect ( exitlog ) . toBe ( 'A;' ) ;
567
+
515
568
done ( ) ;
516
569
} ) ;
517
570
0 commit comments