42
42
<<" error" >> := <<" query_parse_error" >>,
43
43
<<" reason" >> := <<" `keys` is incompatible with `key`, `start_key` and `end_key`" >>
44
44
}).
45
+ -define (ERROR_KEY_RANGE , #{
46
+ <<" error" >> := <<" query_parse_error" >>,
47
+ <<" reason" >> :=
48
+ <<" No rows can match your key range, reverse your " ,
49
+ " start_key and end_key or set descending=true" >>
50
+ }).
45
51
46
52
% seconds
47
53
-define (TIMEOUT , 60 ).
@@ -163,26 +169,17 @@ t_view_with_multiple_queries(Db) ->
163
169
? assertEqual (200 , Code ).
164
170
165
171
t_view_with_key_and_start_key (Db ) ->
166
- {Code1 , Res1 } = req (get , url (Db , " _design/ddoc/_view/map" , " key=\" a\" &startkey=\" b\" " )),
167
- {Code2 , Res2 } = req (get , url (Db , " _design/ddoc/_view/map" , " startkey=\" b\" &key=\" a\" " )),
168
- ? assertMatch (
169
- #{
170
- <<" error" >> := <<" query_parse_error" >>,
171
- <<" reason" >> :=
172
- <<" No rows can match your key range, reverse your start_key and end_key or set descending=true" >>
173
- },
174
- Res1
175
- ),
176
- ? assertMatch (#{<<" rows" >> := [#{<<" id" >> := <<" a" >>}]}, Res2 ),
177
- ? assertEqual (400 , Code1 ),
178
- ? assertEqual (200 , Code2 ).
172
+ test_helper_key_and_start_key (Db , " _design/ddoc/_view/map" ).
179
173
180
174
t_all_docs_with_key_and_start_key (Db ) ->
181
- {Code1 , Res1 } = req (get , url (Db , " _all_docs" , " key=\" a\" &startkey=\" b\" " )),
182
- {Code2 , Res2 } = req (get , url (Db , " _all_docs" , " startkey=\" b\" &key=\" a\" " )),
183
- ? assertMatch (#{<<" rows" >> := []}, Res1 ),
175
+ test_helper_key_and_start_key (Db , " _all_docs" ).
176
+
177
+ test_helper_key_and_start_key (Db , Path ) ->
178
+ {Code1 , Res1 } = req (get , url (Db , Path , " key=\" a\" &startkey=\" b\" " )),
179
+ {Code2 , Res2 } = req (get , url (Db , Path , " startkey=\" b\" &key=\" a\" " )),
180
+ ? assertMatch (? ERROR_KEY_RANGE , Res1 ),
184
181
? assertMatch (#{<<" rows" >> := [#{<<" id" >> := <<" a" >>}]}, Res2 ),
185
- ? assertEqual (200 , Code1 ),
182
+ ? assertEqual (400 , Code1 ),
186
183
? assertEqual (200 , Code2 ).
187
184
188
185
t_view_with_key_and_end_key (Db ) ->
@@ -200,31 +197,35 @@ test_helper_key_and_end_key(Db, Path) ->
200
197
? assertEqual (200 , Code2 ).
201
198
202
199
t_view_with_single_keys_and_start_key (Db ) ->
203
- {Code , Res } = req (get , url (Db , " _design/ddoc/_view/map?keys=[\" a\" ]&startkey=\" b\" " )),
204
- ? assertMatch (
205
- #{
206
- <<" error" >> := <<" query_parse_error" >>,
207
- <<" reason" >> :=
208
- <<" No rows can match your key range, reverse your start_key and end_key or set descending=true" >>
209
- },
210
- Res
211
- ),
212
- ? assertEqual (400 , Code ).
200
+ test_helper_single_keys_and_start_key (Db , " _design/ddoc/_view/map" ).
213
201
214
202
t_all_docs_with_single_keys_and_start_key (Db ) ->
215
- {Code , Res } = req (get , url (Db , " _all_docs?keys=[\" a\" ]&startkey=\" b\" " )),
216
- ? assertMatch (? ERROR_KEYS_INCOMPATIBLE , Res ),
217
- ? assertEqual (400 , Code ).
203
+ test_helper_single_keys_and_start_key (Db , " _all_docs" ).
204
+
205
+ test_helper_single_keys_and_start_key (Db , Path ) ->
206
+ {Code1 , Res1 } = req (get , url (Db , Path , " keys=[\" a\" ]&startkey=\" b\" " )),
207
+ {Code2 , Res2 } = req (get , url (Db , Path , " startkey=\" b\" &keys=[\" a\" ]" )),
208
+ case Path of
209
+ " _all_docs" -> ? assertMatch (? ERROR_KEYS_INCOMPATIBLE , Res1 );
210
+ _ -> ? assertMatch (? ERROR_KEY_RANGE , Res1 )
211
+ end ,
212
+ ? assertMatch (#{<<" rows" >> := [#{<<" id" >> := <<" a" >>}]}, Res2 ),
213
+ ? assertEqual (400 , Code1 ),
214
+ ? assertEqual (200 , Code2 ).
218
215
219
216
t_view_with_keys_and_start_key (Db ) ->
220
- {Code , Res } = req (get , url (Db , " _design/ddoc/_view/map" , " keys=[\" a\" ,\" b\" ]&start_key=\" b\" " )),
221
- ? assertMatch (? ERROR_KEYS_INCOMPATIBLE , Res ),
222
- ? assertEqual (400 , Code ).
217
+ test_helper_keys_and_start_key (Db , " _design/ddoc/_view/map" ).
223
218
224
219
t_all_docs_with_keys_and_start_key (Db ) ->
225
- {Code , Res } = req (get , url (Db , " _all_docs" , " keys=[\" a\" ,\" b\" ]&start_key=\" b\" " )),
226
- ? assertMatch (? ERROR_KEYS_INCOMPATIBLE , Res ),
227
- ? assertEqual (400 , Code ).
220
+ test_helper_keys_and_start_key (Db , " _all_docs" ).
221
+
222
+ test_helper_keys_and_start_key (Db , Path ) ->
223
+ {Code1 , Res1 } = req (get , url (Db , Path , " keys=[\" a\" ,\" b\" ]&start_key=\" b\" " )),
224
+ {Code2 , Res2 } = req (get , url (Db , Path , " startkey=\" b\" &keys=[\" a\" ,\" b\" ]" )),
225
+ ? assertMatch (? ERROR_KEYS_INCOMPATIBLE , Res1 ),
226
+ ? assertMatch (? ERROR_KEYS_INCOMPATIBLE , Res2 ),
227
+ ? assertEqual (400 , Code1 ),
228
+ ? assertEqual (400 , Code2 ).
228
229
229
230
t_view_with_key_non_existent_docs (Db ) ->
230
231
{Code , Res } = req (get , url (Db , " _design/ddoc/_view/map" , " key=\" not_exist\" " )),
0 commit comments