@@ -11,16 +11,22 @@ import {
11
11
test ( 'subscribe in constructor' , ( ) => {
12
12
const storeSubscribeFn = jest . fn ( ) ;
13
13
const subscribeFn = jest . fn ( ) ;
14
+ const subscribeFn1 = jest . fn ( ) ;
15
+ const subscribeFn2 = jest . fn ( ) ;
16
+ const subscribeFn3 = jest . fn ( ) ;
14
17
const whenFn = jest . fn ( ) ;
15
18
16
19
@injectable ( )
17
20
class Foo {
18
21
unsubscribe : ( ) => void ;
19
22
23
+ unsubscribe1 : ( ) => void ;
24
+
20
25
dispose : ( ) => void ;
21
26
22
27
constructor ( ) {
23
28
this . unsubscribe = subscribe ( this , subscribeFn ) ;
29
+ this . unsubscribe1 = subscribe ( this , subscribeFn1 , { immediate : true } ) ;
24
30
this . dispose = watch ( this , ( ) => this . count , whenFn ) ;
25
31
}
26
32
@@ -76,37 +82,51 @@ test('subscribe in constructor', () => {
76
82
foo . increase ( ) ;
77
83
expect ( storeSubscribeFn . mock . calls . length ) . toBe ( 1 ) ;
78
84
expect ( subscribeFn . mock . calls . length ) . toBe ( 1 ) ;
85
+ expect ( subscribeFn1 . mock . calls . length ) . toBe ( 2 ) ;
79
86
expect ( subscribeFn . mock . calls ) . toEqual ( [ [ ] ] ) ;
80
87
expect ( whenFn . mock . calls ) . toEqual ( [ [ 2 , 1 ] ] ) ;
81
88
foo . increase ( ) ;
82
89
expect ( storeSubscribeFn . mock . calls . length ) . toBe ( 2 ) ;
83
90
expect ( subscribeFn . mock . calls . length ) . toBe ( 2 ) ;
91
+ expect ( subscribeFn1 . mock . calls . length ) . toBe ( 3 ) ;
84
92
expect ( whenFn . mock . calls ) . toEqual ( [
85
93
[ 2 , 1 ] ,
86
94
[ 3 , 2 ] ,
87
95
] ) ;
88
96
foo . increase1 ( ) ;
89
97
expect ( storeSubscribeFn . mock . calls . length ) . toBe ( 3 ) ;
90
98
expect ( subscribeFn . mock . calls . length ) . toBe ( 3 ) ;
99
+ expect ( subscribeFn1 . mock . calls . length ) . toBe ( 4 ) ;
91
100
expect ( whenFn . mock . calls ) . toEqual ( [
92
101
[ 2 , 1 ] ,
93
102
[ 3 , 2 ] ,
94
103
] ) ;
95
104
foo . increase1 ( ) ;
96
105
expect ( storeSubscribeFn . mock . calls . length ) . toBe ( 4 ) ;
97
106
expect ( subscribeFn . mock . calls . length ) . toBe ( 4 ) ;
107
+ expect ( subscribeFn1 . mock . calls . length ) . toBe ( 5 ) ;
98
108
expect ( whenFn . mock . calls . length ) . toEqual ( 2 ) ;
99
109
100
110
foo . unsubscribe ( ) ;
111
+ foo . unsubscribe1 ( ) ;
101
112
foo . increase ( ) ;
102
113
expect ( storeSubscribeFn . mock . calls . length ) . toBe ( 5 ) ;
103
114
expect ( subscribeFn . mock . calls . length ) . toBe ( 4 ) ;
115
+ expect ( subscribeFn1 . mock . calls . length ) . toBe ( 5 ) ;
104
116
expect ( whenFn . mock . calls . length ) . toEqual ( 3 ) ;
105
117
118
+ subscribe ( foo , subscribeFn2 ) ;
119
+ expect ( subscribeFn2 . mock . calls . length ) . toBe ( 0 ) ;
120
+
121
+ subscribe ( foo , subscribeFn3 , { immediate : true } ) ;
122
+ expect ( subscribeFn3 . mock . calls . length ) . toBe ( 1 ) ;
123
+
106
124
foo . dispose ( ) ;
107
125
foo . increase ( ) ;
108
126
expect ( storeSubscribeFn . mock . calls . length ) . toBe ( 6 ) ;
109
127
expect ( whenFn . mock . calls . length ) . toEqual ( 3 ) ;
128
+ expect ( subscribeFn2 . mock . calls . length ) . toBe ( 1 ) ;
129
+ expect ( subscribeFn3 . mock . calls . length ) . toBe ( 2 ) ;
110
130
} ) ;
111
131
112
132
test ( 'subscribe in non-constructor' , ( ) => {
0 commit comments