Ignore deleted messages from list

This commit is contained in:
Chris Blanchard 2015-08-07 01:47:23 +01:00
parent ab790e8c9e
commit c883fee668
4 changed files with 47 additions and 19 deletions

View file

@ -3,7 +3,7 @@
var config = {
port: 9000,
mongo: {
uri: "mongodb://localhost/swsgather_development"
uri: "mongodb://localhost/swsgather_test"
},
secret_token: ""
};

View file

@ -9,10 +9,12 @@ var messageSchema = new Schema({
avatar: String
},
content: { type: String, required: true },
createdAt: { type: Date, default: Date.now, required: true }
createdAt: { type: Date, default: Date.now, required: true },
deleted: { type: Boolean, default: false }
});
messageSchema.index({ createdAt: 1 });
messageSchema.index({ createdAt: -1 });
messageSchema.index({ deleted: 1, createdAt: -1 });
// Class Methods
@ -33,7 +35,7 @@ messageSchema.methods.toJson = function () {
messageSchema.statics.list = function (options, callback) {
return this.find().sort({createdAt: 1}).limit(30).exec(callback);
return this.find({deleted: false}).sort({createdAt: -1}).limit(30).exec(callback);
};
module.exports = mongoose.model('message', messageSchema);

View file

@ -59,4 +59,16 @@ var random = helpers.random = function (n) {
return Math.floor(Math.random () * n);
}
helpers.createMessage = function (options, callback) {
var content = options.content || "Test content";
var user = options.user || createUser();
Message.create({
author: {
username: user.username,
avatar: user.avatar
},
content: content
}, callback);
};
module.exports = helpers;

View file

@ -38,21 +38,14 @@ describe("Message Model", function () {
});
describe(".list", function () {
before(function (done) {
var instructions = [helper.clearDb.bind(null)];
var create = function (content) {
return function (callback) {
Message.create({
author: {
username: user.username,
avatar: user.avatar
},
content: content
}, callback);
}
};
beforeEach(function (done) {
var instructions = [];//[helper.clearDb.bind(null)];
for (var i = 0; i < 31; i++) {
instructions.push(create(i));
instructions.push(function (content) {
return function (callback) {
return helper.createMessage({content: content}, callback);
}
}(i));
}
async.series(instructions, done);
});
@ -63,10 +56,31 @@ describe("Message Model", function () {
assert.isTrue(messages.reduce(function (acc, message, index, arr) {
if (index === 0) return true;
if (acc === false) return false;
return arr[index - 1].createdAt < message.createdAt;
return arr[index - 1].createdAt > message.createdAt;
}));
assert.isTrue(messages.some(function (message) {
return message.content === "30";
}));
done();
});
});
it ("does not list deleted messages", function (done) {
helper.createMessage({
content: "FOOBAR"
}, function(error, message) {
if (error) return done(error);
message.deleted = true;
message.save(function (error, message) {
if (error) return done(error);
assert.isTrue(message.deleted);
Message.list({}, function (error, messages) {
assert.isTrue(messages.every(function (elem) {
return elem.id !== message.id;
}));
done();
});
});
});
});
});
});