nodulator
Version:
Complete NodeJS Framework for Restfull APIs
110 lines (96 loc) • 3.06 kB
JavaScript
;
var assert = require('assert')
, rest = require('../../../index')
, tests = require('../../shared/lib/rest')
, serverUrl = 'http://localhost:3000';
tests['default Rest.baseUrl should be correct'] = function() {
var restApi = new rest.Rest();
assert.strictEqual(restApi.baseUrl, 'http://localhost:3000/tests/html/index.html');
};
function requestTest(method, route, expected, complete)
{
if (typeof method === 'undefined') {
var method = 'request';
}
var restApi = new rest.Rest(serverUrl, {
filters: {
param: [rest.RestFilters.PARAM_FILTER_PARAMS],
url: [function(url, request) {
console.log(request.method, url); return url;
}]
}
});
function onResponse(error, data) {
assert.strictEqual(error, null);
assert.deepEqual(data, expected);
complete();
};
if (!method) {
restApi.request('GET', route, onResponse);
}
else {
restApi[method](route, onResponse);
}
};
tests['Rest.request() should return correct data'] = function(complete)
{
requestTest(null, '/tests/fixtures/data', { "key": "value" }, complete);
};
tests['Rest.read() should return correct data'] = function(complete)
{
requestTest('read', '/tests/fixtures/data', { "key": "value" }, complete);
};
tests['Rest.create() should return correct data'] = function(complete)
{
requestTest('create', '/create', { success: true }, complete);
};
tests['Rest.update() should return correct data'] = function(complete)
{
requestTest('update', '/update', { success: true }, complete);
};
tests['Rest.remove() should return correct data'] = function(complete)
{
requestTest('remove', '/remove', { success: true }, complete);
};
tests['Rest.create() should send correct data'] = function(complete)
{
var restApi = new rest.Rest(serverUrl);
var data = { foo: 'bar', baz: 'zoobie' };
restApi.create('/ping-pong', { data: data }, function(error, _data) {
assert.strictEqual(error, null);
assert.deepEqual(_data, data);
complete();
});
};
tests['Rest.update() should send correct data'] = function(complete)
{
var restApi = new rest.Rest(serverUrl);
var data = { foo: 'bar', baz: 'zoobie' };
restApi.update('/ping-pong', { data: data }, function(error, _data) {
assert.strictEqual(error, null);
assert.deepEqual(_data, data);
complete();
});
};
tests['Rest.read() should cache the results when using the cacheLifetime option'] = function(complete)
{
var restApi = new rest.Rest(serverUrl, { cacheLifetime: 1000 });
var firstResult = null;
restApi.read('/time', function(error, data) {
assert.strictEqual(error, null);
assert.ok(data);
firstResult = data;
setTimeout(function() {
restApi.read('/time', function(error, data) {
assert.deepEqual(firstResult, data);
setTimeout(function() {
restApi.read('/time', function(error, data) {
assert.notDeepEqual(firstResult, data);
complete();
});
}, 1500);
});
}, 10);
});
};
module.exports = tests;