mirror of
https://github.com/ENSL/ensl_gathers.git
synced 2025-06-03 02:30:54 +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 = {
|
var config = {
|
||||||
port: 9000,
|
port: 9000,
|
||||||
mongo: {
|
mongo: {
|
||||||
uri: "mongodb://localhost/swsgather_development"
|
uri: "mongodb://localhost/swsgather_test"
|
||||||
},
|
},
|
||||||
secret_token: ""
|
secret_token: ""
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,10 +9,12 @@ var messageSchema = new Schema({
|
||||||
avatar: String
|
avatar: String
|
||||||
},
|
},
|
||||||
content: { type: String, required: true },
|
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
|
// Class Methods
|
||||||
|
|
||||||
|
@ -33,7 +35,7 @@ messageSchema.methods.toJson = function () {
|
||||||
|
|
||||||
|
|
||||||
messageSchema.statics.list = function (options, callback) {
|
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);
|
module.exports = mongoose.model('message', messageSchema);
|
||||||
|
|
|
@ -59,4 +59,16 @@ var random = helpers.random = function (n) {
|
||||||
return Math.floor(Math.random () * 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;
|
module.exports = helpers;
|
|
@ -38,21 +38,14 @@ describe("Message Model", function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe(".list", function () {
|
describe(".list", function () {
|
||||||
before(function (done) {
|
beforeEach(function (done) {
|
||||||
var instructions = [helper.clearDb.bind(null)];
|
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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
for (var i = 0; i < 31; i++) {
|
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);
|
async.series(instructions, done);
|
||||||
});
|
});
|
||||||
|
@ -63,10 +56,31 @@ describe("Message Model", function () {
|
||||||
assert.isTrue(messages.reduce(function (acc, message, index, arr) {
|
assert.isTrue(messages.reduce(function (acc, message, index, arr) {
|
||||||
if (index === 0) return true;
|
if (index === 0) return true;
|
||||||
if (acc === false) return false;
|
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();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue