mirror of
https://github.com/ENSL/ensl_gathers.git
synced 2025-02-21 19:21:13 +00:00
Ignore deleted messages from list
This commit is contained in:
parent
ab790e8c9e
commit
c883fee668
4 changed files with 47 additions and 19 deletions
|
@ -3,7 +3,7 @@
|
|||
var config = {
|
||||
port: 9000,
|
||||
mongo: {
|
||||
uri: "mongodb://localhost/swsgather_development"
|
||||
uri: "mongodb://localhost/swsgather_test"
|
||||
},
|
||||
secret_token: ""
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
|
@ -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();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue