You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2020/02/15 18:44:08 UTC

[couchdb] 03/05: Test coverage: get_full_doc_info

This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch prototype/fdb-layer-test-coverage
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit e43c72a2b2a629beb75de8ec4e0e3db785912c8d
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Fri Feb 14 11:17:52 2020 -0600

    Test coverage: get_full_doc_info
---
 src/fabric/test/fabric2_db_misc_tests.erl | 87 +++++++++++++++++++++++++++++++
 1 file changed, 87 insertions(+)

diff --git a/src/fabric/test/fabric2_db_misc_tests.erl b/src/fabric/test/fabric2_db_misc_tests.erl
index 12fc3e5..f1ee8a8 100644
--- a/src/fabric/test/fabric2_db_misc_tests.erl
+++ b/src/fabric/test/fabric2_db_misc_tests.erl
@@ -33,6 +33,11 @@ misc_test_() ->
                 ?TDEF(set_revs_limit),
                 ?TDEF(set_security),
                 ?TDEF(is_system_db),
+                ?TDEF(get_doc_info),
+                ?TDEF(get_doc_info_not_found),
+                ?TDEF(get_full_doc_info),
+                ?TDEF(get_full_doc_info_not_found),
+                ?TDEF(get_full_doc_infos),
                 ?TDEF(ensure_full_commit),
                 ?TDEF(metadata_bump),
                 ?TDEF(db_version_bump)
@@ -109,6 +114,88 @@ is_system_db({DbName, Db, _}) ->
     ?assertEqual(false, fabric2_db:is_system_db_name(<<"foo/bar">>)).
 
 
+get_doc_info({_, Db, _}) ->
+    DocId = couch_uuids:random(),
+    InsertDoc = #doc{
+        id = DocId,
+        body = {[{<<"foo">>, true}]}
+    },
+    {ok, {Pos, Rev}} = fabric2_db:update_doc(Db, InsertDoc, []),
+
+    DI = fabric2_db:get_doc_info(Db, DocId),
+    ?assert(is_record(DI, doc_info)),
+    #doc_info{
+        id = DIDocId,
+        high_seq = HighSeq,
+        revs = Revs
+    } = DI,
+
+    ?assertEqual(DocId, DIDocId),
+    ?assert(is_binary(HighSeq)),
+    ?assertMatch([#rev_info{}], Revs),
+
+    [#rev_info{
+        rev = DIRev,
+        seq = Seq,
+        deleted = Deleted,
+        body_sp = BodySp
+    }] = Revs,
+
+    ?assertEqual({Pos, Rev}, DIRev),
+    ?assert(is_binary(Seq)),
+    ?assert(not Deleted),
+    ?assertMatch(undefined, BodySp).
+
+
+get_doc_info_not_found({_, Db, _}) ->
+    DocId = couch_uuids:random(),
+    ?assertEqual(not_found, fabric2_db:get_doc_info(Db, DocId)).
+
+
+get_full_doc_info({_, Db, _}) ->
+    DocId = couch_uuids:random(),
+    InsertDoc = #doc{
+        id = DocId,
+        body = {[{<<"foo">>, true}]}
+    },
+    {ok, {Pos, Rev}} = fabric2_db:update_doc(Db, InsertDoc, []),
+    FDI = fabric2_db:get_full_doc_info(Db, DocId),
+
+    ?assert(is_record(FDI, full_doc_info)),
+    #full_doc_info{
+        id = FDIDocId,
+        update_seq = UpdateSeq,
+        deleted = Deleted,
+        rev_tree = RevTree,
+        sizes = SizeInfo
+    } = FDI,
+
+    ?assertEqual(DocId, FDIDocId),
+    ?assert(is_binary(UpdateSeq)),
+    ?assert(not Deleted),
+    ?assertMatch([{Pos, {Rev, _, []}}], RevTree),
+    ?assertEqual(#size_info{}, SizeInfo).
+
+
+get_full_doc_info_not_found({_, Db, _}) ->
+    DocId = couch_uuids:random(),
+    ?assertEqual(not_found, fabric2_db:get_full_doc_info(Db, DocId)).
+
+
+get_full_doc_infos({_, Db, _}) ->
+    DocIds = lists:map(fun(_) ->
+        DocId = couch_uuids:random(),
+        Doc = #doc{id = DocId},
+        {ok, _} = fabric2_db:update_doc(Db, Doc, []),
+        DocId
+    end, lists:seq(1, 5)),
+
+    FDIs = fabric2_db:get_full_doc_infos(Db, DocIds),
+    lists:zipwith(fun(DocId, FDI) ->
+        ?assertEqual(DocId, FDI#full_doc_info.id)
+    end, DocIds, FDIs).
+
+
 ensure_full_commit({_, Db, _}) ->
     ?assertEqual({ok, 0}, fabric2_db:ensure_full_commit(Db)),
     ?assertEqual({ok, 0}, fabric2_db:ensure_full_commit(Db, 5)).