summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/elixir/test/partition_view_test.exs40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/elixir/test/partition_view_test.exs b/test/elixir/test/partition_view_test.exs
index 0a55c2443..7edd79b44 100644
--- a/test/elixir/test/partition_view_test.exs
+++ b/test/elixir/test/partition_view_test.exs
@@ -29,6 +29,16 @@ defmodule ViewPartitionTest do
}
"""
+ red_custom = """
+ function(keys, values, rereduce) {
+ if (rereduce) {
+ return sum(values);
+ } else {
+ return values.length;
+ }
+ }
+ """
+
query = %{:w => 3}
body = %{
@@ -56,6 +66,10 @@ defmodule ViewPartitionTest do
views: %{some: %{map: map_fun2, reduce: "_count"}}
},
%{
+ _id: "_design/reduce_custom",
+ views: %{some: %{map: map_fun2, reduce: red_custom}}
+ },
+ %{
_id: "_design/include_ddocs",
views: %{some: %{map: map_fun1}},
options: %{include_design: true}
@@ -297,6 +311,32 @@ defmodule ViewPartitionTest do
]
end
+ test "query with custom reduce works", context do
+ db_name = context[:db_name]
+
+ url = "/#{db_name}/_partition/foo/_design/reduce_custom/_view/some"
+ resp = Couch.get(url, query: %{reduce: true, group_level: 1})
+ assert resp.status_code == 200
+ results = get_reduce_result(resp)
+ assert results == [%{"key" => ["field"], "value" => 50}]
+
+ resp = Couch.get(url, query: %{reduce: true, group_level: 2})
+ results = get_reduce_result(resp)
+
+ assert results == [
+ %{"key" => ["field", "one"], "value" => 16},
+ %{"key" => ["field", "two"], "value" => 34}
+ ]
+
+ resp = Couch.get(url, query: %{reduce: true, group: true})
+ results = get_reduce_result(resp)
+
+ assert results == [
+ %{"key" => ["field", "one"], "value" => 16},
+ %{"key" => ["field", "two"], "value" => 34}
+ ]
+ end
+
test "partition query can set query limits", context do
set_config({"query_server_config", "partition_query_limit", "2000"})