diff options
Diffstat (limited to 'src/fabric/test/fabric2_doc_count_tests.erl')
-rw-r--r-- | src/fabric/test/fabric2_doc_count_tests.erl | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/fabric/test/fabric2_doc_count_tests.erl b/src/fabric/test/fabric2_doc_count_tests.erl index 37d08404d..915144ab1 100644 --- a/src/fabric/test/fabric2_doc_count_tests.erl +++ b/src/fabric/test/fabric2_doc_count_tests.erl @@ -30,6 +30,7 @@ doc_count_test_() -> fun cleanup/1, {with, [ fun normal_docs/1, + fun replicated_docs/1, fun design_docs/1, fun local_docs/1 ]} @@ -109,6 +110,30 @@ normal_docs({Db, _}) -> ). +replicated_docs({Db, _}) -> + {DocCount, DelDocCount, DDocCount, LDocCount} = get_doc_counts(Db), + + Opts = [replicated_changes], + {R1, R2, R3} = {<<"r1">>, <<"r2">>, <<"r3">>}, + + % First case is a simple replicated update + Doc1 = #doc{id = <<"rd1">>, revs = {1, [R1]}}, + {ok, {1, R1}} = fabric2_db:update_doc(Db, Doc1, Opts), + check_doc_counts(Db, DocCount + 1, DelDocCount, DDocCount, LDocCount), + + % Here a deleted document is replicated into the db. Doc count should not + % change, only deleted doc count. + Doc2 = #doc{id = <<"rd2">>, revs = {1, [R2]}, deleted = true}, + {ok, {1, R2}} = fabric2_db:update_doc(Db, Doc2, Opts), + check_doc_counts(Db, DocCount + 1, DelDocCount + 1, DDocCount, LDocCount), + + % Here we extended the deleted document's rev path but keep it deleted. + % Again, only deleted doc count should be bumped. + Doc3 = #doc{id = <<"rd2">>, revs = {2, [R3, R2]}, deleted = true}, + {ok, {2, R3}} = fabric2_db:update_doc(Db, Doc3, Opts), + check_doc_counts(Db, DocCount + 1, DelDocCount + 2 , DDocCount, LDocCount). + + design_docs({Db, _}) -> {DocCount, DelDocCount, DDocCount, LDocCount} = get_doc_counts(Db), |