// 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); };