Files
deployd/test/resource.unit.js
2012-06-11 08:58:10 -07:00

38 lines
1.3 KiB
JavaScript

var Resource = require('../lib/resource');
var Context = require('../lib/context');
describe('resource', function(){
describe('.parse(url)', function(){
function example(url, basepath, id, parts, query) {
var result = Resource.prototype.parse(url);
expect(result).to.be.a('object');
expect(result.basepath).to.equal(basepath);
expect(result.id).to.equal(id);
expect(result.parts).to.eql(parts);
expect(result.query).to.eql(query || {});
}
it('should return a parsed url', function() {
example('/foo/7?q=bar', 'foo', '7', ['foo', '7'], {q: 'bar'});
example('/foo/bat', 'foo', 'bat', ['foo', 'bat']);
example('/foo/bat/baz', 'foo', 'baz', ['foo', 'bat', 'baz']);
// should also auto encode q={...}
example('/foo/boo/bar/baz?q=' + encodeURI(JSON.stringify({"a":"b"})), 'foo', 'baz', ['foo', 'boo', 'bar', 'baz'], {'q':{'a': 'b'}});
})
})
describe('.handle(ctx, next)', function(){
it('should respond with 200 OK', function(done) {
var r = new Resource({path: '/foo'});
freq('/foo', null, function (req, res) {
r.handle(new Context(r, req, res, {}));
}, function (req, res) {
expect(res.statusCode).to.equal(200);
done();
})
})
})
})