diff options
Diffstat (limited to 'share')
-rw-r--r-- | share/www/script/couch_tests.js | 1 | ||||
-rw-r--r-- | share/www/script/test/batch_save.js | 63 |
2 files changed, 64 insertions, 0 deletions
diff --git a/share/www/script/couch_tests.js b/share/www/script/couch_tests.js index 9bd2b45c..6e4699e4 100644 --- a/share/www/script/couch_tests.js +++ b/share/www/script/couch_tests.js @@ -26,6 +26,7 @@ function loadTest(file) { }; loadTest("basics.js"); +loadTest("batch_save.js"); loadTest("delayed_commits.js"); loadTest("all_docs.js"); loadTest("conflicts.js"); diff --git a/share/www/script/test/batch_save.js b/share/www/script/test/batch_save.js new file mode 100644 index 00000000..77aa6635 --- /dev/null +++ b/share/www/script/test/batch_save.js @@ -0,0 +1,63 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. + + +couchTests.batch_save = function(debug) { + var db = new CouchDB("test_suite_db"); + db.deleteDb(); + db.createDb(); + if (debug) debugger; + + // commit should work fine with no batches + T(db.ensureFullCommit().ok); + + // PUT a doc with ?batch=ok + T(db.save({_id:"0",a:1,b:1}, {batch : "ok"}).ok); + + // test that response is 200 Accepted + T(db.last_req.status == 202); + T(db.last_req.statusText == "Accepted"); + + T(db.allDocs().total_rows == 0); + + restartServer(); + + // lost the updates + T(db.allDocs().total_rows == 0); + + T(db.save({_id:"0",a:1,b:1}, {batch : "ok"}).ok); + T(db.save({_id:"1",a:1,b:1}, {batch : "ok"}).ok); + T(db.save({_id:"2",a:1,b:1}, {batch : "ok"}).ok); + + T(db.ensureFullCommit().ok); + T(db.allDocs().total_rows == 3); + + // repeat the tests for POST + var resp = db.request("POST", db.uri + "?batch=ok", {body: JSON.stringify({a:1})}); + T(JSON.parse(resp.responseText).ok); + + // test that response is 200 Accepted + T(resp.status == 202); + T(resp.statusText == "Accepted"); + + T(db.allDocs().total_rows == 3); + // restartServer(); + // // lost the POSTed doc + // T(db.allDocs().total_rows == 3); + + var resp = db.request("POST", db.uri + "?batch=ok", {body: JSON.stringify({a:1})}); + T(JSON.parse(resp.responseText).ok); + + T(db.ensureFullCommit().ok); + T(db.allDocs().total_rows == 5); + +}; |