blob: 030fcdfba875e21a6708365f60afbdf11110fb74 [file] [log] [blame]
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