1- import { computed , deferredComputed , effect , ref } from '../src'
1+ import { computed , effect , ref } from '../src'
22
33describe ( 'deferred computed' , ( ) => {
4- const tick = Promise . resolve ( )
5-
6- test ( 'should only trigger once on multiple mutations' , async ( ) => {
4+ test ( 'should not trigger if value did not change' , ( ) => {
75 const src = ref ( 0 )
8- const c = deferredComputed ( ( ) => src . value )
6+ const c = computed ( ( ) => src . value % 2 )
97 const spy = vi . fn ( )
108 effect ( ( ) => {
119 spy ( c . value )
1210 } )
1311 expect ( spy ) . toHaveBeenCalledTimes ( 1 )
14- src . value = 1
1512 src . value = 2
16- src . value = 3
17- // not called yet
18- expect ( spy ) . toHaveBeenCalledTimes ( 1 )
19- await tick
20- // should only trigger once
21- expect ( spy ) . toHaveBeenCalledTimes ( 2 )
22- expect ( spy ) . toHaveBeenCalledWith ( c . value )
23- } )
2413
25- test ( 'should not trigger if value did not change' , async ( ) => {
26- const src = ref ( 0 )
27- const c = deferredComputed ( ( ) => src . value % 2 )
28- const spy = vi . fn ( )
29- effect ( ( ) => {
30- spy ( c . value )
31- } )
32- expect ( spy ) . toHaveBeenCalledTimes ( 1 )
33- src . value = 1
34- src . value = 2
35-
36- await tick
3714 // should not trigger
3815 expect ( spy ) . toHaveBeenCalledTimes ( 1 )
3916
4017 src . value = 3
41- src . value = 4
4218 src . value = 5
43- await tick
4419 // should trigger because latest value changes
4520 expect ( spy ) . toHaveBeenCalledTimes ( 2 )
4621 } )
4722
48- test ( 'chained computed trigger' , async ( ) => {
23+ test ( 'chained computed trigger' , ( ) => {
4924 const effectSpy = vi . fn ( )
5025 const c1Spy = vi . fn ( )
5126 const c2Spy = vi . fn ( )
5227
5328 const src = ref ( 0 )
54- const c1 = deferredComputed ( ( ) => {
29+ const c1 = computed ( ( ) => {
5530 c1Spy ( )
5631 return src . value % 2
5732 } )
@@ -69,19 +44,18 @@ describe('deferred computed', () => {
6944 expect ( effectSpy ) . toHaveBeenCalledTimes ( 1 )
7045
7146 src . value = 1
72- await tick
7347 expect ( c1Spy ) . toHaveBeenCalledTimes ( 2 )
7448 expect ( c2Spy ) . toHaveBeenCalledTimes ( 2 )
7549 expect ( effectSpy ) . toHaveBeenCalledTimes ( 2 )
7650 } )
7751
78- test ( 'chained computed avoid re-compute' , async ( ) => {
52+ test ( 'chained computed avoid re-compute' , ( ) => {
7953 const effectSpy = vi . fn ( )
8054 const c1Spy = vi . fn ( )
8155 const c2Spy = vi . fn ( )
8256
8357 const src = ref ( 0 )
84- const c1 = deferredComputed ( ( ) => {
58+ const c1 = computed ( ( ) => {
8559 c1Spy ( )
8660 return src . value % 2
8761 } )
@@ -98,26 +72,24 @@ describe('deferred computed', () => {
9872 src . value = 2
9973 src . value = 4
10074 src . value = 6
101- await tick
102- // c1 should re-compute once.
103- expect ( c1Spy ) . toHaveBeenCalledTimes ( 2 )
75+ expect ( c1Spy ) . toHaveBeenCalledTimes ( 4 )
10476 // c2 should not have to re-compute because c1 did not change.
10577 expect ( c2Spy ) . toHaveBeenCalledTimes ( 1 )
10678 // effect should not trigger because c2 did not change.
10779 expect ( effectSpy ) . toHaveBeenCalledTimes ( 1 )
10880 } )
10981
110- test ( 'chained computed value invalidation' , async ( ) => {
82+ test ( 'chained computed value invalidation' , ( ) => {
11183 const effectSpy = vi . fn ( )
11284 const c1Spy = vi . fn ( )
11385 const c2Spy = vi . fn ( )
11486
11587 const src = ref ( 0 )
116- const c1 = deferredComputed ( ( ) => {
88+ const c1 = computed ( ( ) => {
11789 c1Spy ( )
11890 return src . value % 2
11991 } )
120- const c2 = deferredComputed ( ( ) => {
92+ const c2 = computed ( ( ) => {
12193 c2Spy ( )
12294 return c1 . value + 1
12395 } )
@@ -139,17 +111,17 @@ describe('deferred computed', () => {
139111 expect ( c2Spy ) . toHaveBeenCalledTimes ( 2 )
140112 } )
141113
142- test ( 'sync access of invalidated chained computed should not prevent final effect from running' , async ( ) => {
114+ test ( 'sync access of invalidated chained computed should not prevent final effect from running' , ( ) => {
143115 const effectSpy = vi . fn ( )
144116 const c1Spy = vi . fn ( )
145117 const c2Spy = vi . fn ( )
146118
147119 const src = ref ( 0 )
148- const c1 = deferredComputed ( ( ) => {
120+ const c1 = computed ( ( ) => {
149121 c1Spy ( )
150122 return src . value % 2
151123 } )
152- const c2 = deferredComputed ( ( ) => {
124+ const c2 = computed ( ( ) => {
153125 c2Spy ( )
154126 return c1 . value + 1
155127 } )
@@ -162,14 +134,13 @@ describe('deferred computed', () => {
162134 src . value = 1
163135 // sync access c2
164136 c2 . value
165- await tick
166137 expect ( effectSpy ) . toHaveBeenCalledTimes ( 2 )
167138 } )
168139
169- test ( 'should not compute if deactivated before scheduler is called' , async ( ) => {
140+ test ( 'should not compute if deactivated before scheduler is called' , ( ) => {
170141 const c1Spy = vi . fn ( )
171142 const src = ref ( 0 )
172- const c1 = deferredComputed ( ( ) => {
143+ const c1 = computed ( ( ) => {
173144 c1Spy ( )
174145 return src . value % 2
175146 } )
@@ -179,7 +150,6 @@ describe('deferred computed', () => {
179150 c1 . effect . stop ( )
180151 // trigger
181152 src . value ++
182- await tick
183153 expect ( c1Spy ) . toHaveBeenCalledTimes ( 1 )
184154 } )
185155} )
0 commit comments