Skip to content

Commit

Permalink
Merge pull request visionmedia#25 from donedotcom/master
Browse files Browse the repository at this point in the history
Added test case, example for custom actions (element & collection) [pacovell]
  • Loading branch information
tj committed Jul 11, 2011
2 parents 456df1b + 766b220 commit dab7630
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
12 changes: 11 additions & 1 deletion examples/user.js
Expand Up @@ -36,8 +36,18 @@ var user = {
delete users[req.params.user];
res.send('removed ' + req.params.user);
}

login: function(req, res){
res.send('logged in ' + req.params.user);
}

logout: function(req, res){
res.send('logged out');
}
};

app.resource('users', user);
var userResource = app.resource('users', user);
userResource.map('get', 'login', user.login); // relative path accesses element (/users/1/login)
userResource.map('get', '/logout', user.logout); // absolute path accesses collection (/users/logout)

app.listen(3000);
27 changes: 27 additions & 0 deletions test/resource.test.js
Expand Up @@ -264,5 +264,32 @@ module.exports = {
assert.response(app,
{ url: '/pets/0' },
{ body: 'Not Found', status: 404 });
},

'test custom route configuration': function(){
var app = express.createServer();
var Forum = require('./fixtures/forum').Forum;

function load(id, fn) { fn(null, "User"); }
var actions = {
login: function(req, res){
res.end('login');
},
logout: function(req, res){
res.end('logout');
}
};

var users = app.resource('users', actions, { load: load });
users.map('get', 'login', actions.login);
users.map('get', '/logout', actions.logout);

assert.response(app,
{ url: '/users/1/login' },
{ body: 'login' });

assert.response(app,
{ url: '/users/logout' },
{ body: 'logout' });
}
};

0 comments on commit dab7630

Please sign in to comment.