diff options
Diffstat (limited to 'share/www/script/test/show_documents.js')
-rw-r--r-- | share/www/script/test/show_documents.js | 115 |
1 files changed, 63 insertions, 52 deletions
diff --git a/share/www/script/test/show_documents.js b/share/www/script/test/show_documents.js index b9a66a1d..ed1ab3b3 100644 --- a/share/www/script/test/show_documents.js +++ b/share/www/script/test/show_documents.js @@ -33,9 +33,16 @@ couchTests.show_documents = function(debug) { } }), "just-name" : stringFun(function(doc, req) { - return { - body : "Just " + doc.name - }; + if (doc) { + return { + body : "Just " + doc.name + }; + } else { + return { + body : "No such doc", + code : 404 + }; + } }), "req-info" : stringFun(function(doc, req) { return { @@ -123,68 +130,72 @@ couchTests.show_documents = function(debug) { var docid = resp.id; // show error - var xhr = CouchDB.request("GET", "/test_suite_db/_show/"); - T(xhr.status == 404); + var xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/"); + T(xhr.status == 404, 'Should be missing'); T(JSON.parse(xhr.responseText).reason == "Invalid path."); // hello template world - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/hello/"+docid); + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/hello/"+docid); T(xhr.responseText == "Hello World"); // hello template world (no docid) - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/hello/"); + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/hello"); T(xhr.responseText == "Empty World"); // // hello template world (non-existing docid) - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/hello/nonExistingDoc"); + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/hello/nonExistingDoc"); T(xhr.responseText == "New World"); // show with doc - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/just-name/"+docid); + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/just-name/"+docid); T(xhr.responseText == "Just Rusty"); + // show with missing doc + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/just-name/missingdoc"); + console.log(xhr) + T(xhr.status == 404, 'Doc should be missing'); + T(xhr.responseText == "No such doc"); // show with missing func - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/missing/"+docid); - T(xhr.status == 404); - + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/missing/"+docid); + T(xhr.status == 404, "function is missing"); + // missing design doc - xhr = CouchDB.request("GET", "/test_suite_db/_show/missingdoc/just-name/"+docid); + xhr = CouchDB.request("GET", "/test_suite_db/_design/missingddoc/_show/just-name/"+docid); T(xhr.status == 404); var resp = JSON.parse(xhr.responseText); T(resp.error == "not_found"); // query parameters - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/req-info/"+docid+"?foo=bar", { - headers: { - "Accept": "text/html;text/plain;*/*", - "X-Foo" : "bar" - } + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/req-info/"+docid+"?foo=bar", { + headers: { + "Accept": "text/html;text/plain;*/*", + "X-Foo" : "bar" + } }); var resp = JSON.parse(xhr.responseText); T(equals(resp.headers["X-Foo"], "bar")); T(equals(resp.query, {foo:"bar"})); T(equals(resp.verb, "GET")); - T(equals(resp.path[4], docid)); + T(equals(resp.path[5], docid)); T(equals(resp.info.db_name, "test_suite_db")); // returning a content-type - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/xml-type/"+docid); + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/xml-type/"+docid); T("application/xml" == xhr.getResponseHeader("Content-Type")); T("Accept" == xhr.getResponseHeader("Vary")); // accept header switching - // different mime has different etag - - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/accept-switch/"+docid, { - headers: {"Accept": "text/html;text/plain;*/*"} + // different mime has different etag + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/accept-switch/"+docid, { + headers: {"Accept": "text/html;text/plain;*/*"} }); T("text/html" == xhr.getResponseHeader("Content-Type")); T("Accept" == xhr.getResponseHeader("Vary")); var etag = xhr.getResponseHeader("etag"); - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/accept-switch/"+docid, { - headers: {"Accept": "image/png;*/*"} + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/accept-switch/"+docid, { + headers: {"Accept": "image/png;*/*"} }); T(xhr.responseText.match(/PNG/)) T("image/png" == xhr.getResponseHeader("Content-Type")); @@ -193,12 +204,12 @@ couchTests.show_documents = function(debug) { // proper etags // show with doc - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/just-name/"+docid); + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/just-name/"+docid); // extract the ETag header values etag = xhr.getResponseHeader("etag"); // get again with etag in request - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/just-name/"+docid, { - headers: {"if-none-match": etag} + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/just-name/"+docid, { + headers: {"if-none-match": etag} }); // should be 304 T(xhr.status == 304); @@ -208,16 +219,16 @@ couchTests.show_documents = function(debug) { resp = db.save(doc); T(resp.ok); // req with same etag - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/just-name/"+docid, { - headers: {"if-none-match": etag} + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/just-name/"+docid, { + headers: {"if-none-match": etag} }); // status is 200 T(xhr.status == 200); // get new etag and request again etag = xhr.getResponseHeader("etag"); - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/just-name/"+docid, { - headers: {"if-none-match": etag} + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/just-name/"+docid, { + headers: {"if-none-match": etag} }); // should be 304 T(xhr.status == 304); @@ -225,9 +236,9 @@ couchTests.show_documents = function(debug) { // update design doc (but not function) designDoc.isChanged = true; T(db.save(designDoc).ok); - - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/just-name/"+docid, { - headers: {"if-none-match": etag} + + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/just-name/"+docid, { + headers: {"if-none-match": etag} }); // should be 304 T(xhr.status == 304); @@ -240,49 +251,49 @@ couchTests.show_documents = function(debug) { }).toString(); T(db.save(designDoc).ok); - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/just-name/"+docid, { - headers: {"if-none-match": etag} + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/just-name/"+docid, { + headers: {"if-none-match": etag} }); // status is 200 T(xhr.status == 200); // JS can't set etag - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/no-set-etag/"+docid); + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/no-set-etag/"+docid); // extract the ETag header values etag = xhr.getResponseHeader("etag"); T(etag != "skipped") // test the respondWith mime matcher - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/respondWith/"+docid, { - headers: { - "Accept": 'text/html,application/atom+xml; q=0.9' - } + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/respondWith/"+docid, { + headers: { + "Accept": 'text/html,application/atom+xml; q=0.9' + } }); T(xhr.getResponseHeader("Content-Type") == "text/html"); T(xhr.responseText == "Ha ha, you said \"plankton\"."); // now with xml - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/respondWith/"+docid, { - headers: { - "Accept": 'application/xml' - } + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/respondWith/"+docid, { + headers: { + "Accept": 'application/xml' + } }); T(xhr.getResponseHeader("Content-Type") == "application/xml"); T(xhr.responseText.match(/node/)); T(xhr.responseText.match(/plankton/)); // registering types works - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/respondWith/"+docid, { - headers: { - "Accept": "application/x-foo" - } + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/respondWith/"+docid, { + headers: { + "Accept": "application/x-foo" + } }); T(xhr.getResponseHeader("Content-Type") == "application/x-foo"); T(xhr.responseText.match(/foofoo/)); // test the respondWith mime matcher without - xhr = CouchDB.request("GET", "/test_suite_db/_show/template/respondWith/"+docid, { + xhr = CouchDB.request("GET", "/test_suite_db/_design/template/_show/respondWith/"+docid, { headers: { "Accept": 'text/html,application/atom+xml; q=0.9' } |