// 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.design_options = function(debug) { var db = new CouchDB("test_suite_db", {"X-Couch-Full-Commit":"false"}); db.deleteDb(); db.createDb(); if (debug) debugger; //// test the includes_design option var map = "function (doc) {emit(null, doc._id);}"; var withseq = "function(doc) {emit(doc._local_seq, null)}" // we need a design doc even to test temp views with it var designDoc = { _id:"_design/fu", language: "javascript", options: { include_design: true, local_seq: true }, views: { data: {"map": map}, with_seq : {"map" : withseq} } }; T(db.save(designDoc).ok); // should work for temp views var rows = db.query(map, null, {options:{include_design: true}}).rows; T(rows.length == 1); T(rows[0].value == "_design/fu"); rows = db.query(map).rows; T(rows.length == 0); // when true, should include design docs in views rows = db.view("fu/data").rows; T(rows.length == 1); T(rows[0].value == "_design/fu"); // when false, should not designDoc.options.include_design = false; delete designDoc._rev; designDoc._id = "_design/bingo"; T(db.save(designDoc).ok); rows = db.view("bingo/data").rows; T(rows.length == 0); // should default to false delete designDoc.options; delete designDoc._rev; designDoc._id = "_design/bango"; T(db.save(designDoc).ok); rows = db.view("bango/data").rows; T(rows.length == 0); // should also have local_seq in the view var resp = db.save({}); rows = db.view("fu/with_seq").rows; T(rows[0].key == 1) T(rows[1].key == 2) var doc = db.open(resp.id); db.deleteDoc(doc); };