1
1
import {
2
2
ref ,
3
3
// effect,
4
- // reactive,
4
+ reactive ,
5
5
isRef ,
6
- // toRef,
7
- // toRefs,
6
+ toRef ,
7
+ toRefs ,
8
8
Ref ,
9
9
// isReactive,
10
10
computed ,
11
+ effect ,
11
12
} from '../../src' ;
12
13
// import { shallowRef, unref, customRef } from '../src/ref'
13
14
@@ -19,69 +20,69 @@ describe('reactivity/ref', () => {
19
20
expect ( a . value ) . toBe ( 2 ) ;
20
21
} ) ;
21
22
22
- // it('should be reactive', () => {
23
- // const a = ref(1);
24
- // let dummy;
25
- // effect(() => {
26
- // dummy = a.value;
27
- // });
28
- // expect(dummy).toBe(1);
29
- // a.value = 2;
30
- // expect(dummy).toBe(2);
31
- // });
32
-
33
- // it('should make nested properties reactive', () => {
34
- // const a = ref({
35
- // count: 1,
36
- // });
37
- // let dummy;
38
- // effect(() => {
39
- // dummy = a.value.count;
40
- // });
41
- // expect(dummy).toBe(1);
42
- // a.value.count = 2;
43
- // expect(dummy).toBe(2);
44
- // });
45
-
46
- // it('should work without initial value', () => {
47
- // const a = ref();
48
- // let dummy;
49
- // effect(() => {
50
- // dummy = a.value;
51
- // });
52
- // expect(dummy).toBe(undefined);
53
- // a.value = 2;
54
- // expect(dummy).toBe(2);
55
- // });
56
-
57
- // it('should work like a normal property when nested in a reactive object', () => {
58
- // const a = ref(1);
59
- // const obj = reactive({
60
- // a,
61
- // b: {
62
- // c: a,
63
- // },
64
- // });
65
-
66
- // let dummy1: number;
67
- // let dummy2: number;
23
+ it ( 'should be reactive' , ( ) => {
24
+ const a = ref ( 1 ) ;
25
+ let dummy ;
26
+ effect ( ( ) => {
27
+ dummy = a . value ;
28
+ } ) ;
29
+ expect ( dummy ) . toBe ( 1 ) ;
30
+ a . value = 2 ;
31
+ expect ( dummy ) . toBe ( 2 ) ;
32
+ } ) ;
68
33
69
- // effect(() => {
70
- // dummy1 = obj.a;
71
- // dummy2 = obj.b.c;
72
- // });
34
+ it ( 'should make nested properties reactive' , ( ) => {
35
+ const a = ref ( {
36
+ count : 1 ,
37
+ } ) ;
38
+ let dummy ;
39
+ effect ( ( ) => {
40
+ dummy = a . value . count ;
41
+ } ) ;
42
+ expect ( dummy ) . toBe ( 1 ) ;
43
+ a . value . count = 2 ;
44
+ expect ( dummy ) . toBe ( 2 ) ;
45
+ } ) ;
73
46
74
- // const assertDummiesEqualTo = (val: number) =>
75
- // [dummy1, dummy2].forEach(dummy => expect(dummy).toBe(val));
47
+ it ( 'should work without initial value' , ( ) => {
48
+ const a = ref ( ) ;
49
+ let dummy ;
50
+ effect ( ( ) => {
51
+ dummy = a . value ;
52
+ } ) ;
53
+ expect ( dummy ) . toBe ( undefined ) ;
54
+ a . value = 2 ;
55
+ expect ( dummy ) . toBe ( 2 ) ;
56
+ } ) ;
76
57
77
- // assertDummiesEqualTo(1);
78
- // a.value++;
79
- // assertDummiesEqualTo(2);
80
- // obj.a++;
81
- // assertDummiesEqualTo(3);
82
- // obj.b.c++;
83
- // assertDummiesEqualTo(4);
84
- // });
58
+ it ( 'should work like a normal property when nested in a reactive object' , ( ) => {
59
+ const a = ref ( 1 ) ;
60
+ const obj = reactive ( {
61
+ a,
62
+ b : {
63
+ c : a ,
64
+ } ,
65
+ } ) ;
66
+
67
+ let dummy1 : number ;
68
+ let dummy2 : number ;
69
+
70
+ effect ( ( ) => {
71
+ dummy1 = obj . a ;
72
+ dummy2 = obj . b . c ;
73
+ } ) ;
74
+
75
+ const assertDummiesEqualTo = ( val : number ) =>
76
+ [ dummy1 , dummy2 ] . forEach ( dummy => expect ( dummy ) . toBe ( val ) ) ;
77
+
78
+ assertDummiesEqualTo ( 1 ) ;
79
+ a . value ++ ;
80
+ assertDummiesEqualTo ( 2 ) ;
81
+ obj . a ++ ;
82
+ assertDummiesEqualTo ( 3 ) ;
83
+ obj . b . c ++ ;
84
+ assertDummiesEqualTo ( 4 ) ;
85
+ } ) ;
85
86
86
87
it ( 'should unwrap nested ref in types' , ( ) => {
87
88
const a = ref ( 0 ) ;
@@ -184,74 +185,74 @@ describe('reactivity/ref', () => {
184
185
expect ( isRef ( { value : 0 } ) ) . toBe ( false ) ;
185
186
} ) ;
186
187
187
- // test('toRef', () => {
188
- // const a = reactive({
189
- // x: 1,
190
- // });
191
- // const x = toRef(a, 'x');
192
- // expect(isRef(x)).toBe(true);
193
- // expect(x.value).toBe(1);
194
-
195
- // // source -> proxy
196
- // a.x = 2;
197
- // expect(x.value).toBe(2);
198
-
199
- // // proxy -> source
200
- // x.value = 3;
201
- // expect(a.x).toBe(3);
202
-
203
- // // reactivity
204
- // let dummyX;
205
- // effect(() => {
206
- // dummyX = x.value;
207
- // });
208
- // expect(dummyX).toBe(x.value);
209
-
210
- // // mutating source should trigger effect using the proxy refs
211
- // a.x = 4;
212
- // expect(dummyX).toBe(4);
213
- // });
214
-
215
- // test('toRefs', () => {
216
- // const a = reactive({
217
- // x: 1,
218
- // y: 2,
219
- // });
220
-
221
- // const { x, y } = toRefs(a);
222
-
223
- // expect(isRef(x)).toBe(true);
224
- // expect(isRef(y)).toBe(true);
225
- // expect(x.value).toBe(1);
226
- // expect(y.value).toBe(2);
227
-
228
- // // source -> proxy
229
- // a.x = 2;
230
- // a.y = 3;
231
- // expect(x.value).toBe(2);
232
- // expect(y.value).toBe(3);
233
-
234
- // // proxy -> source
235
- // x.value = 3;
236
- // y.value = 4;
237
- // expect(a.x).toBe(3);
238
- // expect(a.y).toBe(4);
188
+ test ( 'toRef' , ( ) => {
189
+ const a = reactive ( {
190
+ x : 1 ,
191
+ } ) ;
192
+ const x = toRef ( a , 'x' ) ;
193
+ expect ( isRef ( x ) ) . toBe ( true ) ;
194
+ expect ( x . value ) . toBe ( 1 ) ;
195
+
196
+ // source -> proxy
197
+ a . x = 2 ;
198
+ expect ( x . value ) . toBe ( 2 ) ;
199
+
200
+ // proxy -> source
201
+ x . value = 3 ;
202
+ expect ( a . x ) . toBe ( 3 ) ;
203
+
204
+ // reactivity
205
+ let dummyX ;
206
+ effect ( ( ) => {
207
+ dummyX = x . value ;
208
+ } ) ;
209
+ expect ( dummyX ) . toBe ( x . value ) ;
210
+
211
+ // mutating source should trigger effect using the proxy refs
212
+ a . x = 4 ;
213
+ expect ( dummyX ) . toBe ( 4 ) ;
214
+ } ) ;
239
215
240
- // // reactivity
241
- // let dummyX, dummyY;
242
- // effect(() => {
243
- // dummyX = x.value;
244
- // dummyY = y.value;
245
- // });
246
- // expect(dummyX).toBe(x.value);
247
- // expect(dummyY).toBe(y.value);
248
-
249
- // // mutating source should trigger effect using the proxy refs
250
- // a.x = 4;
251
- // a.y = 5;
252
- // expect(dummyX).toBe(4);
253
- // expect(dummyY).toBe(5);
254
- // });
216
+ test ( 'toRefs' , ( ) => {
217
+ const a = reactive ( {
218
+ x : 1 ,
219
+ y : 2 ,
220
+ } ) ;
221
+
222
+ const { x, y } = toRefs ( a ) ;
223
+
224
+ expect ( isRef ( x ) ) . toBe ( true ) ;
225
+ expect ( isRef ( y ) ) . toBe ( true ) ;
226
+ expect ( x . value ) . toBe ( 1 ) ;
227
+ expect ( y . value ) . toBe ( 2 ) ;
228
+
229
+ // source -> proxy
230
+ a . x = 2 ;
231
+ a . y = 3 ;
232
+ expect ( x . value ) . toBe ( 2 ) ;
233
+ expect ( y . value ) . toBe ( 3 ) ;
234
+
235
+ // proxy -> source
236
+ x . value = 3 ;
237
+ y . value = 4 ;
238
+ expect ( a . x ) . toBe ( 3 ) ;
239
+ expect ( a . y ) . toBe ( 4 ) ;
240
+
241
+ // reactivity
242
+ let dummyX , dummyY ;
243
+ effect ( ( ) => {
244
+ dummyX = x . value ;
245
+ dummyY = y . value ;
246
+ } ) ;
247
+ expect ( dummyX ) . toBe ( x . value ) ;
248
+ expect ( dummyY ) . toBe ( y . value ) ;
249
+
250
+ // mutating source should trigger effect using the proxy refs
251
+ a . x = 4 ;
252
+ a . y = 5 ;
253
+ expect ( dummyX ) . toBe ( 4 ) ;
254
+ expect ( dummyY ) . toBe ( 5 ) ;
255
+ } ) ;
255
256
256
257
// test('customRef', () => {
257
258
// let value = 1;
0 commit comments