This is an automated email from the ASF dual-hosted git repository.
jiahuili430 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb.git
The following commit(s) were added to refs/heads/main by this push:
new b46672943 Add tests for `_changes` endpoint
b46672943 is described below
commit b46672943ce50e115660a2a3dcd49f8d14183945
Author: Jiahui Li <[email protected]>
AuthorDate: Fri Jan 5 09:56:47 2024 -0600
Add tests for `_changes` endpoint
Test `_conflicts` field when there are deleted conflicting docs.
---
src/chttpd/test/eunit/chttpd_changes_test.erl | 209 ++++++++++++++------------
1 file changed, 113 insertions(+), 96 deletions(-)
diff --git a/src/chttpd/test/eunit/chttpd_changes_test.erl
b/src/chttpd/test/eunit/chttpd_changes_test.erl
index 5e67d96c2..b08eb65fd 100644
--- a/src/chttpd/test/eunit/chttpd_changes_test.erl
+++ b/src/chttpd/test/eunit/chttpd_changes_test.erl
@@ -26,6 +26,7 @@
-define(REVA, <<"a">>).
-define(REVB, <<"b">>).
-define(REVC, <<"c">>).
+-define(REVD, <<"d">>).
-define(DELETED, true).
-define(LEAFREV, false).
@@ -40,6 +41,7 @@ test_docs() ->
{?DOC3, [?REVA], ?LEAFREV},
{?DOC1, [?REVB, ?REVA], ?LEAFREV},
{?DOC1, [?REVC, ?REVA], ?LEAFREV},
+ {?DOC1, [?REVD, ?REVA], ?DELETED},
{?DOC3, [?REVB, ?REVA], ?DELETED},
{?DDOC2, [?REVC, ?REVA], ?LEAFREV}
].
@@ -153,13 +155,13 @@ changes_include_docs_test_() ->
t_basic({_, DbUrl}) ->
Res = {Seq, Pending, Rows} = changes(DbUrl),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV}
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV}
],
Rows
),
@@ -168,7 +170,7 @@ t_basic({_, DbUrl}) ->
t_basic_q8({_, DbUrl}) ->
{Seq, Pending, Rows} = changes(DbUrl),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
{Seqs, Revs, _Deleted} = lists:unzip3(Rows),
?assertEqual(
@@ -183,13 +185,13 @@ t_basic_q8({_, DbUrl}) ->
t_basic_post({_, DbUrl}) ->
{Seq, Pending, Rows} = changes_post(DbUrl, #{}),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV}
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV}
],
Rows
).
@@ -197,13 +199,13 @@ t_basic_post({_, DbUrl}) ->
t_continuous({_, DbUrl}) ->
Params = "?feed=continuous&timeout=10",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV}
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV}
],
Rows
).
@@ -211,7 +213,7 @@ t_continuous({_, DbUrl}) ->
t_continuous_q8({_, DbUrl}) ->
Params = "?feed=continuous&timeout=10",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
{Seqs, Revs, _Deleted} = lists:unzip3(Rows),
?assertEqual(
@@ -227,13 +229,13 @@ t_continuous_q8({_, DbUrl}) ->
t_continuous_zero_timeout({_, DbUrl}) ->
Params = "?feed=continuous&timeout=0",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV}
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV}
],
Rows
).
@@ -241,13 +243,13 @@ t_continuous_zero_timeout({_, DbUrl}) ->
t_longpoll({_, DbUrl}) ->
Params = "?feed=longpoll",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV}
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV}
],
Rows
).
@@ -263,8 +265,8 @@ t_continuous_limit_zero({_, DbUrl}) ->
t_limit_one({_, DbUrl}) ->
Params = "?limit=1",
?assertEqual(
- {5, 2, [
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV}
+ {6, 2, [
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV}
]},
changes(DbUrl, Params)
).
@@ -281,39 +283,39 @@ t_limit_one_q8({_, DbUrl}) ->
t_style_all_docs({_, DbUrl}) ->
Params = "?style=all_docs",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {5, {?DOC1, [<<"2-c">>, <<"2-b">>]}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV}
+ {6, {?DOC1, [<<"2-c">>, <<"2-b">>, <<"2-d">>]}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV}
],
Rows
).
t_since_now({_, DbUrl}) ->
Params = "?since=now",
- ?assertEqual({7, 0, []}, changes(DbUrl, Params)).
+ ?assertEqual({8, 0, []}, changes(DbUrl, Params)).
t_continuous_since_now({_, DbUrl}) ->
Params = "?feed=continuous&timeout=10&since=now",
- ?assertEqual({7, 0, []}, changes(DbUrl, Params)).
+ ?assertEqual({8, 0, []}, changes(DbUrl, Params)).
t_longpoll_since_now({_, DbUrl}) ->
Params = "?feed=longpoll&timeout=10&since=now",
- ?assertEqual({7, 0, []}, changes(DbUrl, Params)).
+ ?assertEqual({8, 0, []}, changes(DbUrl, Params)).
t_reverse({_, DbUrl}) ->
Params = "?descending=true",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(5, Seq),
+ ?assertEqual(6, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV}
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV}
],
Rows
).
@@ -321,13 +323,13 @@ t_reverse({_, DbUrl}) ->
t_continuous_reverse({_, DbUrl}) ->
Params = "?feed=continuous&timeout=10&descending=true",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(5, Seq),
+ ?assertEqual(6, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV}
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV}
],
Rows
).
@@ -335,7 +337,7 @@ t_continuous_reverse({_, DbUrl}) ->
t_reverse_q8({_, DbUrl}) ->
Params = "?descending=true",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
{Seqs, Revs, _Deleted} = lists:unzip3(Rows),
?assertEqual(
@@ -350,13 +352,13 @@ t_reverse_q8({_, DbUrl}) ->
t_reverse_limit_zero({_, DbUrl}) ->
Params = "?descending=true&limit=0",
- ?assertEqual({7, 3, []}, changes(DbUrl, Params)).
+ ?assertEqual({8, 3, []}, changes(DbUrl, Params)).
t_reverse_limit_one({_, DbUrl}) ->
Params = "?descending=true&limit=1",
?assertEqual(
- {7, 2, [
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV}
+ {8, 2, [
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV}
]},
changes(DbUrl, Params)
).
@@ -364,7 +366,7 @@ t_reverse_limit_one({_, DbUrl}) ->
t_reverse_limit_one_q8({_, DbUrl}) ->
Params = "?descending=true&limit=1",
?assertMatch(
- {7, 2, [
+ {8, 2, [
{_, {<<_/binary>>, <<_/binary>>}, _}
]},
changes(DbUrl, Params)
@@ -373,12 +375,12 @@ t_reverse_limit_one_q8({_, DbUrl}) ->
t_seq_interval({_, DbUrl}) ->
Params = "?seq_interval=3",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
{null, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
{null, {?DDOC2, <<"2-c">>}, ?LEAFREV}
],
Rows
@@ -388,14 +390,14 @@ t_selector_filter({_, DbUrl}) ->
Params = "?filter=_selector",
Body = #{<<"selector">> => #{<<"_id">> => ?DOC1}},
{Seq, Pending, Rows} = changes_post(DbUrl, Body, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(0, Pending),
?assertMatch([{_, {?DOC1, <<"2-c">>}, ?LEAFREV}], Rows).
t_design_filter({_, DbUrl}) ->
Params = "?filter=_design",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(7, Seq),
+ ?assertEqual(8, Seq),
?assertEqual(2, Pending),
?assertMatch([{_, {?DDOC2, <<"2-c">>}, ?LEAFREV}], Rows).
@@ -407,8 +409,8 @@ t_docs_id_filter({_, DbUrl}) ->
?assertEqual(1, meck:num_calls(couch_changes, send_changes_doc_ids, 6)),
?assertEqual(
[
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED}
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED}
],
Rows
).
@@ -435,8 +437,8 @@ t_docs_id_filter_over_limit({_, DbUrl}) ->
?assertEqual(0, meck:num_calls(couch_changes, send_changes_doc_ids, 6)),
?assertEqual(
[
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED}
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED}
],
Rows
).
@@ -449,15 +451,15 @@ t_js_filter({_, DbUrl}) ->
{_, #{<<"rev">> := Rev, <<"ok">> := true}} = req(put, DDocUrl, DDoc),
Params = "?filter=filters/f",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(8, Seq),
+ ?assertEqual(9, Seq),
?assertEqual(0, Pending),
?assertEqual(
[
- {6, {?DOC3, <<"2-b">>}, ?DELETED}
+ {7, {?DOC3, <<"2-b">>}, ?DELETED}
],
Rows
),
- {200, #{}} = req(delete, DDocUrl ++ "?rev=" ++ binary_to_list(Rev)).
+ delete_ddocs(DDocUrl, Rev).
t_js_filter_no_match({_, DbUrl}) ->
DDocId = "_design/filters",
@@ -466,8 +468,8 @@ t_js_filter_no_match({_, DbUrl}) ->
DDocUrl = DbUrl ++ "/" ++ DDocId,
{_, #{<<"rev">> := Rev, <<"ok">> := true}} = req(put, DDocUrl, DDoc),
Params = "?filter=filters/f",
- ?assertEqual({8, 0, []}, changes(DbUrl, Params)),
- {200, #{}} = req(delete, DDocUrl ++ "?rev=" ++ binary_to_list(Rev)).
+ ?assertEqual({9, 0, []}, changes(DbUrl, Params)),
+ delete_ddocs(DDocUrl, Rev).
t_js_filter_with_query_param({_, DbUrl}) ->
DDocId = "_design/filters",
@@ -477,32 +479,32 @@ t_js_filter_with_query_param({_, DbUrl}) ->
{_, #{<<"rev">> := Rev, <<"ok">> := true}} = req(put, DDocUrl, DDoc),
Params = "?filter=filters/f&yup=1",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(8, Seq),
+ ?assertEqual(9, Seq),
?assertEqual(0, Pending),
?assertMatch(
[
- {5, {?DOC1, <<"2-c">>}, ?LEAFREV},
- {6, {?DOC3, <<"2-b">>}, ?DELETED},
- {7, {?DDOC2, <<"2-c">>}, ?LEAFREV},
- {8, {<<"_design/filters">>, <<"1-", _/binary>>}, ?LEAFREV}
+ {6, {?DOC1, <<"2-c">>}, ?LEAFREV},
+ {7, {?DOC3, <<"2-b">>}, ?DELETED},
+ {8, {?DDOC2, <<"2-c">>}, ?LEAFREV},
+ {9, {<<"_design/filters">>, <<"1-", _/binary>>}, ?LEAFREV}
],
Rows
),
- {200, #{}} = req(delete, DDocUrl ++ "?rev=" ++ binary_to_list(Rev)).
+ delete_ddocs(DDocUrl, Rev).
t_view_filter({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_view(DbUrl, ?DOC1),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, ?DOC1, view),
Params = "?filter=_view&view=views/v",
{Seq, Pending, Rows} = changes(DbUrl, Params),
- ?assertEqual(8, Seq),
+ ?assertEqual(9, Seq),
?assertEqual(0, Pending),
- ?assertEqual([{5, {?DOC1, <<"2-c">>}, ?LEAFREV}], Rows),
+ ?assertEqual([{6, {?DOC1, <<"2-c">>}, ?LEAFREV}], Rows),
delete_ddocs(DDocUrl, Rev).
t_view_filter_no_match({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_view(DbUrl, <<"docX">>),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, <<"docX">>, view),
Params = "?filter=_view&view=views/v",
- ?assertEqual({8, 0, []}, changes(DbUrl, Params)),
+ ?assertEqual({9, 0, []}, changes(DbUrl, Params)),
delete_ddocs(DDocUrl, Rev).
t_include_docs({_, DbUrl}) ->
@@ -537,7 +539,9 @@ t_all_docs_include_docs({_, DbUrl}) ->
?assertMatch(
[
#{
- <<"changes">> := [#{<<"rev">> := <<"2-c">>}, #{<<"rev">> :=
<<"2-b">>}],
+ <<"changes">> := [
+ #{<<"rev">> := <<"2-c">>}, #{<<"rev">> := <<"2-b">>},
#{<<"rev">> := <<"2-d">>}
+ ],
<<"doc">> := #{<<"_id">> := ?DOC1, <<"_rev">> := <<"2-c">>}
},
#{
@@ -578,7 +582,9 @@ t_selector_all_docs_include_docs({_, DbUrl}) ->
?assertMatch(
[
#{
- <<"changes">> := [#{<<"rev">> := <<"2-c">>}, #{<<"rev">> :=
<<"2-b">>}],
+ <<"changes">> := [
+ #{<<"rev">> := <<"2-c">>}, #{<<"rev">> := <<"2-b">>},
#{<<"rev">> := <<"2-d">>}
+ ],
<<"doc">> := #{<<"_id">> := ?DOC1, <<"_rev">> := <<"2-c">>}
}
],
@@ -604,7 +610,11 @@ t_conflicts_all_docs({_, DbUrl}) ->
{200, #{<<"results">> := Res1}} = req(get, DbUrl ++ "/_changes" ++ Params),
?assertMatch(
[
- #{<<"changes">> := [#{<<"rev">> := <<"2-c">>}, #{<<"rev">> :=
<<"2-b">>}]},
+ #{
+ <<"changes">> := [
+ #{<<"rev">> := <<"2-c">>}, #{<<"rev">> := <<"2-b">>},
#{<<"rev">> := <<"2-d">>}
+ ]
+ },
#{<<"changes">> := [#{<<"rev">> := <<"2-b">>}]},
#{<<"changes">> := [#{<<"rev">> := <<"2-c">>}]}
],
@@ -647,7 +657,9 @@ t_conflicts_all_docs_include_docs({_, DbUrl}) ->
?assertMatch(
[
#{
- <<"changes">> := [#{<<"rev">> := <<"2-c">>}, #{<<"rev">> :=
<<"2-b">>}],
+ <<"changes">> := [
+ #{<<"rev">> := <<"2-c">>}, #{<<"rev">> := <<"2-b">>},
#{<<"rev">> := <<"2-d">>}
+ ],
<<"doc">> := #{
<<"_id">> := ?DOC1, <<"_rev">> := <<"2-c">>,
<<"_conflicts">> := [<<"2-b">>]
}
@@ -692,7 +704,9 @@ t_conflicts_selector_all_docs_include_docs({_, DbUrl}) ->
?assertMatch(
[
#{
- <<"changes">> := [#{<<"rev">> := <<"2-c">>}, #{<<"rev">> :=
<<"2-b">>}],
+ <<"changes">> := [
+ #{<<"rev">> := <<"2-c">>}, #{<<"rev">> := <<"2-b">>},
#{<<"rev">> := <<"2-d">>}
+ ],
<<"doc">> := #{
<<"_id">> := ?DOC1, <<"_rev">> := <<"2-c">>,
<<"_conflicts">> := [<<"2-b">>]
}
@@ -702,7 +716,7 @@ t_conflicts_selector_all_docs_include_docs({_, DbUrl}) ->
).
t_js_filter_include_docs({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_custom(DbUrl, ?DOC3),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, ?DOC3, custom),
Params = "?filter=filters/f&include_docs=true",
{200, #{<<"results">> := Res1}} = req(get, DbUrl ++ "/_changes" ++ Params),
?assertMatch(
@@ -722,7 +736,7 @@ t_js_filter_include_docs({_, DbUrl}) ->
delete_ddocs(DDocUrl, Rev).
t_js_filter_conflicts_include_docs({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_custom(DbUrl, ?DOC3),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, ?DOC3, custom),
Params = "?filter=filters/f&conflicts=true&include_docs=true",
{200, #{<<"results">> := Res1}} = req(get, DbUrl ++ "/_changes" ++ Params),
?assertMatch(
@@ -742,13 +756,15 @@ t_js_filter_conflicts_include_docs({_, DbUrl}) ->
delete_ddocs(DDocUrl, Rev).
t_js_filter_all_docs_conflicts_include_docs1({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_custom(DbUrl, ?DOC1),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, ?DOC1, custom),
Params =
"?filter=filters/f&style=all_docs&conflicts=true&include_docs=true",
{200, #{<<"results">> := Res1}} = req(get, DbUrl ++ "/_changes" ++ Params),
?assertMatch(
[
#{
- <<"changes">> := [#{<<"rev">> := <<"2-c">>}, #{<<"rev">> :=
<<"2-b">>}],
+ <<"changes">> := [
+ #{<<"rev">> := <<"2-c">>}, #{<<"rev">> := <<"2-b">>},
#{<<"rev">> := <<"2-d">>}
+ ],
<<"doc">> := #{
<<"_id">> := ?DOC1, <<"_rev">> := <<"2-c">>,
<<"_conflicts">> := [<<"2-b">>]
}
@@ -761,7 +777,7 @@ t_js_filter_all_docs_conflicts_include_docs1({_, DbUrl}) ->
delete_ddocs(DDocUrl, Rev).
t_js_filter_all_docs_conflicts_include_docs2({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_custom(DbUrl, ?DOC3),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, ?DOC3, custom),
Params =
"?filter=filters/f&style=all_docs&conflicts=true&include_docs=true",
{200, #{<<"results">> := Res1}} = req(get, DbUrl ++ "/_changes" ++ Params),
?assertMatch(
@@ -781,7 +797,7 @@ t_js_filter_all_docs_conflicts_include_docs2({_, DbUrl}) ->
delete_ddocs(DDocUrl, Rev).
t_view_include_docs({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_view(DbUrl, ?DOC1),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, ?DOC1, view),
Params = "?filter=_view&view=views/v&include_docs=true",
{200, #{<<"results">> := Res1}} = req(get, DbUrl ++ "/_changes" ++ Params),
?assertMatch(
@@ -798,7 +814,7 @@ t_view_include_docs({_, DbUrl}) ->
delete_ddocs(DDocUrl, Rev).
t_view_conflicts_include_docs({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_view(DbUrl, ?DOC1),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, ?DOC1, view),
Params = "?filter=_view&view=views/v&conflicts=true&include_docs=true",
{200, #{<<"results">> := Res1}} = req(get, DbUrl ++ "/_changes" ++ Params),
?assertMatch(
@@ -817,13 +833,15 @@ t_view_conflicts_include_docs({_, DbUrl}) ->
delete_ddocs(DDocUrl, Rev).
t_view_all_docs_conflicts_include_docs({_, DbUrl}) ->
- {DDocUrl, Rev} = create_ddocs_view(DbUrl, ?DOC1),
+ {DDocUrl, Rev} = create_ddocs(DbUrl, ?DOC1, view),
Params =
"?filter=_view&view=views/v&style=all_docs&conflicts=true&include_docs=true",
{200, #{<<"results">> := Res1}} = req(get, DbUrl ++ "/_changes" ++ Params),
?assertMatch(
[
#{
- <<"changes">> := [#{<<"rev">> := <<"2-c">>}, #{<<"rev">> :=
<<"2-b">>}],
+ <<"changes">> := [
+ #{<<"rev">> := <<"2-c">>}, #{<<"rev">> := <<"2-b">>},
#{<<"rev">> := <<"2-d">>}
+ ],
<<"doc">> := #{
<<"_id">> := ?DOC1, <<"_rev">> := <<"2-c">>,
<<"_conflicts">> := [<<"2-b">>]
}
@@ -910,24 +928,23 @@ create_docs(DbUrl, DocRevs) ->
lists:map(fun doc_fun/1, DocRevs)
).
-create_ddocs_custom(DbUrl, DocId) ->
- DDocId = "_design/filters",
- FilterFun = <<"function(doc, req) {return (doc._id == '", DocId/binary,
"')}">>,
- DDoc = #{<<"filters">> => #{<<"f">> => FilterFun}},
+create_ddocs(DbUrl, DocId, Type) ->
+ case Type of
+ custom ->
+ DDocId = "_design/filters",
+ FilterFun = <<"function(doc, req) {return (doc._id == '",
DocId/binary, "')}">>,
+ DDoc = #{<<"filters">> => #{<<"f">> => FilterFun}};
+ view ->
+ DDocId = "_design/views",
+ ViewFun = <<"function(doc) {if (doc._id == '", DocId/binary, "')
{emit(1, 1);}}">>,
+ DDoc = #{<<"views">> => #{<<"v">> => #{<<"map">> => ViewFun}}}
+ end,
DDocUrl = DbUrl ++ "/" ++ DDocId,
{_, #{<<"rev">> := Rev, <<"ok">> := true}} = req(put, DDocUrl, DDoc),
- {DDocUrl, binary_to_list(Rev)}.
-
-create_ddocs_view(DbUrl, DocId) ->
- DDocId = "_design/views",
- ViewFun = <<"function(doc) {if (doc._id == '", DocId/binary, "') {emit(1,
1);}}">>,
- DDoc = #{<<"views">> => #{<<"v">> => #{<<"map">> => ViewFun}}},
- DDocUrl = DbUrl ++ "/" ++ DDocId,
- {_, #{<<"rev">> := Rev, <<"ok">> := true}} = req(put, DDocUrl, DDoc),
- {DDocUrl, binary_to_list(Rev)}.
+ {DDocUrl, Rev}.
delete_ddocs(DDocUrl, Rev) ->
- {200, #{}} = req(delete, DDocUrl ++ "?rev=" ++ Rev).
+ {200, #{}} = req(delete, DDocUrl ++ "?rev=" ++ binary_to_list(Rev)).
changes(DbUrl) ->
changes(DbUrl, "").