From f7cf12ce83ee478ae7e7f768eb272e20436e528a Mon Sep 17 00:00:00 2001 From: Alessio Biancalana Date: Sun, 18 Nov 2018 19:57:28 +0100 Subject: [PATCH] test: port large_docs.js to Elixir test suite --- test/elixir/README.md | 2 +- test/elixir/test/large_docs_text.exs | 40 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 test/elixir/test/large_docs_text.exs diff --git a/test/elixir/README.md b/test/elixir/README.md index 48f936fcbd6..ab58e495996 100644 --- a/test/elixir/README.md +++ b/test/elixir/README.md @@ -44,7 +44,7 @@ X means done, - means partially - [ ] Port http.js - [ ] Port invalid_docids.js - [ ] Port jsonp.js - - [ ] Port large_docs.js + - [X] Port large_docs.js - [ ] Port list_views.js - [ ] Port lorem_b64.txt - [ ] Port lorem.txt diff --git a/test/elixir/test/large_docs_text.exs b/test/elixir/test/large_docs_text.exs new file mode 100644 index 00000000000..4d2c5dedeb8 --- /dev/null +++ b/test/elixir/test/large_docs_text.exs @@ -0,0 +1,40 @@ +defmodule LargeDocsTest do + use CouchTestCase + + @moduletag :large_docs + @long_string "0123456789\n" + + @moduledoc """ + Test saving a bunch of large documents. + This is a port of the large_docs.js suite + """ + + @tag :with_db + test "Large docs", context do + db_name = context[:db_name] + long_text = String.duplicate(@long_string, 10) + + resp1 = Couch.post("/#{db_name}", body: %{:_id => "0", :longtest => long_text}).body + resp2 = Couch.post("/#{db_name}", body: %{:_id => "1", :longtest => long_text}).body + resp3 = Couch.post("/#{db_name}", body: %{:_id => "2", :longtest => long_text}).body + resp4 = Couch.post("/#{db_name}", body: %{:_id => "3", :longtest => long_text}).body + + assert resp1["ok"] + assert resp2["ok"] + assert resp3["ok"] + assert resp4["ok"] + + %{"rows" => rows} = query(db_name) + assert Enum.count(rows) === 4 + Enum.each(rows, fn row -> assert row["value"] === long_text end) + end + + defp query(db_name) do + map_fun = "function(doc) { emit(null, doc.longtest); }" + map_doc = %{:views => %{:view => %{:map => map_fun}}} + %{"rev" => rev} = Couch.put("/#{db_name}/_design/tempddoc", body: map_doc).body + response = Couch.get("/#{db_name}/_design/tempddoc/_view/view").body + Couch.delete("/#{db_name}/_design/tempddoc?rev=#{rev}") + response + end +end