diff options
Diffstat (limited to 'test/elixir/test/batch_save_test.exs')
-rw-r--r-- | test/elixir/test/batch_save_test.exs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/elixir/test/batch_save_test.exs b/test/elixir/test/batch_save_test.exs new file mode 100644 index 000000000..4863a8d03 --- /dev/null +++ b/test/elixir/test/batch_save_test.exs @@ -0,0 +1,42 @@ +defmodule BatchSaveTest do + use CouchTestCase + + @moduletag :batch_save + + @moduledoc """ + Test CouchDB batch save + This is a port of batch_save.js + """ + + @doc_count 100 + + @tag :with_db + test "batch put", context do + path_fun = &("/#{&1}/#{&2}") + run(&Couch.put/2, path_fun, context[:db_name], @doc_count) + end + + @tag :with_db + test "batch post", context do + path_fun = fn(db_name, _) -> "/#{db_name}" end + run(&Couch.post/2, path_fun, context[:db_name], @doc_count) + end + + @tag :with_db + test "batch put with identical doc ids", context do + path_fun = fn(db_name, _) -> "/#{db_name}/foo" end + run(&Couch.put/2, path_fun, context[:db_name], 1) + end + + defp run(req_fun, path_fun, db_name, expected_doc_count) do + for i <- 1..@doc_count do + opts = [body: %{a: i, b: i}, query: %{batch: "ok"}] + resp = req_fun.(path_fun.(db_name, i), opts) + assert resp.body["ok"] and resp.status_code == 202 + end + retry_until(fn -> + Couch.get("/#{db_name}").body["doc_count"] == expected_doc_count + end) + end + +end |