Skip to content

Commit

Permalink
added get /messages/messageId
Browse files Browse the repository at this point in the history
  • Loading branch information
abarnhard committed Aug 29, 2014
1 parent f45c9ab commit d82c84c
Show file tree
Hide file tree
Showing 9 changed files with 94 additions and 3 deletions.
10 changes: 10 additions & 0 deletions app/controllers/messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,13 @@ exports.index = function(req, res){
});
};

exports.show = function(req, res){
User.readMessage(req.params.messageId, res.locals.user._id, function(err, message){
if(message){
res.render('messages/show', {message:message, moment:moment});
}else{
res.redirect('/messages');
}
});
};

23 changes: 21 additions & 2 deletions app/models/message.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
'use strict';

var Mongo = require('mongodb'),
_ = require('lodash');

function Message(fromId, toId, body){
this.fromId = fromId;
this.toId = toId;
Expand All @@ -19,8 +22,24 @@ Message.find = function(toId, query, cb){
Message.collection.find(filter).sort(sort).toArray(cb);
};

Message.findOne = function(query, cb){
Message.collection.findOne(query, cb);
Message.findOne = function(messageId, userId, cb){
var _id = Mongo.ObjectID(messageId);
Message.collection.findOne({_id:_id, toId:userId}, function(err, obj){
if(!obj){return cb();}

cb(err, _.create(Message.prototype, obj));
});
};

Message.read = function(messageId, userId, cb){
Message.findOne(messageId, userId, function(err, m){
if(!m){return cb();}

m.isRead = true;
m.save(function(){
cb(null, m);
});
});
};

Message.prototype.save = function(cb){
Expand Down
12 changes: 12 additions & 0 deletions app/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,18 @@ User.fetchMessages = function(userId, query, cb){
});
};

User.readMessage = function(messageId, userId, cb){
Message.read(messageId, userId, function(err, m){
if(!m){return cb();}

User.findById(m.fromId, function(err2, u){
m.fromName = u.name;
m.fromEmail = u.email;
cb(err2, m);
});
});
};

User.prototype.send = function(receiver, data, cb){
switch(data.mtype){
case 'text':
Expand Down
1 change: 1 addition & 0 deletions app/routes/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ module.exports = function(app, express){
app.get('/users/:email', users.showProfile);
app.post('/message/:userId', users.message);
app.get('/messages', messages.index);
app.get('/messages/:messageId', messages.show);

console.log('Express: Routes Loaded');
};
Expand Down
2 changes: 1 addition & 1 deletion app/static/css/style.css
Original file line number Diff line number Diff line change
@@ -1 +1 @@
.photo{height:275px;width:400px;background-size:cover;margin:10px 0}
.photo{height:275px;width:400px;background-size:cover;margin:10px 0}.message-text{margin-top:10px}
4 changes: 4 additions & 0 deletions app/static/css/style.less
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,7 @@ body{
background-size: cover;
margin: 10px 0;
}

.message-text {
margin-top: 10px;
}
20 changes: 20 additions & 0 deletions app/views/messages/show.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
extends ../shared/template
block content
h2 Message
.panel.panel-default
.panel-body
.row
.col-xs-12
.row.message-from
.col-xs-1 From:
.col-xs-3: a(href='/users/#{message.fromEmail}')= message.fromName
.col-xs-7
.row.message-sent
.col-xs-1 Sent:
.col-xs-3= moment(message.sent).format('MMM Do YY')
.col-xs-7
.row.message-text
.col-xs-12= message.body

block scripts

13 changes: 13 additions & 0 deletions test/acceptance/message.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,18 @@ describe('messages', function(){
});
});

describe('get /messages/messageId', function(){
it('should show an individual users message', function(done){
request(app)
.get('/messages/a00000000000000000000002')
.set('cookie', cookie)
.end(function(err, res){
expect(res.status).to.equal(200);
expect(res.text).to.include('drinks after work');
done();
});
});
});

});

12 changes: 12 additions & 0 deletions test/unit/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,18 @@ describe('User', function(){
});
});

describe('.readMessage', function(){
it('should return a message and update it\'s isRead status', function(done){
var userId = Mongo.ObjectID('000000000000000000000001'),
messageId = 'a00000000000000000000002';
User.readMessage(messageId, userId, function(err, message){
expect(message.isRead).to.equal(true);
expect(message.fromName).to.equal('Sue');
done();
});
});
});

describe('#send', function(){
it('should send a text message to a user', function(done){
User.findById('000000000000000000000001', function(err, sender){
Expand Down

0 comments on commit d82c84c

Please sign in to comment.