base.js 1.82 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
/*jshint node:true */
/*global describe, it */

"use strict";

var assert = require("assert"),

	common = require("./common"),

	resource = common.resource,
	request = common.request,
	callbackTests = common.callbackTests;


describe("All resources", function() {
	describe("PUT", function() {
		callbackTests("PUT", it);

		it("should pass false as a second argument to .put", function(done) {
			var value;

			resource("test").put(function(req, isPatch, cb) {
				value = isPatch;
				cb();
			});

			request.put("/test", function(res, body) {
				assert.strictEqual(false, value);
				done();
			});
		});
	});

	describe("PATCH", function() {
		callbackTests("PATCH", it);

		it("should pass true as a second argument to .put", function(done) {
			var value;

			resource("test").put(function(req, isPatch, cb) {
				value = isPatch;
				cb();
			});

			request.patch("/test", function(res, body) {
				assert.strictEqual(true, value);
				done();
			});
		});
	});

	describe("POST", function() {
		callbackTests("POST", it);
	});

	describe("DELETE", function() {
		callbackTests("DELETE", it);
	});
});

describe("Document resources", function() {
	describe("GET", function() {
		callbackTests("GET", it);
	});
});

describe("Collection resources", function() {
	describe("GET", function() {
		callbackTests("COUNT", it);
		callbackTests("LIST", it);

		it("should send a JSON response with the results from .count and .list", function(done) {
			resource("test")
				.count(function(req, cb) {
					cb(null, 42);
				})
				.list(function(req, offset, limit, cb) {
					cb(null, ["foo", "bar"]);
				});

			request.get("/test", function(res, body) {
				var jbody;
				assert.doesNotThrow(function() { jbody = JSON.parse(body); });

				assert.deepEqual({
					_count: 42,
					_items: ["foo", "bar"]
				}, jbody);

				done();
			});
		});
	});
});