@@ -16,14 +16,262 @@ describe('ParseLiveQuery', function () {
16
16
const query = new Parse . Query ( TestObject ) ;
17
17
query . equalTo ( 'objectId' , object . id ) ;
18
18
const subscription = await query . subscribe ( ) ;
19
- subscription . on ( 'update' , async object => {
19
+ subscription . on ( 'update' , object => {
20
20
expect ( object . get ( 'foo' ) ) . toBe ( 'bar' ) ;
21
21
done ( ) ;
22
22
} ) ;
23
23
object . set ( { foo : 'bar' } ) ;
24
24
await object . save ( ) ;
25
25
} ) ;
26
26
27
+ it ( 'expect afterEvent create' , async done => {
28
+ await reconfigureServer ( {
29
+ liveQuery : {
30
+ classNames : [ 'TestObject' ] ,
31
+ } ,
32
+ startLiveQueryServer : true ,
33
+ verbose : false ,
34
+ silent : true ,
35
+ } ) ;
36
+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , req => {
37
+ expect ( req . event ) . toBe ( 'Create' ) ;
38
+ expect ( req . user ) . toBeUndefined ( ) ;
39
+ expect ( req . current . get ( 'foo' ) ) . toBe ( 'bar' ) ;
40
+ } ) ;
41
+
42
+ const query = new Parse . Query ( TestObject ) ;
43
+ const subscription = await query . subscribe ( ) ;
44
+ subscription . on ( 'create' , object => {
45
+ expect ( object . get ( 'foo' ) ) . toBe ( 'bar' ) ;
46
+ done ( ) ;
47
+ } ) ;
48
+
49
+ const object = new TestObject ( ) ;
50
+ object . set ( 'foo' , 'bar' ) ;
51
+ await object . save ( ) ;
52
+ } ) ;
53
+
54
+ it ( 'expect afterEvent payload' , async done => {
55
+ await reconfigureServer ( {
56
+ liveQuery : {
57
+ classNames : [ 'TestObject' ] ,
58
+ } ,
59
+ startLiveQueryServer : true ,
60
+ verbose : false ,
61
+ silent : true ,
62
+ } ) ;
63
+ const object = new TestObject ( ) ;
64
+ await object . save ( ) ;
65
+
66
+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , req => {
67
+ expect ( req . event ) . toBe ( 'Update' ) ;
68
+ expect ( req . user ) . toBeUndefined ( ) ;
69
+ expect ( req . current . get ( 'foo' ) ) . toBe ( 'bar' ) ;
70
+ expect ( req . original . get ( 'foo' ) ) . toBeUndefined ( ) ;
71
+ done ( ) ;
72
+ } ) ;
73
+
74
+ const query = new Parse . Query ( TestObject ) ;
75
+ query . equalTo ( 'objectId' , object . id ) ;
76
+ await query . subscribe ( ) ;
77
+ object . set ( { foo : 'bar' } ) ;
78
+ await object . save ( ) ;
79
+ } ) ;
80
+
81
+ it ( 'expect afterEvent enter' , async done => {
82
+ await reconfigureServer ( {
83
+ liveQuery : {
84
+ classNames : [ 'TestObject' ] ,
85
+ } ,
86
+ startLiveQueryServer : true ,
87
+ verbose : false ,
88
+ silent : true ,
89
+ } ) ;
90
+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , req => {
91
+ expect ( req . event ) . toBe ( 'Enter' ) ;
92
+ expect ( req . user ) . toBeUndefined ( ) ;
93
+ expect ( req . current . get ( 'foo' ) ) . toBe ( 'bar' ) ;
94
+ expect ( req . original . get ( 'foo' ) ) . toBeUndefined ( ) ;
95
+ } ) ;
96
+
97
+ const object = new TestObject ( ) ;
98
+ await object . save ( ) ;
99
+
100
+ const query = new Parse . Query ( TestObject ) ;
101
+ query . equalTo ( 'foo' , 'bar' ) ;
102
+ const subscription = await query . subscribe ( ) ;
103
+ subscription . on ( 'enter' , object => {
104
+ expect ( object . get ( 'foo' ) ) . toBe ( 'bar' ) ;
105
+ done ( ) ;
106
+ } ) ;
107
+
108
+ object . set ( 'foo' , 'bar' ) ;
109
+ await object . save ( ) ;
110
+ } ) ;
111
+
112
+ it ( 'expect afterEvent leave' , async done => {
113
+ await reconfigureServer ( {
114
+ liveQuery : {
115
+ classNames : [ 'TestObject' ] ,
116
+ } ,
117
+ startLiveQueryServer : true ,
118
+ verbose : false ,
119
+ silent : true ,
120
+ } ) ;
121
+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , req => {
122
+ expect ( req . event ) . toBe ( 'Leave' ) ;
123
+ expect ( req . user ) . toBeUndefined ( ) ;
124
+ expect ( req . current . get ( 'foo' ) ) . toBeUndefined ( ) ;
125
+ expect ( req . original . get ( 'foo' ) ) . toBe ( 'bar' ) ;
126
+ } ) ;
127
+
128
+ const object = new TestObject ( ) ;
129
+ object . set ( 'foo' , 'bar' ) ;
130
+ await object . save ( ) ;
131
+
132
+ const query = new Parse . Query ( TestObject ) ;
133
+ query . equalTo ( 'foo' , 'bar' ) ;
134
+ const subscription = await query . subscribe ( ) ;
135
+ subscription . on ( 'leave' , object => {
136
+ expect ( object . get ( 'foo' ) ) . toBeUndefined ( ) ;
137
+ done ( ) ;
138
+ } ) ;
139
+
140
+ object . unset ( 'foo' ) ;
141
+ await object . save ( ) ;
142
+ } ) ;
143
+
144
+ it ( 'can handle afterEvent modification' , async done => {
145
+ await reconfigureServer ( {
146
+ liveQuery : {
147
+ classNames : [ 'TestObject' ] ,
148
+ } ,
149
+ startLiveQueryServer : true ,
150
+ verbose : false ,
151
+ silent : true ,
152
+ } ) ;
153
+ const object = new TestObject ( ) ;
154
+ await object . save ( ) ;
155
+
156
+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , req => {
157
+ const current = req . current ;
158
+ current . set ( 'foo' , 'yolo' ) ;
159
+
160
+ const original = req . original ;
161
+ original . set ( 'yolo' , 'foo' ) ;
162
+ } ) ;
163
+
164
+ const query = new Parse . Query ( TestObject ) ;
165
+ query . equalTo ( 'objectId' , object . id ) ;
166
+ const subscription = await query . subscribe ( ) ;
167
+ subscription . on ( 'update' , ( object , original ) => {
168
+ expect ( object . get ( 'foo' ) ) . toBe ( 'yolo' ) ;
169
+ expect ( original . get ( 'yolo' ) ) . toBe ( 'foo' ) ;
170
+ done ( ) ;
171
+ } ) ;
172
+ object . set ( { foo : 'bar' } ) ;
173
+ await object . save ( ) ;
174
+ } ) ;
175
+
176
+ it ( 'can return different object in afterEvent' , async done => {
177
+ await reconfigureServer ( {
178
+ liveQuery : {
179
+ classNames : [ 'TestObject' ] ,
180
+ } ,
181
+ startLiveQueryServer : true ,
182
+ verbose : false ,
183
+ silent : true ,
184
+ } ) ;
185
+ const object = new TestObject ( ) ;
186
+ await object . save ( ) ;
187
+
188
+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , ( ) => {
189
+ const object = new Parse . Object ( 'Yolo' ) ;
190
+ return object ;
191
+ } ) ;
192
+
193
+ const query = new Parse . Query ( TestObject ) ;
194
+ query . equalTo ( 'objectId' , object . id ) ;
195
+ const subscription = await query . subscribe ( ) ;
196
+ subscription . on ( 'update' , object => {
197
+ expect ( object . className ) . toBe ( 'Yolo' ) ;
198
+ done ( ) ;
199
+ } ) ;
200
+ object . set ( { foo : 'bar' } ) ;
201
+ await object . save ( ) ;
202
+ } ) ;
203
+
204
+ it ( 'can handle async afterEvent modification' , async done => {
205
+ await reconfigureServer ( {
206
+ liveQuery : {
207
+ classNames : [ 'TestObject' ] ,
208
+ } ,
209
+ startLiveQueryServer : true ,
210
+ verbose : false ,
211
+ silent : true ,
212
+ } ) ;
213
+ const parent = new TestObject ( ) ;
214
+ const child = new TestObject ( ) ;
215
+ child . set ( 'bar' , 'foo' ) ;
216
+ await Parse . Object . saveAll ( [ parent , child ] ) ;
217
+
218
+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , async req => {
219
+ const current = req . current ;
220
+ const pointer = current . get ( 'child' ) ;
221
+ await pointer . fetch ( ) ;
222
+ } ) ;
223
+
224
+ const query = new Parse . Query ( TestObject ) ;
225
+ query . equalTo ( 'objectId' , parent . id ) ;
226
+ const subscription = await query . subscribe ( ) ;
227
+ subscription . on ( 'update' , object => {
228
+ expect ( object . get ( 'child' ) ) . toBeDefined ( ) ;
229
+ expect ( object . get ( 'child' ) . get ( 'bar' ) ) . toBe ( 'foo' ) ;
230
+ done ( ) ;
231
+ } ) ;
232
+ parent . set ( 'child' , child ) ;
233
+ await parent . save ( ) ;
234
+ } ) ;
235
+
236
+ it ( 'can handle afterEvent throw' , async done => {
237
+ await reconfigureServer ( {
238
+ liveQuery : {
239
+ classNames : [ 'TestObject' ] ,
240
+ } ,
241
+ startLiveQueryServer : true ,
242
+ verbose : false ,
243
+ silent : true ,
244
+ } ) ;
245
+
246
+ const object = new TestObject ( ) ;
247
+ await object . save ( ) ;
248
+
249
+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , req => {
250
+ const current = req . current ;
251
+ const original = req . original ;
252
+
253
+ setTimeout ( ( ) => {
254
+ done ( ) ;
255
+ } , 2000 ) ;
256
+
257
+ if ( current . get ( 'foo' ) != original . get ( 'foo' ) ) {
258
+ throw "Don't pass an update trigger, or message" ;
259
+ }
260
+ } ) ;
261
+
262
+ const query = new Parse . Query ( TestObject ) ;
263
+ query . equalTo ( 'objectId' , object . id ) ;
264
+ const subscription = await query . subscribe ( ) ;
265
+ subscription . on ( 'update' , ( ) => {
266
+ fail ( 'update should not have been called.' ) ;
267
+ } ) ;
268
+ subscription . on ( 'error' , ( ) => {
269
+ fail ( 'error should not have been called.' ) ;
270
+ } ) ;
271
+ object . set ( { foo : 'bar' } ) ;
272
+ await object . save ( ) ;
273
+ } ) ;
274
+
27
275
it ( 'can handle beforeConnect / beforeSubscribe hooks' , async done => {
28
276
await reconfigureServer ( {
29
277
liveQuery : {
@@ -56,7 +304,7 @@ describe('ParseLiveQuery', function () {
56
304
const query = new Parse . Query ( TestObject ) ;
57
305
query . equalTo ( 'objectId' , object . id ) ;
58
306
const subscription = await query . subscribe ( ) ;
59
- subscription . on ( 'update' , async object => {
307
+ subscription . on ( 'update' , object => {
60
308
expect ( object . get ( 'foo' ) ) . toBe ( 'bar' ) ;
61
309
done ( ) ;
62
310
} ) ;
0 commit comments