@@ -115,6 +115,95 @@ describe('ParseLiveQuery', function () {
115
115
} ) ;
116
116
} ) ;
117
117
118
+ it ( 'can handle mutate beforeSubscribe query' , async done => {
119
+ await reconfigureServer ( {
120
+ liveQuery : {
121
+ classNames : [ 'TestObject' ] ,
122
+ } ,
123
+ startLiveQueryServer : true ,
124
+ verbose : false ,
125
+ silent : true ,
126
+ } ) ;
127
+ Parse . Cloud . beforeSubscribe ( TestObject , request => {
128
+ const query = request . query ;
129
+ query . equalTo ( 'yolo' , 'abc' ) ;
130
+ } ) ;
131
+
132
+ const object = new TestObject ( ) ;
133
+ await object . save ( ) ;
134
+
135
+ const query = new Parse . Query ( TestObject ) ;
136
+ query . equalTo ( 'objectId' , object . id ) ;
137
+ const subscription = await query . subscribe ( ) ;
138
+
139
+ subscription . on ( 'update' , ( ) => {
140
+ fail ( ) ;
141
+ } ) ;
142
+ object . set ( { foo : 'bar' } ) ;
143
+ await object . save ( ) ;
144
+ setTimeout ( async ( ) => {
145
+ done ( ) ;
146
+ } , 1000 ) ;
147
+ } ) ;
148
+
149
+ it ( 'can return a new beforeSubscribe query' , async done => {
150
+ await reconfigureServer ( {
151
+ liveQuery : {
152
+ classNames : [ 'TestObject' ] ,
153
+ } ,
154
+ startLiveQueryServer : true ,
155
+ verbose : false ,
156
+ silent : true ,
157
+ } ) ;
158
+ Parse . Cloud . beforeSubscribe ( TestObject , ( ) => {
159
+ const query = new Parse . Query ( TestObject ) ;
160
+ query . equalTo ( 'foo' , 'yolo' ) ;
161
+ return query ;
162
+ } ) ;
163
+
164
+ const query = new Parse . Query ( TestObject ) ;
165
+ query . equalTo ( 'foo' , 'bar' ) ;
166
+ const subscription = await query . subscribe ( ) ;
167
+
168
+ subscription . on ( 'create' , object => {
169
+ expect ( object . get ( 'foo' ) ) . toBe ( 'yolo' ) ;
170
+ done ( ) ;
171
+ } ) ;
172
+ const object = new TestObject ( ) ;
173
+ object . set ( { foo : 'yolo' } ) ;
174
+ await object . save ( ) ;
175
+ } ) ;
176
+
177
+ it ( 'can handle select beforeSubscribe query' , async done => {
178
+ await reconfigureServer ( {
179
+ liveQuery : {
180
+ classNames : [ 'TestObject' ] ,
181
+ } ,
182
+ startLiveQueryServer : true ,
183
+ verbose : false ,
184
+ silent : true ,
185
+ } ) ;
186
+ Parse . Cloud . beforeSubscribe ( TestObject , request => {
187
+ const query = request . query ;
188
+ query . select ( 'yolo' ) ;
189
+ } ) ;
190
+
191
+ const object = new TestObject ( ) ;
192
+ await object . save ( ) ;
193
+
194
+ const query = new Parse . Query ( TestObject ) ;
195
+ query . equalTo ( 'objectId' , object . id ) ;
196
+ const subscription = await query . subscribe ( ) ;
197
+
198
+ subscription . on ( 'update' , object => {
199
+ expect ( object . get ( 'foo' ) ) . toBeUndefined ( ) ;
200
+ expect ( object . get ( 'yolo' ) ) . toBe ( 'abc' ) ;
201
+ done ( ) ;
202
+ } ) ;
203
+ object . set ( { foo : 'bar' , yolo : 'abc' } ) ;
204
+ await object . save ( ) ;
205
+ } ) ;
206
+
118
207
it ( 'handle invalid websocket payload length' , async done => {
119
208
await reconfigureServer ( {
120
209
liveQuery : {
0 commit comments