Skip to content

Instantly share code, notes, and snippets.

@EugeneKostrikov
Forked from tdantas/model.js
Last active August 29, 2015 14:00
Show Gist options
  • Save EugeneKostrikov/7775621b69ee6d9c7b1e to your computer and use it in GitHub Desktop.
Save EugeneKostrikov/7775621b69ee6d9c7b1e to your computer and use it in GitHub Desktop.
module.exports = function(connection){
return {
thumb: function(doc){
if(doc.thumbnails) return;
var Thumbnal = connection.model('Thumbnail');
Thumbnail.generate(doc.url, function(err, thumb){
doc.thumbnails = thumb;
doc.save()
});
}
}
};
var middleware = require('./middleware')(mongoose);
var Page = new Schema({
title: { type: String, default: '', trim: true },
url: { type: String, default: '', trim: true },
thumbnails: {type: Schema.ObjectId, ref: 'Thumbnails'},
});
Page.post('save', middleware.thumb);
var Thumbnail = new Schema({
domain: {type: String, trim: true},
url: {
small: { type: String, trim: true },
original: {type: String, trim: true }
}
});
Thumbnail.statics.generate = function(doc, cb) {
// generate site preview , save the thumbnail and call cb
}
var Page = mongoose.model('Page');
var Thumbnail = mongoose.model('Thumbnail');
var middleware = require('./middleware')(mongoose);
describe('middleware', function(){
it('generates thumbnails if they are missing', function(done){
//Mock out your document so that you are sure what exactly the middleware gets
var mockDoc = {
url: 'http://www.gist.github.com',
thumbnail: null,
save: onSave
};
middleware.thumb(mockDoc);
function onSave(){
(mockDock.thumbnails).should.equal('some output you expect from Thumbnail.generate');
done();
}
});
it('skips generation if thumbnails are here', function(done){
//Mock the doc again
var mockDoc = {
thubmnails: true,
save: onSave
}
middleware.thumb(mockDoc);
function onSave(){
//confirm that thumbnails are not overridden
(mockDock.thumbnails).should.equal(true);
done();
}
});
});
it("generates thumbnail if page does not have one", function(done){
var pageAttr = { title: 'Gist web page', url: 'http://www.gist.github.com' }
var gist = new Page(pageAttr), function(err, _page){
if(err) throw err;
done();
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment