0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/test/unit/data/xml/sitemap/manager_spec.js
Hannah Wolfe 22e13acd65 Updated var declarations to const/let and no lists
- All var declarations are now const or let as per ES6
- All comma-separated lists / chained declarations are now one declaration per line
- This is for clarity/readability but also made running the var-to-const/let switch smoother
- ESLint rules updated to match

How this was done:

- npm install -g jscodeshift
- git clone https://github.com/cpojer/js-codemod.git
- git clone git@github.com:TryGhost/Ghost.git shallow-ghost
- cd shallow-ghost
- jscodeshift -t ../js-codemod/transforms/unchain-variables.js . -v=2
- jscodeshift -t ../js-codemod/transforms/no-vars.js . -v=2
- yarn
- yarn test
- yarn lint / fix various lint errors (almost all indent) by opening files and saving in vscode
- grunt test-regression
- sorted!
2020-04-29 16:51:13 +01:00

124 lines
4.3 KiB
JavaScript

const should = require('should');
const sinon = require('sinon');
// Stuff we are testing
const common = require('../../../../../core/server/lib/common');
const SiteMapManager = require('../../../../../core/frontend/services/sitemap/manager');
const PostGenerator = require('../../../../../core/frontend/services/sitemap/post-generator');
const PageGenerator = require('../../../../../core/frontend/services/sitemap/page-generator');
const TagGenerator = require('../../../../../core/frontend/services/sitemap/tag-generator');
const UserGenerator = require('../../../../../core/frontend/services/sitemap/user-generator');
const IndexGenerator = require('../../../../../core/frontend/services/sitemap/index-generator');
describe('Unit: sitemap/manager', function () {
let eventsToRemember;
const makeStubManager = function () {
let posts;
let pages;
let tags;
let authors;
let index;
index = new IndexGenerator();
posts = new PostGenerator();
pages = new PageGenerator();
tags = new TagGenerator();
authors = new UserGenerator();
return new SiteMapManager({posts: posts, pages: pages, tags: tags, authors: authors});
};
beforeEach(function () {
eventsToRemember = {};
sinon.stub(common.events, 'on').callsFake(function (eventName, callback) {
eventsToRemember[eventName] = callback;
});
sinon.stub(PostGenerator.prototype, 'getXml');
sinon.stub(PostGenerator.prototype, 'addUrl');
sinon.stub(PostGenerator.prototype, 'removeUrl');
sinon.stub(IndexGenerator.prototype, 'getXml');
});
afterEach(function () {
sinon.restore();
});
describe('SiteMapManager', function () {
let manager;
let fake;
beforeEach(function () {
manager = makeStubManager();
fake = sinon.stub();
});
it('create SiteMapManager with defaults', function () {
const siteMapManager = new SiteMapManager();
should.exist(siteMapManager.posts);
should.exist(siteMapManager.pages);
should.exist(siteMapManager.users);
should.exist(siteMapManager.tags);
});
it('can create a SiteMapManager instance', function () {
should.exist(manager);
Object.keys(eventsToRemember).length.should.eql(4);
should.exist(eventsToRemember['url.added']);
should.exist(eventsToRemember['url.removed']);
should.exist(eventsToRemember['router.created']);
should.exist(eventsToRemember['routers.reset']);
});
describe('trigger url events', function () {
it('url.added', function () {
eventsToRemember['url.added']({
url: {
relative: '/test/',
absolute: 'https://myblog.com/test/'
},
resource: {
config: {
type: 'posts'
},
data: {}
}
});
PostGenerator.prototype.addUrl.calledOnce.should.be.true();
});
it('url.removed', function () {
eventsToRemember['url.removed']({
url: {
relative: '/test/',
absolute: 'https://myblog.com/test/'
},
resource: {
config: {
type: 'posts'
},
data: {}
}
});
PostGenerator.prototype.removeUrl.calledOnce.should.be.true();
});
});
it('fn: getSiteMapXml', function () {
PostGenerator.prototype.getXml.returns('xml');
manager.getSiteMapXml('posts').should.eql('xml');
PostGenerator.prototype.getXml.calledOnce.should.be.true();
});
it('fn: getIndexXml', function () {
IndexGenerator.prototype.getXml.returns('xml');
manager.getIndexXml().should.eql('xml');
IndexGenerator.prototype.getXml.calledOnce.should.be.true();
});
});
});