sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
189 lines (157 loc) • 5.88 kB
JavaScript
var assert = require('assert');
var expect = require('chai').expect;
var when = require('when'); // https://github.com/cujojs/when
var api = require('../../lib/api');
var async = require("async");
//mock server
var server = {
get: function() {},
post: function() {}
};
//setup the CMS
var cms = require('sheercms');
var _item = null;
var _items = [];
describe("Content", function() {
describe("init", function() {
it("should initialize the cms", function(done) {
//initialize the CMS
cms.init(server, function (err) {
if (err) {
done(err);
} else {
done();
}
});
});
});
describe(".createContent()", function() {
it("should create a content item", function(done){
console.log('\nTesting createContent.');
api.content.createContent('Test', 'Article').then(function(result) {
assert(result.contentId, 'Content ID is null');
_item = result;
done();
}).catch(function(e) {
console.error(e);
done(e);
});
});
});
describe(".getContent()", function() {
it("should get a content item", function(done){
console.log('\nTesting getContent.');
api.content.getContent({ collection: 'drafts', contentId: _item.contentId }).then(function(result) {
assert(result, 'Content record is null.');
expect(result.contentId).to.equal(_item.contentId);
console.log("Found content with id: " + _item.contentId);
done();
}).catch(function(e) {
console.error(e);
done(e);
});
});
});
describe(".deleteContent() by contentId", function() {
it("should delete a content item by contentId", function(done){
console.log('\nTesting deleteContent.');
api.content.deleteContent({ contentId: _item.contentId }).then(function(result) {
assert(result == true, 'The content was not deleted.');
_item = null;
done();
}).catch(function(e) {
console.error(e);
done(e);
});
});
});
describe(".createContent()", function() {
it("should create a content item", function(done){
console.log('\nTesting createContent.');
api.content.createContent('Test2', 'Article').then(function(result) {
assert(result.contentId, 'Content ID is null');
_item = result;
done();
}).catch(function(e) {
console.error(e);
done(e);
});
});
});
describe(".deleteContent() by _id", function() {
it("should delete a content item by objectId", function(done){
console.log('\nTesting deleteContent.');
api.content.deleteContent({ collection: 'drafts', objectId: _item._id }).then(function(result) {
assert(result == true, 'The content was not deleted.');
_item = null;
done();
}).catch(function(e) {
console.error(e);
done(e);
});
});
});
describe(".createContent() x 3", function() {
it("should create 3 content items", function(done){
console.log('\nTesting createContent x 3.');
var arr = ["Test1", "Test2", "Test3"];
//create each item
async.each(arr, function (key, done2) {
api.content.createContent(key, 'Article').then(function(result) {
_items.push(result);
done2();
}).catch(function(e) {
console.error(e);
done2(e);
});
}, function (err) {
if (err) {
done(err);
}
else {
done();
}
});
});
});
describe(".getContentList()", function() {
it("should get up to 10 content items", function(done){
console.log('\nTesting getContentList.');
api.content.getContentList({ type: null, pageNumber: 1, pageSize: 10 }).then(function(result) {
assert(result, 'The result is null.');
assert(result.total > 2, 'There are less than 3 content items.');
assert(result.items, 'The result items array is null.');
for(var i = 0; i < result.items.length; i++) {
var item = result.items[i];
console.log("Found item: " + item.name);
}
done();
}).catch(function(e) {
console.error(e);
done(e);
});
});
});
describe(".deleteContent() by contentId x 3", function() {
it("should delete the 3 created items", function(done){
console.log('\nCleaning up the 3 created items.');
async.each(_items, function (key, done2) {
api.content.deleteContent({ contentId: key.contentId, forever: true }).then(function(result) {
done2();
}).catch(function(e) {
console.error(e);
done2(e);
});
}, function (err) {
if (err) {
done(err);
}
else {
_items = [];
console.log("Items deleted successfully.");
done();
}
});
});
});
});