diff options
author | Garren Smith <garren.smith@gmail.com> | 2019-01-15 17:14:15 +0200 |
---|---|---|
committer | Garren Smith <garren.smith@gmail.com> | 2019-01-15 17:14:15 +0200 |
commit | 0cd437126a9fad591aa56a37bbd6f34b183329c5 (patch) | |
tree | fa1dc9a188c5938b521af4e10f6abf880e2d681a | |
parent | 2635741ef15d609836b491adc4f35b2bd3fa9348 (diff) | |
download | couchdb-0cd437126a9fad591aa56a37bbd6f34b183329c5.tar.gz |
add partition tests for all_docs endpointpartition-all-docs-tests
-rw-r--r-- | test/elixir/test/partition_all_docs_test.exs | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/test/elixir/test/partition_all_docs_test.exs b/test/elixir/test/partition_all_docs_test.exs new file mode 100644 index 000000000..0941daf59 --- /dev/null +++ b/test/elixir/test/partition_all_docs_test.exs @@ -0,0 +1,118 @@ +defmodule PartitionAllDocsTest do + use CouchTestCase + import PartitionHelpers + + @moduledoc """ + Test Partition functionality for for all_docs + """ + + setup_all do + db_name = random_db_name() + {:ok, _} = create_db(db_name, query: %{partitioned: true, q: 1}) + on_exit(fn -> delete_db(db_name) end) + + create_partition_docs(db_name) + + {:ok, [db_name: db_name]} + end + + test "all_docs with partitioned:true returns partitioned fields", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/foo/_all_docs" + resp = Couch.get(url) + assert resp.status_code == 200 + partitions = get_partitions(resp) + assert Enum.dedup(partitions) == ["foo"] + + url = "/#{db_name}/_partition/bar/_all_docs" + resp = Couch.get(url) + assert resp.status_code == 200 + partitions = get_partitions(resp) + assert Enum.dedup(partitions) == ["bar"] + end + + test "partition all_docs errors with incorrect partition supplied", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/_bar/_all_docs" + resp = Couch.get(url) + assert resp.status_code == 400 + + url = "/#{db_name}/_partition//_all_docs" + resp = Couch.get(url) + assert resp.status_code == 400 + end + + test "partitioned _all_docs works with startkey, endkey range", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/foo/_all_docs" + resp = Couch.get(url, query: %{start_key: "\"foo:12\"", end_key: "\"foo:2\""}) + assert resp.status_code == 200 + partitions = get_partitions(resp) + assert length(partitions) == 5 + assert Enum.dedup(partitions) == ["foo"] + end + + test "partitioned _all_docs works with keys", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/foo/_all_docs" + resp = Couch.post(url, body: %{keys: ["foo:2", "foo:4", "foo:6"]}) + assert resp.status_code == 200 + ids = get_ids(resp) + assert length(ids) == 3 + assert ids == ["foo:2", "foo:4", "foo:6"] + end + + test "partition _all_docs works with limit", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/foo/_all_docs" + resp = Couch.get(url, query: %{limit: 5}) + assert resp.status_code == 200 + partitions = get_partitions(resp) + assert length(partitions) == 5 + assert Enum.dedup(partitions) == ["foo"] + end + + test "partition _all_docs with descending", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/foo/_all_docs" + resp = Couch.get(url, query: %{descending: true, limit: 5}) + assert resp.status_code == 200 + ids = get_ids(resp) + assert length(ids) == 5 + assert ids == ["foo:98", "foo:96", "foo:94", "foo:92", "foo:90"] + + resp = Couch.get(url, query: %{descending: false, limit: 5}) + assert resp.status_code == 200 + ids = get_ids(resp) + assert length(ids) == 5 + assert ids == ["foo:10", "foo:100", "foo:12", "foo:14", "foo:16"] + end + + test "partition _all_docs with skip", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/foo/_all_docs" + resp = Couch.get(url, query: %{skip: 5, limit: 5}) + assert resp.status_code == 200 + ids = get_ids(resp) + assert length(ids) == 5 + assert ids == ["foo:18", "foo:2", "foo:20", "foo:22", "foo:24"] + end + + test "partition _all_docs with key", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/foo/_all_docs" + resp = Couch.get(url, query: %{key: "\"foo:22\""}) + assert resp.status_code == 200 + ids = get_ids(resp) + assert length(ids) == 1 + assert ids == ["foo:22"] + end +end |