Tests: tidied up integration/models/model_posts_spec.js

no issue

- simple cleanup
- no functional change
This commit is contained in:
kirrg001 2018-04-06 15:31:00 +02:00
parent f114f45740
commit e7529de773

View File

@ -7,10 +7,7 @@ var should = require('should'),
sequence = require('../../../server/lib/promise/sequence'), sequence = require('../../../server/lib/promise/sequence'),
settingsCache = require('../../../server/services/settings/cache'), settingsCache = require('../../../server/services/settings/cache'),
ghostBookshelf = require('../../../server/models/base'), ghostBookshelf = require('../../../server/models/base'),
PostModel = require('../../../server/models/post').Post, models = require('../../../server/models'),
TagModel = require('../../../server/models/tag').Tag,
UserModel = require('../../../server/models/user').User,
RoleModel = require('../../../server/models/role').Role,
common = require('../../../server/lib/common'), common = require('../../../server/lib/common'),
configUtils = require('../../utils/configUtils'), configUtils = require('../../utils/configUtils'),
DataGenerator = testUtils.DataGenerator, DataGenerator = testUtils.DataGenerator,
@ -35,9 +32,6 @@ describe('Post Model', function () {
sandbox.restore(); sandbox.restore();
}); });
should.exist(TagModel);
should.exist(PostModel);
describe('Single author posts', function () { describe('Single author posts', function () {
afterEach(function () { afterEach(function () {
configUtils.restore(); configUtils.restore();
@ -106,7 +100,7 @@ describe('Post Model', function () {
}); });
it('can findAll', function (done) { it('can findAll', function (done) {
PostModel.findAll().then(function (results) { models.Post.findAll().then(function (results) {
should.exist(results); should.exist(results);
results.length.should.be.above(1); results.length.should.be.above(1);
done(); done();
@ -116,7 +110,7 @@ describe('Post Model', function () {
it('can findAll, returning all related data', function (done) { it('can findAll, returning all related data', function (done) {
var options = {withRelated: ['author', 'authors', 'fields', 'tags', 'created_by', 'updated_by', 'published_by']}; var options = {withRelated: ['author', 'authors', 'fields', 'tags', 'created_by', 'updated_by', 'published_by']};
PostModel.findAll(options) models.Post.findAll(options)
.then(function (results) { .then(function (results) {
should.exist(results); should.exist(results);
results.length.should.be.above(0); results.length.should.be.above(0);
@ -137,7 +131,7 @@ describe('Post Model', function () {
withRelated: ['author', 'fields', 'tags', 'created_by', 'updated_by', 'published_by'] withRelated: ['author', 'fields', 'tags', 'created_by', 'updated_by', 'published_by']
}; };
PostModel.findAll(options) models.Post.findAll(options)
.then(function (results) { .then(function (results) {
should.exist(results); should.exist(results);
results.length.should.be.above(0); results.length.should.be.above(0);
@ -163,7 +157,7 @@ describe('Post Model', function () {
}); });
it('can findPage (default)', function (done) { it('can findPage (default)', function (done) {
PostModel.findPage().then(function (results) { models.Post.findPage().then(function (results) {
should.exist(results); should.exist(results);
results.meta.pagination.page.should.equal(1); results.meta.pagination.page.should.equal(1);
@ -176,7 +170,7 @@ describe('Post Model', function () {
}); });
it('can findPage, returning all related data', function (done) { it('can findPage, returning all related data', function (done) {
PostModel.findPage({withRelated: ['author', 'fields', 'tags', 'created_by', 'updated_by', 'published_by']}) models.Post.findPage({withRelated: ['author', 'fields', 'tags', 'created_by', 'updated_by', 'published_by']})
.then(function (results) { .then(function (results) {
should.exist(results); should.exist(results);
@ -193,7 +187,7 @@ describe('Post Model', function () {
}); });
it('returns computed fields when columns are asked for explicitly', function (done) { it('returns computed fields when columns are asked for explicitly', function (done) {
PostModel.findPage({columns: ['id', 'slug', 'url', 'mobiledoc']}).then(function (results) { models.Post.findPage({columns: ['id', 'slug', 'url', 'mobiledoc']}).then(function (results) {
should.exist(results); should.exist(results);
var post = _.find(results.posts, {slug: testUtils.DataGenerator.Content.posts[0].slug}); var post = _.find(results.posts, {slug: testUtils.DataGenerator.Content.posts[0].slug});
@ -209,7 +203,7 @@ describe('Post Model', function () {
}); });
it('ignores columns that do not exist', function (done) { it('ignores columns that do not exist', function (done) {
PostModel.findPage({columns: ['id', 'slug', 'doesnotexist']}).then(function (results) { models.Post.findPage({columns: ['id', 'slug', 'doesnotexist']}).then(function (results) {
should.exist(results); should.exist(results);
var post = _.find(results.posts, {slug: testUtils.DataGenerator.Content.posts[0].slug}); var post = _.find(results.posts, {slug: testUtils.DataGenerator.Content.posts[0].slug});
@ -225,21 +219,21 @@ describe('Post Model', function () {
testUtils.fixtures.insertExtraPosts().then(function () { testUtils.fixtures.insertExtraPosts().then(function () {
return testUtils.fixtures.insertExtraPostsTags(); return testUtils.fixtures.insertExtraPostsTags();
}).then(function () { }).then(function () {
return PostModel.findPage({page: 2}); return models.Post.findPage({page: 2});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(2); paginationResult.meta.pagination.page.should.equal(2);
paginationResult.meta.pagination.limit.should.equal(15); paginationResult.meta.pagination.limit.should.equal(15);
paginationResult.meta.pagination.pages.should.equal(4); paginationResult.meta.pagination.pages.should.equal(4);
paginationResult.posts.length.should.equal(15); paginationResult.posts.length.should.equal(15);
return PostModel.findPage({page: 5}); return models.Post.findPage({page: 5});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(5); paginationResult.meta.pagination.page.should.equal(5);
paginationResult.meta.pagination.limit.should.equal(15); paginationResult.meta.pagination.limit.should.equal(15);
paginationResult.meta.pagination.pages.should.equal(4); paginationResult.meta.pagination.pages.should.equal(4);
paginationResult.posts.length.should.equal(0); paginationResult.posts.length.should.equal(0);
return PostModel.findPage({limit: 30}); return models.Post.findPage({limit: 30});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal(30); paginationResult.meta.pagination.limit.should.equal(30);
@ -247,7 +241,7 @@ describe('Post Model', function () {
paginationResult.posts.length.should.equal(30); paginationResult.posts.length.should.equal(30);
// Test both boolean formats // Test both boolean formats
return PostModel.findPage({limit: 10, staticPages: true}); return models.Post.findPage({limit: 10, staticPages: true});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal(10); paginationResult.meta.pagination.limit.should.equal(10);
@ -255,7 +249,7 @@ describe('Post Model', function () {
paginationResult.posts.length.should.equal(1); paginationResult.posts.length.should.equal(1);
// Test both boolean formats // Test both boolean formats
return PostModel.findPage({limit: 10, staticPages: '1'}); return models.Post.findPage({limit: 10, staticPages: '1'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal(10); paginationResult.meta.pagination.limit.should.equal(10);
@ -263,7 +257,7 @@ describe('Post Model', function () {
paginationResult.posts.length.should.equal(1); paginationResult.posts.length.should.equal(1);
// Test featured pages // Test featured pages
return PostModel.findPage({limit: 10, filter: 'featured:true'}); return models.Post.findPage({limit: 10, filter: 'featured:true'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal(10); paginationResult.meta.pagination.limit.should.equal(10);
@ -271,18 +265,18 @@ describe('Post Model', function () {
paginationResult.posts.length.should.equal(10); paginationResult.posts.length.should.equal(10);
// Test both boolean formats for featured pages // Test both boolean formats for featured pages
return PostModel.findPage({limit: 10, filter: 'featured:1'}); return models.Post.findPage({limit: 10, filter: 'featured:1'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal(10); paginationResult.meta.pagination.limit.should.equal(10);
paginationResult.meta.pagination.pages.should.equal(6); paginationResult.meta.pagination.pages.should.equal(6);
paginationResult.posts.length.should.equal(10); paginationResult.posts.length.should.equal(10);
return PostModel.findPage({limit: 10, page: 2, status: 'all'}); return models.Post.findPage({limit: 10, page: 2, status: 'all'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.pages.should.equal(11); paginationResult.meta.pagination.pages.should.equal(11);
return PostModel.findPage({limit: 'all', status: 'all'}); return models.Post.findPage({limit: 'all', status: 'all'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal('all'); paginationResult.meta.pagination.limit.should.equal('all');
@ -298,28 +292,28 @@ describe('Post Model', function () {
return testUtils.fixtures.insertExtraPostsTags(); return testUtils.fixtures.insertExtraPostsTags();
}).then(function () { }).then(function () {
// Test tag filter // Test tag filter
return PostModel.findPage({page: 1, filter: 'tags:bacon'}); return models.Post.findPage({page: 1, filter: 'tags:bacon'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal(15); paginationResult.meta.pagination.limit.should.equal(15);
paginationResult.meta.pagination.pages.should.equal(1); paginationResult.meta.pagination.pages.should.equal(1);
paginationResult.posts.length.should.equal(2); paginationResult.posts.length.should.equal(2);
return PostModel.findPage({page: 1, filter: 'tags:kitchen-sink'}); return models.Post.findPage({page: 1, filter: 'tags:kitchen-sink'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal(15); paginationResult.meta.pagination.limit.should.equal(15);
paginationResult.meta.pagination.pages.should.equal(1); paginationResult.meta.pagination.pages.should.equal(1);
paginationResult.posts.length.should.equal(2); paginationResult.posts.length.should.equal(2);
return PostModel.findPage({page: 1, filter: 'tags:injection'}); return models.Post.findPage({page: 1, filter: 'tags:injection'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(1); paginationResult.meta.pagination.page.should.equal(1);
paginationResult.meta.pagination.limit.should.equal(15); paginationResult.meta.pagination.limit.should.equal(15);
paginationResult.meta.pagination.pages.should.equal(2); paginationResult.meta.pagination.pages.should.equal(2);
paginationResult.posts.length.should.equal(15); paginationResult.posts.length.should.equal(15);
return PostModel.findPage({page: 2, filter: 'tags:injection'}); return models.Post.findPage({page: 2, filter: 'tags:injection'});
}).then(function (paginationResult) { }).then(function (paginationResult) {
paginationResult.meta.pagination.page.should.equal(2); paginationResult.meta.pagination.page.should.equal(2);
paginationResult.meta.pagination.limit.should.equal(15); paginationResult.meta.pagination.limit.should.equal(15);
@ -331,7 +325,7 @@ describe('Post Model', function () {
}); });
it('can NOT findPage for a page that overflows the datatype', function (done) { it('can NOT findPage for a page that overflows the datatype', function (done) {
PostModel.findPage({page: 5700000000055345439587894375457849375284932759842375894372589243758947325894375894275894275894725897432859724309}) models.Post.findPage({page: 5700000000055345439587894375457849375284932759842375894372589243758947325894375894275894275894725897432859724309})
.then(function (paginationResult) { .then(function (paginationResult) {
should.exist(paginationResult.meta); should.exist(paginationResult.meta);
@ -354,13 +348,13 @@ describe('Post Model', function () {
it('can findOne', function (done) { it('can findOne', function (done) {
var firstPost; var firstPost;
PostModel.findPage().then(function (results) { models.Post.findPage().then(function (results) {
should.exist(results); should.exist(results);
should.exist(results.posts); should.exist(results.posts);
results.posts.length.should.be.above(0); results.posts.length.should.be.above(0);
firstPost = results.posts[0]; firstPost = results.posts[0];
return PostModel.findOne({slug: firstPost.slug}); return models.Post.findOne({slug: firstPost.slug});
}).then(function (found) { }).then(function (found) {
should.exist(found); should.exist(found);
found.attributes.title.should.equal(firstPost.title); found.attributes.title.should.equal(firstPost.title);
@ -372,7 +366,7 @@ describe('Post Model', function () {
it('can findOne, returning all related data', function (done) { it('can findOne, returning all related data', function (done) {
var firstPost; var firstPost;
PostModel.findOne({}, {withRelated: ['author', 'fields', 'tags', 'created_by', 'updated_by', 'published_by']}) models.Post.findOne({}, {withRelated: ['author', 'fields', 'tags', 'created_by', 'updated_by', 'published_by']})
.then(function (result) { .then(function (result) {
should.exist(result); should.exist(result);
firstPost = result.toJSON(); firstPost = result.toJSON();
@ -384,7 +378,7 @@ describe('Post Model', function () {
}); });
it('can findOne, returning a slug only permalink', function (done) { it('can findOne, returning a slug only permalink', function (done) {
PostModel.findOne({id: testUtils.DataGenerator.Content.posts[0].id}) models.Post.findOne({id: testUtils.DataGenerator.Content.posts[0].id})
.then(function (result) { .then(function (result) {
should.exist(result); should.exist(result);
var firstPost = result.toJSON(); var firstPost = result.toJSON();
@ -403,7 +397,7 @@ describe('Post Model', function () {
}[key]; }[key];
}); });
PostModel.findOne({id: testUtils.DataGenerator.Content.posts[0].id}) models.Post.findOne({id: testUtils.DataGenerator.Content.posts[0].id})
.then(function (result) { .then(function (result) {
should.exist(result); should.exist(result);
var firstPost = result.toJSON(); var firstPost = result.toJSON();
@ -433,14 +427,14 @@ describe('Post Model', function () {
it('can change title', function (done) { it('can change title', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel.findOne({id: postId}).then(function (results) { models.Post.findOne({id: postId}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
post.title.should.not.equal('new title'); post.title.should.not.equal('new title');
return PostModel.edit({title: 'new title'}, _.extend({}, context, {id: postId})); return models.Post.edit({title: 'new title'}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.title.should.equal('new title'); edited.attributes.title.should.equal('new title');
@ -456,13 +450,13 @@ describe('Post Model', function () {
it('[failure] custom excerpt soft limit reached', function (done) { it('[failure] custom excerpt soft limit reached', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel.findOne({id: postId}).then(function (results) { models.Post.findOne({id: postId}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
return PostModel.edit({ return models.Post.edit({
custom_excerpt: new Array(302).join('a') custom_excerpt: new Array(302).join('a')
}, _.extend({}, context, {id: postId})); }, _.extend({}, context, {id: postId}));
}).then(function () { }).then(function () {
@ -476,13 +470,13 @@ describe('Post Model', function () {
it('[success] custom excerpt soft limit respected', function (done) { it('[success] custom excerpt soft limit respected', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel.findOne({id: postId}).then(function (results) { models.Post.findOne({id: postId}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
return PostModel.edit({ return models.Post.edit({
custom_excerpt: new Array(300).join('a') custom_excerpt: new Array(300).join('a')
}, _.extend({}, context, {id: postId})); }, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
@ -494,11 +488,11 @@ describe('Post Model', function () {
it('can change title to number', function (done) { it('can change title to number', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel.findOne({id: postId}).then(function (results) { models.Post.findOne({id: postId}).then(function (results) {
should.exist(results); should.exist(results);
var post = results.toJSON(); var post = results.toJSON();
post.title.should.not.equal('123'); post.title.should.not.equal('123');
return PostModel.edit({title: 123}, _.extend({}, context, {id: postId})); return models.Post.edit({title: 123}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.title.should.equal('123'); edited.attributes.title.should.equal('123');
@ -509,11 +503,11 @@ describe('Post Model', function () {
it('converts html to plaintext', function (done) { it('converts html to plaintext', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel.findOne({id: postId}).then(function (results) { models.Post.findOne({id: postId}).then(function (results) {
should.exist(results); should.exist(results);
results.attributes.html.should.match(/HTML Ipsum Presents/); results.attributes.html.should.match(/HTML Ipsum Presents/);
should.not.exist(results.attributes.plaintext); should.not.exist(results.attributes.plaintext);
return PostModel.edit({updated_at: results.attributes.updated_at}, _.extend({}, context, {id: postId})); return models.Post.edit({updated_at: results.attributes.updated_at}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
@ -526,14 +520,14 @@ describe('Post Model', function () {
it('can publish draft post', function (done) { it('can publish draft post', function (done) {
var postId = testUtils.DataGenerator.Content.posts[3].id; var postId = testUtils.DataGenerator.Content.posts[3].id;
PostModel.findOne({id: postId, status: 'draft'}).then(function (results) { models.Post.findOne({id: postId, status: 'draft'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
post.status.should.equal('draft'); post.status.should.equal('draft');
return PostModel.edit({status: 'published'}, _.extend({}, context, {id: postId})); return models.Post.edit({status: 'published'}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('published'); edited.attributes.status.should.equal('published');
@ -549,14 +543,14 @@ describe('Post Model', function () {
it('can unpublish published post', function (done) { it('can unpublish published post', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel.findOne({id: postId}).then(function (results) { models.Post.findOne({id: postId}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
post.status.should.equal('published'); post.status.should.equal('published');
return PostModel.edit({status: 'draft'}, _.extend({}, context, {id: postId})); return models.Post.edit({status: 'draft'}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('draft'); edited.attributes.status.should.equal('draft');
@ -572,7 +566,7 @@ describe('Post Model', function () {
it('draft -> scheduled without published_at update', function (done) { it('draft -> scheduled without published_at update', function (done) {
var post; var post;
PostModel.findOne({status: 'draft'}).then(function (results) { models.Post.findOne({status: 'draft'}).then(function (results) {
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.status.should.equal('draft'); post.status.should.equal('draft');
@ -580,7 +574,7 @@ describe('Post Model', function () {
results.set('published_at', null); results.set('published_at', null);
return results.save(); return results.save();
}).then(function () { }).then(function () {
return PostModel.edit({ return models.Post.edit({
status: 'scheduled' status: 'scheduled'
}, _.extend({}, context, {id: post.id})); }, _.extend({}, context, {id: post.id}));
}).then(function () { }).then(function () {
@ -595,14 +589,14 @@ describe('Post Model', function () {
it('draft -> scheduled: expect update of published_at', function (done) { it('draft -> scheduled: expect update of published_at', function (done) {
var newPublishedAt = moment().add(1, 'day').toDate(); var newPublishedAt = moment().add(1, 'day').toDate();
PostModel.findOne({status: 'draft'}).then(function (results) { models.Post.findOne({status: 'draft'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.status.should.equal('draft'); post.status.should.equal('draft');
return PostModel.edit({ return models.Post.edit({
status: 'scheduled', status: 'scheduled',
published_at: newPublishedAt published_at: newPublishedAt
}, _.extend({}, context, {id: post.id})); }, _.extend({}, context, {id: post.id}));
@ -622,14 +616,14 @@ describe('Post Model', function () {
}); });
it('scheduled -> draft: expect unschedule', function (done) { it('scheduled -> draft: expect unschedule', function (done) {
PostModel.findOne({status: 'scheduled'}).then(function (results) { models.Post.findOne({status: 'scheduled'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.status.should.equal('scheduled'); post.status.should.equal('scheduled');
return PostModel.edit({ return models.Post.edit({
status: 'draft' status: 'draft'
}, _.extend({}, context, {id: post.id})); }, _.extend({}, context, {id: post.id}));
}).then(function (edited) { }).then(function (edited) {
@ -645,14 +639,14 @@ describe('Post Model', function () {
}); });
it('scheduled -> scheduled with updated published_at', function (done) { it('scheduled -> scheduled with updated published_at', function (done) {
PostModel.findOne({status: 'scheduled'}).then(function (results) { models.Post.findOne({status: 'scheduled'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.status.should.equal('scheduled'); post.status.should.equal('scheduled');
return PostModel.edit({ return models.Post.edit({
status: 'scheduled', status: 'scheduled',
published_at: moment().add(20, 'days').toDate() published_at: moment().add(20, 'days').toDate()
}, _.extend({}, context, {id: post.id})); }, _.extend({}, context, {id: post.id}));
@ -669,14 +663,14 @@ describe('Post Model', function () {
}); });
it('scheduled -> scheduled with unchanged published_at', function (done) { it('scheduled -> scheduled with unchanged published_at', function (done) {
PostModel.findOne({status: 'scheduled'}).then(function (results) { models.Post.findOne({status: 'scheduled'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.status.should.equal('scheduled'); post.status.should.equal('scheduled');
return PostModel.edit({ return models.Post.edit({
status: 'scheduled' status: 'scheduled'
}, _.extend({}, context, {id: post.id})); }, _.extend({}, context, {id: post.id}));
}).then(function (edited) { }).then(function (edited) {
@ -693,7 +687,7 @@ describe('Post Model', function () {
it('scheduled -> scheduled with unchanged published_at (within the 2 minutes window)', function (done) { it('scheduled -> scheduled with unchanged published_at (within the 2 minutes window)', function (done) {
var post; var post;
PostModel.findOne({status: 'scheduled'}).then(function (results) { models.Post.findOne({status: 'scheduled'}).then(function (results) {
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.status.should.equal('scheduled'); post.status.should.equal('scheduled');
@ -708,7 +702,7 @@ describe('Post Model', function () {
return Promise.delay(1000 * 3); return Promise.delay(1000 * 3);
}).then(function () { }).then(function () {
return PostModel.edit({ return models.Post.edit({
status: 'scheduled' status: 'scheduled'
}, _.extend({}, context, {id: post.id})); }, _.extend({}, context, {id: post.id}));
}).then(function (edited) { }).then(function (edited) {
@ -725,14 +719,14 @@ describe('Post Model', function () {
it('published -> scheduled and expect update of published_at', function (done) { it('published -> scheduled and expect update of published_at', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel.findOne({id: postId}).then(function (results) { models.Post.findOne({id: postId}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
post.status.should.equal('published'); post.status.should.equal('published');
return PostModel.edit({ return models.Post.edit({
status: 'scheduled', status: 'scheduled',
published_at: moment().add(1, 'day').toDate() published_at: moment().add(1, 'day').toDate()
}, _.extend({}, context, {id: postId})); }, _.extend({}, context, {id: postId}));
@ -748,14 +742,14 @@ describe('Post Model', function () {
it('can convert draft post to page and back', function (done) { it('can convert draft post to page and back', function (done) {
var postId = testUtils.DataGenerator.Content.posts[3].id; var postId = testUtils.DataGenerator.Content.posts[3].id;
PostModel.findOne({id: postId, status: 'draft'}).then(function (results) { models.Post.findOne({id: postId, status: 'draft'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
post.status.should.equal('draft'); post.status.should.equal('draft');
return PostModel.edit({page: 1}, _.extend({}, context, {id: postId})); return models.Post.edit({page: 1}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('draft'); edited.attributes.status.should.equal('draft');
@ -765,7 +759,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['post.deleted']); should.exist(eventsTriggered['post.deleted']);
should.exist(eventsTriggered['page.added']); should.exist(eventsTriggered['page.added']);
return PostModel.edit({page: 0}, _.extend({}, context, {id: postId})); return models.Post.edit({page: 0}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('draft'); edited.attributes.status.should.equal('draft');
@ -782,13 +776,13 @@ describe('Post Model', function () {
}); });
it('can convert draft to schedule AND post to page and back', function (done) { it('can convert draft to schedule AND post to page and back', function (done) {
PostModel.findOne({status: 'draft'}).then(function (results) { models.Post.findOne({status: 'draft'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.status.should.equal('draft'); post.status.should.equal('draft');
return PostModel.edit({ return models.Post.edit({
page: 1, page: 1,
status: 'scheduled', status: 'scheduled',
published_at: moment().add(10, 'days') published_at: moment().add(10, 'days')
@ -803,7 +797,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['page.added']); should.exist(eventsTriggered['page.added']);
should.exist(eventsTriggered['page.scheduled']); should.exist(eventsTriggered['page.scheduled']);
return PostModel.edit({page: 0}, _.extend({}, context, {id: edited.id})); return models.Post.edit({page: 0}, _.extend({}, context, {id: edited.id}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('scheduled'); edited.attributes.status.should.equal('scheduled');
@ -822,14 +816,14 @@ describe('Post Model', function () {
it('can convert published post to page and back', function (done) { it('can convert published post to page and back', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel.findOne({id: postId}).then(function (results) { models.Post.findOne({id: postId}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
post.status.should.equal('published'); post.status.should.equal('published');
return PostModel.edit({page: 1}, _.extend({}, context, {id: postId})); return models.Post.edit({page: 1}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('published'); edited.attributes.status.should.equal('published');
@ -841,7 +835,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['page.added']); should.exist(eventsTriggered['page.added']);
should.exist(eventsTriggered['page.published']); should.exist(eventsTriggered['page.published']);
return PostModel.edit({page: 0}, _.extend({}, context, {id: postId})); return models.Post.edit({page: 0}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('published'); edited.attributes.status.should.equal('published');
@ -860,14 +854,14 @@ describe('Post Model', function () {
it('can change type and status at the same time', function (done) { it('can change type and status at the same time', function (done) {
var postId = testUtils.DataGenerator.Content.posts[3].id; var postId = testUtils.DataGenerator.Content.posts[3].id;
PostModel.findOne({id: postId, status: 'draft'}).then(function (results) { models.Post.findOne({id: postId, status: 'draft'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
post.status.should.equal('draft'); post.status.should.equal('draft');
return PostModel.edit({page: 1, status: 'published'}, _.extend({}, context, {id: postId})); return models.Post.edit({page: 1, status: 'published'}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('published'); edited.attributes.status.should.equal('published');
@ -878,7 +872,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['page.added']); should.exist(eventsTriggered['page.added']);
should.exist(eventsTriggered['page.published']); should.exist(eventsTriggered['page.published']);
return PostModel.edit({page: 0, status: 'draft'}, _.extend({}, context, {id: postId})); return models.Post.edit({page: 0, status: 'draft'}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('draft'); edited.attributes.status.should.equal('draft');
@ -897,7 +891,7 @@ describe('Post Model', function () {
var newPost = testUtils.DataGenerator.forModel.posts[2], var newPost = testUtils.DataGenerator.forModel.posts[2],
postId; postId;
PostModel.add(newPost, context).then(function (results) { models.Post.add(newPost, context).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
@ -908,7 +902,7 @@ describe('Post Model', function () {
should.not.exist(post.published_at); should.not.exist(post.published_at);
// Test changing an unrelated property // Test changing an unrelated property
return PostModel.edit({title: 'Hello World'}, _.extend({}, context, {id: postId})); return models.Post.edit({title: 'Hello World'}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('draft'); edited.attributes.status.should.equal('draft');
@ -916,7 +910,7 @@ describe('Post Model', function () {
should.not.exist(edited.attributes.published_at); should.not.exist(edited.attributes.published_at);
// Test changing status and published_by on its own // Test changing status and published_by on its own
return PostModel.edit({published_by: 4}, _.extend({}, context, {id: postId})); return models.Post.edit({published_by: 4}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('draft'); edited.attributes.status.should.equal('draft');
@ -930,7 +924,7 @@ describe('Post Model', function () {
it('cannot override the published_by setting', function (done) { it('cannot override the published_by setting', function (done) {
var postId = testUtils.DataGenerator.Content.posts[3].id; var postId = testUtils.DataGenerator.Content.posts[3].id;
PostModel.findOne({id: postId, status: 'draft'}).then(function (results) { models.Post.findOne({id: postId, status: 'draft'}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
@ -938,14 +932,14 @@ describe('Post Model', function () {
post.status.should.equal('draft'); post.status.should.equal('draft');
// Test changing status and published_by at the same time // Test changing status and published_by at the same time
return PostModel.edit({status: 'published', published_by: 4}, _.extend({}, context, {id: postId})); return models.Post.edit({status: 'published', published_by: 4}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('published'); edited.attributes.status.should.equal('published');
edited.attributes.published_by.should.equal(context.context.user); edited.attributes.published_by.should.equal(context.context.user);
// Test changing status and published_by on its own // Test changing status and published_by on its own
return PostModel.edit({published_by: 4}, _.extend({}, context, {id: postId})); return models.Post.edit({published_by: 4}, _.extend({}, context, {id: postId}));
}).then(function (edited) { }).then(function (edited) {
should.exist(edited); should.exist(edited);
edited.attributes.status.should.equal('published'); edited.attributes.status.should.equal('published');
@ -958,7 +952,7 @@ describe('Post Model', function () {
it('send empty date', function (done) { it('send empty date', function (done) {
var postId = testUtils.DataGenerator.Content.posts[0].id; var postId = testUtils.DataGenerator.Content.posts[0].id;
PostModel models.Post
.findOne({ .findOne({
id: postId id: postId
}) })
@ -968,7 +962,7 @@ describe('Post Model', function () {
post = results.toJSON(); post = results.toJSON();
post.id.should.equal(postId); post.id.should.equal(postId);
return PostModel.edit({created_at: ''}, _.extend({}, context, {id: postId})); return models.Post.edit({created_at: ''}, _.extend({}, context, {id: postId}));
}) })
.then(function () { .then(function () {
done(new Error('This test should fail.')); done(new Error('This test should fail.'));
@ -998,8 +992,8 @@ describe('Post Model', function () {
newPost = testUtils.DataGenerator.forModel.posts[2], newPost = testUtils.DataGenerator.forModel.posts[2],
newPostDB = testUtils.DataGenerator.Content.posts[2]; newPostDB = testUtils.DataGenerator.Content.posts[2];
PostModel.add(newPost, _.merge({withRelated: ['author']}, context)).then(function (createdPost) { models.Post.add(newPost, _.merge({withRelated: ['author']}, context)).then(function (createdPost) {
return PostModel.findOne({id: createdPost.id, status: 'all'}); return models.Post.findOne({id: createdPost.id, status: 'all'});
}).then(function (createdPost) { }).then(function (createdPost) {
should.exist(createdPost); should.exist(createdPost);
createdPost.has('uuid').should.equal(true); createdPost.has('uuid').should.equal(true);
@ -1058,7 +1052,7 @@ describe('Post Model', function () {
newPost.title = 123; newPost.title = 123;
PostModel.add(newPost, context).then(function (createdPost) { models.Post.add(newPost, context).then(function (createdPost) {
should.exist(createdPost); should.exist(createdPost);
done(); done();
}).catch(done); }).catch(done);
@ -1067,7 +1061,7 @@ describe('Post Model', function () {
it('can add, with previous published_at date', function (done) { it('can add, with previous published_at date', function (done) {
var previousPublishedAtDate = new Date(2013, 8, 21, 12); var previousPublishedAtDate = new Date(2013, 8, 21, 12);
PostModel.add({ models.Post.add({
status: 'published', status: 'published',
published_at: previousPublishedAtDate, published_at: previousPublishedAtDate,
title: 'published_at test', title: 'published_at test',
@ -1085,7 +1079,7 @@ describe('Post Model', function () {
}); });
it('add draft post without published_at -> we expect no auto insert of published_at', function (done) { it('add draft post without published_at -> we expect no auto insert of published_at', function (done) {
PostModel.add({ models.Post.add({
status: 'draft', status: 'draft',
title: 'draft 1', title: 'draft 1',
mobiledoc: markdownToMobiledoc('This is some content') mobiledoc: markdownToMobiledoc('This is some content')
@ -1101,7 +1095,7 @@ describe('Post Model', function () {
}); });
it('add multiple authors', function (done) { it('add multiple authors', function (done) {
PostModel.add({ models.Post.add({
status: 'draft', status: 'draft',
title: 'draft 1', title: 'draft 1',
mobiledoc: markdownToMobiledoc('This is some content'), mobiledoc: markdownToMobiledoc('This is some content'),
@ -1119,7 +1113,7 @@ describe('Post Model', function () {
}); });
it('add draft post with published_at -> we expect published_at to exist', function (done) { it('add draft post with published_at -> we expect published_at to exist', function (done) {
PostModel.add({ models.Post.add({
status: 'draft', status: 'draft',
published_at: moment().toDate(), published_at: moment().toDate(),
title: 'draft 1', title: 'draft 1',
@ -1136,7 +1130,7 @@ describe('Post Model', function () {
}); });
it('add scheduled post without published_at -> we expect an error', function (done) { it('add scheduled post without published_at -> we expect an error', function (done) {
PostModel.add({ models.Post.add({
status: 'scheduled', status: 'scheduled',
title: 'scheduled 1', title: 'scheduled 1',
mobiledoc: markdownToMobiledoc('This is some content') mobiledoc: markdownToMobiledoc('This is some content')
@ -1149,7 +1143,7 @@ describe('Post Model', function () {
}); });
it('add scheduled post with published_at not in future-> we expect an error', function (done) { it('add scheduled post with published_at not in future-> we expect an error', function (done) {
PostModel.add({ models.Post.add({
status: 'scheduled', status: 'scheduled',
published_at: moment().subtract(1, 'minute'), published_at: moment().subtract(1, 'minute'),
title: 'scheduled 1', title: 'scheduled 1',
@ -1163,7 +1157,7 @@ describe('Post Model', function () {
}); });
it('add scheduled post with published_at 1 minutes in future -> we expect an error', function (done) { it('add scheduled post with published_at 1 minutes in future -> we expect an error', function (done) {
PostModel.add({ models.Post.add({
status: 'scheduled', status: 'scheduled',
published_at: moment().add(1, 'minute'), published_at: moment().add(1, 'minute'),
title: 'scheduled 1', title: 'scheduled 1',
@ -1176,7 +1170,7 @@ describe('Post Model', function () {
}); });
it('add scheduled post with published_at 10 minutes in future -> we expect success', function (done) { it('add scheduled post with published_at 10 minutes in future -> we expect success', function (done) {
PostModel.add({ models.Post.add({
status: 'scheduled', status: 'scheduled',
published_at: moment().add(10, 'minute'), published_at: moment().add(10, 'minute'),
title: 'scheduled 1', title: 'scheduled 1',
@ -1193,7 +1187,7 @@ describe('Post Model', function () {
}); });
it('add scheduled page with published_at 10 minutes in future -> we expect success', function (done) { it('add scheduled page with published_at 10 minutes in future -> we expect success', function (done) {
PostModel.add({ models.Post.add({
status: 'scheduled', status: 'scheduled',
page: 1, page: 1,
published_at: moment().add(10, 'minute'), published_at: moment().add(10, 'minute'),
@ -1211,7 +1205,7 @@ describe('Post Model', function () {
}); });
it('can add default title, if it\'s missing', function (done) { it('can add default title, if it\'s missing', function (done) {
PostModel.add({ models.Post.add({
mobiledoc: markdownToMobiledoc('Content') mobiledoc: markdownToMobiledoc('Content')
}, context).then(function (newPost) { }, context).then(function (newPost) {
should.exist(newPost); should.exist(newPost);
@ -1229,8 +1223,8 @@ describe('Post Model', function () {
mobiledoc: markdownToMobiledoc('Test content') mobiledoc: markdownToMobiledoc('Test content')
}; };
PostModel.add(newPost, context).then(function (createdPost) { models.Post.add(newPost, context).then(function (createdPost) {
return PostModel.findOne({id: createdPost.id, status: 'all'}); return models.Post.findOne({id: createdPost.id, status: 'all'});
}).then(function (createdPost) { }).then(function (createdPost) {
should.exist(createdPost); should.exist(createdPost);
createdPost.get('title').should.equal(untrimmedCreateTitle.trim()); createdPost.get('title').should.equal(untrimmedCreateTitle.trim());
@ -1253,7 +1247,7 @@ describe('Post Model', function () {
// Create 12 posts with the same title // Create 12 posts with the same title
sequence(_.times(12, function (i) { sequence(_.times(12, function (i) {
return function () { return function () {
return PostModel.add({ return models.Post.add({
title: 'Test Title', title: 'Test Title',
mobiledoc: markdownToMobiledoc('Test Content ' + (i + 1)) mobiledoc: markdownToMobiledoc('Test Content ' + (i + 1))
}, context); }, context);
@ -1290,7 +1284,7 @@ describe('Post Model', function () {
mobiledoc: markdownToMobiledoc('Test Content 1') mobiledoc: markdownToMobiledoc('Test Content 1')
}; };
PostModel.add(newPost, context).then(function (createdPost) { models.Post.add(newPost, context).then(function (createdPost) {
createdPost.get('slug').should.equal('apprehensive-titles-have-too-many-spaces-and-m-dashes-and-also-n-dashes'); createdPost.get('slug').should.equal('apprehensive-titles-have-too-many-spaces-and-m-dashes-and-also-n-dashes');
Object.keys(eventsTriggered).length.should.eql(1); Object.keys(eventsTriggered).length.should.eql(1);
@ -1306,7 +1300,7 @@ describe('Post Model', function () {
mobiledoc: markdownToMobiledoc('Test Content 1') mobiledoc: markdownToMobiledoc('Test Content 1')
}; };
PostModel.add(newPost, context).then(function (createdPost) { models.Post.add(newPost, context).then(function (createdPost) {
createdPost.get('slug').should.not.equal('rss'); createdPost.get('slug').should.not.equal('rss');
Object.keys(eventsTriggered).length.should.eql(1); Object.keys(eventsTriggered).length.should.eql(1);
@ -1322,7 +1316,7 @@ describe('Post Model', function () {
mobiledoc: markdownToMobiledoc('Test Content 1') mobiledoc: markdownToMobiledoc('Test Content 1')
}; };
PostModel.add(newPost, context).then(function (createdPost) { models.Post.add(newPost, context).then(function (createdPost) {
createdPost.get('slug').should.equal('bhute-dhddkii-bhrvnnaaraa-aahet'); createdPost.get('slug').should.equal('bhute-dhddkii-bhrvnnaaraa-aahet');
done(); done();
}).catch(done); }).catch(done);
@ -1339,7 +1333,7 @@ describe('Post Model', function () {
}; };
// Create the first post // Create the first post
PostModel.add(firstPost, context) models.Post.add(firstPost, context)
.then(function (createdFirstPost) { .then(function (createdFirstPost) {
// Store the slug for later // Store the slug for later
firstPost.slug = createdFirstPost.get('slug'); firstPost.slug = createdFirstPost.get('slug');
@ -1348,7 +1342,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['post.added']); should.exist(eventsTriggered['post.added']);
// Create the second post // Create the second post
return PostModel.add(secondPost, context); return models.Post.add(secondPost, context);
}).then(function (createdSecondPost) { }).then(function (createdSecondPost) {
// Store the slug for comparison later // Store the slug for comparison later
secondPost.slug = createdSecondPost.get('slug'); secondPost.slug = createdSecondPost.get('slug');
@ -1369,7 +1363,7 @@ describe('Post Model', function () {
Object.keys(eventsTriggered).length.should.eql(2); Object.keys(eventsTriggered).length.should.eql(2);
should.exist(eventsTriggered['post.edited']); should.exist(eventsTriggered['post.edited']);
return PostModel.findOne({ return models.Post.findOne({
id: updatedSecondPost.id, id: updatedSecondPost.id,
status: 'all' status: 'all'
}); });
@ -1401,7 +1395,7 @@ describe('Post Model', function () {
var firstItemData = {id: testUtils.DataGenerator.Content.posts[0].id}; var firstItemData = {id: testUtils.DataGenerator.Content.posts[0].id};
// Test that we have the post we expect, with exactly one tag // Test that we have the post we expect, with exactly one tag
PostModel.findOne(firstItemData, {withRelated: ['tags']}).then(function (results) { models.Post.findOne(firstItemData, {withRelated: ['tags']}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
@ -1422,7 +1416,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['post.deleted']); should.exist(eventsTriggered['post.deleted']);
// Double check we can't find the post again // Double check we can't find the post again
return PostModel.findOne(firstItemData); return models.Post.findOne(firstItemData);
}).then(function (newResults) { }).then(function (newResults) {
should.equal(newResults, null); should.equal(newResults, null);
@ -1440,7 +1434,7 @@ describe('Post Model', function () {
var firstItemData = {id: testUtils.DataGenerator.Content.posts[3].id, status: 'draft'}; var firstItemData = {id: testUtils.DataGenerator.Content.posts[3].id, status: 'draft'};
// Test that we have the post we expect, with exactly one tag // Test that we have the post we expect, with exactly one tag
PostModel.findOne(firstItemData, {withRelated: ['tags']}).then(function (results) { models.Post.findOne(firstItemData, {withRelated: ['tags']}).then(function (results) {
var post; var post;
should.exist(results); should.exist(results);
post = results.toJSON(); post = results.toJSON();
@ -1459,7 +1453,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['post.deleted']); should.exist(eventsTriggered['post.deleted']);
// Double check we can't find the post again // Double check we can't find the post again
return PostModel.findOne(firstItemData); return models.Post.findOne(firstItemData);
}).then(function (newResults) { }).then(function (newResults) {
should.equal(newResults, null); should.equal(newResults, null);
@ -1477,7 +1471,7 @@ describe('Post Model', function () {
var firstItemData = {id: testUtils.DataGenerator.Content.posts[5].id}; var firstItemData = {id: testUtils.DataGenerator.Content.posts[5].id};
// Test that we have the post we expect, with exactly one tag // Test that we have the post we expect, with exactly one tag
PostModel.findOne(firstItemData, {withRelated: ['tags']}).then(function (results) { models.Post.findOne(firstItemData, {withRelated: ['tags']}).then(function (results) {
var page; var page;
should.exist(results); should.exist(results);
page = results.toJSON(); page = results.toJSON();
@ -1497,7 +1491,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['page.deleted']); should.exist(eventsTriggered['page.deleted']);
// Double check we can't find the post again // Double check we can't find the post again
return PostModel.findOne(firstItemData); return models.Post.findOne(firstItemData);
}).then(function (newResults) { }).then(function (newResults) {
should.equal(newResults, null); should.equal(newResults, null);
@ -1515,7 +1509,7 @@ describe('Post Model', function () {
var firstItemData = {id: testUtils.DataGenerator.Content.posts[6].id, status: 'draft'}; var firstItemData = {id: testUtils.DataGenerator.Content.posts[6].id, status: 'draft'};
// Test that we have the post we expect, with exactly one tag // Test that we have the post we expect, with exactly one tag
PostModel.findOne(firstItemData, {withRelated: ['tags']}).then(function (results) { models.Post.findOne(firstItemData, {withRelated: ['tags']}).then(function (results) {
var page; var page;
should.exist(results); should.exist(results);
page = results.toJSON(); page = results.toJSON();
@ -1532,7 +1526,7 @@ describe('Post Model', function () {
should.exist(eventsTriggered['page.deleted']); should.exist(eventsTriggered['page.deleted']);
// Double check we can't find the post again // Double check we can't find the post again
return PostModel.findOne(firstItemData); return models.Post.findOne(firstItemData);
}).then(function (newResults) { }).then(function (newResults) {
should.equal(newResults, null); should.equal(newResults, null);
@ -1550,12 +1544,12 @@ describe('Post Model', function () {
it('update post title, but updated_at is out of sync', function (done) { it('update post title, but updated_at is out of sync', function (done) {
var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id}; var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id};
PostModel.findOne({id: postToUpdate.id, status: 'all'}) models.Post.findOne({id: postToUpdate.id, status: 'all'})
.then(function () { .then(function () {
return Promise.delay(1000); return Promise.delay(1000);
}) })
.then(function () { .then(function () {
return PostModel.edit({ return models.Post.edit({
title: 'New Post Title', title: 'New Post Title',
updated_at: moment().subtract(1, 'day').format() updated_at: moment().subtract(1, 'day').format()
}, _.extend({}, context, {id: postToUpdate.id})); }, _.extend({}, context, {id: postToUpdate.id}));
@ -1572,12 +1566,12 @@ describe('Post Model', function () {
it('update post tags and updated_at is out of sync', function (done) { it('update post tags and updated_at is out of sync', function (done) {
var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id}; var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id};
PostModel.findOne({id: postToUpdate.id, status: 'all'}) models.Post.findOne({id: postToUpdate.id, status: 'all'})
.then(function () { .then(function () {
return Promise.delay(1000); return Promise.delay(1000);
}) })
.then(function () { .then(function () {
return PostModel.edit({ return models.Post.edit({
tags: [{name: 'new-tag-1'}], tags: [{name: 'new-tag-1'}],
updated_at: moment().subtract(1, 'day').format() updated_at: moment().subtract(1, 'day').format()
}, _.extend({}, context, {id: postToUpdate.id})); }, _.extend({}, context, {id: postToUpdate.id}));
@ -1594,12 +1588,12 @@ describe('Post Model', function () {
it('update post authors and updated_at is out of sync', function (done) { it('update post authors and updated_at is out of sync', function (done) {
var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id}; var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id};
PostModel.findOne({id: postToUpdate.id, status: 'all'}) models.Post.findOne({id: postToUpdate.id, status: 'all'})
.then(function () { .then(function () {
return Promise.delay(1000); return Promise.delay(1000);
}) })
.then(function () { .then(function () {
return PostModel.edit({ return models.Post.edit({
authors: [testUtils.DataGenerator.Content.users[3]], authors: [testUtils.DataGenerator.Content.users[3]],
updated_at: moment().subtract(1, 'day').format() updated_at: moment().subtract(1, 'day').format()
}, _.extend({}, context, {id: postToUpdate.id})); }, _.extend({}, context, {id: postToUpdate.id}));
@ -1616,12 +1610,12 @@ describe('Post Model', function () {
it('update post tags and updated_at is NOT out of sync', function (done) { it('update post tags and updated_at is NOT out of sync', function (done) {
var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id}; var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id};
PostModel.findOne({id: postToUpdate.id, status: 'all'}) models.Post.findOne({id: postToUpdate.id, status: 'all'})
.then(function () { .then(function () {
return Promise.delay(1000); return Promise.delay(1000);
}) })
.then(function () { .then(function () {
return PostModel.edit({ return models.Post.edit({
tags: [{name: 'new-tag-1'}] tags: [{name: 'new-tag-1'}]
}, _.extend({}, context, {id: postToUpdate.id})); }, _.extend({}, context, {id: postToUpdate.id}));
}) })
@ -1634,12 +1628,12 @@ describe('Post Model', function () {
it('update post with no changes, but updated_at is out of sync', function (done) { it('update post with no changes, but updated_at is out of sync', function (done) {
var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id}; var postToUpdate = {id: testUtils.DataGenerator.Content.posts[1].id};
PostModel.findOne({id: postToUpdate.id, status: 'all'}) models.Post.findOne({id: postToUpdate.id, status: 'all'})
.then(function () { .then(function () {
return Promise.delay(1000); return Promise.delay(1000);
}) })
.then(function () { .then(function () {
return PostModel.edit({ return models.Post.edit({
updated_at: moment().subtract(1, 'day').format() updated_at: moment().subtract(1, 'day').format()
}, _.extend({}, context, {id: postToUpdate.id})); }, _.extend({}, context, {id: postToUpdate.id}));
}) })
@ -1655,12 +1649,12 @@ describe('Post Model', function () {
title: testUtils.DataGenerator.forModel.posts[1].title title: testUtils.DataGenerator.forModel.posts[1].title
}; };
PostModel.findOne({id: postToUpdate.id, status: 'all'}) models.Post.findOne({id: postToUpdate.id, status: 'all'})
.then(function () { .then(function () {
return Promise.delay(1000); return Promise.delay(1000);
}) })
.then(function () { .then(function () {
return PostModel.edit({ return models.Post.edit({
title: postToUpdate.title, title: postToUpdate.title,
updated_at: moment().subtract(1, 'day').format() updated_at: moment().subtract(1, 'day').format()
}, _.extend({}, context, {id: postToUpdate.id})); }, _.extend({}, context, {id: postToUpdate.id}));
@ -1682,14 +1676,14 @@ describe('Post Model', function () {
// We're going to delete all posts by user 1 // We're going to delete all posts by user 1
var authorData = {id: testUtils.DataGenerator.Content.users[0].id}; var authorData = {id: testUtils.DataGenerator.Content.users[0].id};
PostModel.findAll({context: {internal: true}}).then(function (found) { models.Post.findAll({context: {internal: true}}).then(function (found) {
// There are 50 posts to begin with // There are 50 posts to begin with
found.length.should.equal(50); found.length.should.equal(50);
return PostModel.destroyByAuthor(authorData); return models.Post.destroyByAuthor(authorData);
}).then(function (results) { }).then(function (results) {
// User 1 has 10 posts in the database // User 1 has 10 posts in the database
results.length.should.equal(10); results.length.should.equal(10);
return PostModel.findAll({context: {internal: true}}); return models.Post.findAll({context: {internal: true}});
}).then(function (found) { }).then(function (found) {
// Only 40 should remain // Only 40 should remain
found.length.should.equal(40); found.length.should.equal(40);
@ -1727,10 +1721,10 @@ describe('Post Model', function () {
post.status = 'published'; post.status = 'published';
return Promise.props({ return Promise.props({
post: PostModel.add(post, _.extend({}, context, {withRelated: ['tags']})), post: models.Post.add(post, _.extend({}, context, {withRelated: ['tags']})),
tag1: TagModel.add(extraTags[0], context), tag1: models.Tag.add(extraTags[0], context),
tag2: TagModel.add(extraTags[1], context), tag2: models.Tag.add(extraTags[1], context),
tag3: TagModel.add(extraTags[2], context) tag3: models.Tag.add(extraTags[2], context)
}).then(function (result) { }).then(function (result) {
postJSON = result.post.toJSON({withRelated: ['tags']}); postJSON = result.post.toJSON({withRelated: ['tags']});
tagJSON.push(result.tag1.toJSON()); tagJSON.push(result.tag1.toJSON());
@ -1772,7 +1766,7 @@ describe('Post Model', function () {
newJSON.tags = [{id: postJSON.tags[0].id, slug: 'eins'}]; newJSON.tags = [{id: postJSON.tags[0].id, slug: 'eins'}];
// Edit the post // Edit the post
return PostModel.edit(newJSON, editOptions).then(function (updatedPost) { return models.Post.edit(newJSON, editOptions).then(function (updatedPost) {
updatedPost = updatedPost.toJSON({withRelated: ['tags']}); updatedPost = updatedPost.toJSON({withRelated: ['tags']});
updatedPost.tags.should.have.lengthOf(1); updatedPost.tags.should.have.lengthOf(1);
@ -1797,7 +1791,7 @@ describe('Post Model', function () {
// Edit the post // Edit the post
return Promise.delay(1000) return Promise.delay(1000)
.then(function () { .then(function () {
return PostModel.edit(newJSON, editOptions); return models.Post.edit(newJSON, editOptions);
}) })
.then(function (updatedPost) { .then(function (updatedPost) {
updatedPost = updatedPost.toJSON({withRelated: ['tags']}); updatedPost = updatedPost.toJSON({withRelated: ['tags']});
@ -1832,7 +1826,7 @@ describe('Post Model', function () {
newJSON.tags = [{name: 'tag4'}].concat([newJSON.tags[1]]).concat([newJSON.tags[0]]); newJSON.tags = [{name: 'tag4'}].concat([newJSON.tags[1]]).concat([newJSON.tags[0]]);
// Edit the post // Edit the post
return PostModel.edit(newJSON, editOptions).then(function (updatedPost) { return models.Post.edit(newJSON, editOptions).then(function (updatedPost) {
updatedPost = updatedPost.toJSON({withRelated: ['tags']}); updatedPost = updatedPost.toJSON({withRelated: ['tags']});
updatedPost.tags.should.have.lengthOf(3); updatedPost.tags.should.have.lengthOf(3);
@ -1862,7 +1856,7 @@ describe('Post Model', function () {
newJSON.tags.push({name: 'C#'}); newJSON.tags.push({name: 'C#'});
// Edit the post // Edit the post
return PostModel.edit(newJSON, editOptions).then(function (updatedPost) { return models.Post.edit(newJSON, editOptions).then(function (updatedPost) {
updatedPost = updatedPost.toJSON({withRelated: ['tags']}); updatedPost = updatedPost.toJSON({withRelated: ['tags']});
updatedPost.tags.should.have.lengthOf(3); updatedPost.tags.should.have.lengthOf(3);
@ -1882,7 +1876,7 @@ describe('Post Model', function () {
newJSON.tags.push({name: 'tEst'}); newJSON.tags.push({name: 'tEst'});
// Edit the post // Edit the post
return PostModel.edit(newJSON, editOptions).then(function (updatedPost) { return models.Post.edit(newJSON, editOptions).then(function (updatedPost) {
updatedPost = updatedPost.toJSON({withRelated: ['tags']}); updatedPost = updatedPost.toJSON({withRelated: ['tags']});
updatedPost.tags.should.have.lengthOf(1); updatedPost.tags.should.have.lengthOf(1);
@ -1892,7 +1886,7 @@ describe('Post Model', function () {
// disabling sanitization until we can implement a better version // disabling sanitization until we can implement a better version
// it('should sanitize the title', function (done) { // it('should sanitize the title', function (done) {
// new PostModel().fetch().then(function (model) { // new models.Post().fetch().then(function (model) {
// return model.set({'title': "</title></head><body><script>alert('blogtitle');</script>"}).save(); // return model.set({'title': "</title></head><body><script>alert('blogtitle');</script>"}).save();
// }).then(function (saved) { // }).then(function (saved) {
// saved.get('title').should.eql("&lt;/title&gt;&lt;/head>&lt;body&gt;[removed]alert&#40;'blogtitle'&#41;;[removed]"); // saved.get('title').should.eql("&lt;/title&gt;&lt;/head>&lt;body&gt;[removed]alert&#40;'blogtitle'&#41;;[removed]");