You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2018/07/25 17:44:25 UTC

[couchdb] branch elixir-suite updated: Port batch_save.js (#1467)

This is an automated email from the ASF dual-hosted git repository.

garren pushed a commit to branch elixir-suite
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/elixir-suite by this push:
     new effdc4e  Port batch_save.js (#1467)
effdc4e is described below

commit effdc4ec8af822d73d3431043c598b2cbb5d1286
Author: Jay Doane <ja...@gmail.com>
AuthorDate: Wed Jul 25 10:44:22 2018 -0700

    Port batch_save.js (#1467)
---
 test/elixir/test/batch_save_test.exs | 42 ++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/test/elixir/test/batch_save_test.exs b/test/elixir/test/batch_save_test.exs
new file mode 100644
index 0000000..4863a8d
--- /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