diff options
-rw-r--r-- | test/elixir/test/partition_view_test.exs | 40 |
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"}) |