diff options
Diffstat (limited to 'test/elixir/test/concurrent_writes_test.exs')
-rw-r--r-- | test/elixir/test/concurrent_writes_test.exs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/elixir/test/concurrent_writes_test.exs b/test/elixir/test/concurrent_writes_test.exs index bf3c0a652..397c5e880 100644 --- a/test/elixir/test/concurrent_writes_test.exs +++ b/test/elixir/test/concurrent_writes_test.exs @@ -48,4 +48,28 @@ defmodule ConcurrentWritesTest do assert result == Enum.sum(1..n) end + @tag :with_db + test "Secondary data tests with updates", context do + n = 120 + db_name = context[:db_name] + map_fun = "function(doc) { emit(null, doc.a); }" + red_fun = "_sum" + ddoc_id = "_design/foo" + ddoc = %{:views => %{:foo => %{:map => map_fun, :reduce => red_fun}}} + Couch.put("/#{db_name}/#{ddoc_id}", body: ddoc) + parent = self() + Enum.each(1..n, + fn x -> spawn fn -> + r = Couch.put("/#{db_name}/doc#{x}", body: %{:a => x}) + assert r.status_code == 201 + rev = r.body["rev"] + Couch.put("/#{db_name}/doc#{x}", body: %{:_rev => rev, :a => x + 1}) + send parent, :done + end end) + Enum.each(1..n, fn _x -> receive do :done -> :done end end) + rows = Couch.get("/#{db_name}/#{ddoc_id}/_view/foo").body["rows"] + result = hd(rows)["value"] + assert result == Enum.sum(2..n + 1) + end + end |