0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/core/test/unit/metadata/title_spec.js
Katharina Irrgang 0201c431d7 🔥 do not store settings in config (#7924)
* 🎨  🔥  do not store settings in config and make settings cache easier available

- remove remembering settings value in theme config
- if we need a cache value, we are asking the settings cache directly
- instead of settings.getSettingSync we use settings.cache.get

- added TODO:
  - think about moving the settings cache out of api/settings
  - we could create a folder named cache cache/settings
  - this settings cache listens on model changes for settings
  - decoupling

* 🔥  remove timezone from config

- no need to store in overrides config and in defaults settings

* 🎨  context object helper

- replace config.get('theme') by settings cache

* 🎨  replace config.get('theme') by settings.cache.get

* 🎨  adapt tests

* fixes from comments
2017-02-03 13:15:11 +00:00

185 lines
5 KiB
JavaScript

var sinon = require('sinon'),
should = require('should'),
getTitle = require('../../../server/data/meta/title'),
settingsCache = require('../../../server/api/settings').cache,
sandbox = sinon.sandbox.create();
should.equal(true, true);
describe('getTitle', function () {
var localSettingsCache = {};
beforeEach(function () {
sandbox.stub(settingsCache, 'get', function (key) {
return localSettingsCache[key];
});
});
afterEach(function () {
sandbox.restore();
localSettingsCache = {};
});
it('should return meta_title if on data root', function () {
var title = getTitle({
meta_title: 'My test title'
});
title.should.equal('My test title');
});
it('should return blog title if on home', function () {
localSettingsCache.title = 'My blog title';
var title = getTitle({}, {context: 'home'});
title.should.equal('My blog title');
});
it('should return author name - blog title if on data author page', function () {
localSettingsCache.title = 'My blog title 2';
var title = getTitle({
author: {
name: 'Author Name'
}
}, {context: ['author']});
title.should.equal('Author Name - My blog title 2');
});
it('should return author page title if on data author page with more then one page', function () {
localSettingsCache.title = 'My blog title 2';
var title = getTitle({
author: {
name: 'Author Name'
}
}, {
context: ['author'],
pagination: {
total: 40,
page: 3
}
});
title.should.equal('Author Name - Page 3 - My blog title 2');
});
it('should return tag name - blog title if on data tag page no meta_title', function () {
localSettingsCache.title = 'My blog title 3';
var title = getTitle({
tag: {
name: 'Tag Name'
}
}, {context: ['tag']});
title.should.equal('Tag Name - My blog title 3');
});
it('should return tag name - page - blog title if on data tag page no meta_title', function () {
localSettingsCache.title = 'My blog title 3';
var title = getTitle({
tag: {
name: 'Tag Name'
}
}, {
context: ['tag'],
pagination: {
total: 40,
page: 39
}
});
title.should.equal('Tag Name - Page 39 - My blog title 3');
});
it('should return tag meta_title if in tag data', function () {
var title = getTitle({
tag: {
name: 'Tag Name',
meta_title: 'My Tag Meta Title!'
}
}, {context: ['tag']});
title.should.equal('My Tag Meta Title!');
});
it('should return post title if in post context', function () {
var title = getTitle({
post: {
title: 'My awesome post!'
}
}, {context: ['post']});
title.should.equal('My awesome post!');
});
it('should return post title if in amp context', function () {
var title = getTitle({
post: {
title: 'My awesome post!'
}
}, {context: ['amp', 'post']});
title.should.equal('My awesome post!');
});
it('should return post title if in page context', function () {
var title = getTitle({
post: {
title: 'My awesome page!'
}
}, {context: ['page']});
title.should.equal('My awesome page!');
});
it('should return post title if in amp and page context', function () {
var title = getTitle({
post: {
title: 'My awesome page!'
}
}, {context: ['amp', 'page']});
title.should.equal('My awesome page!');
});
it('should return post meta_title if in post data', function () {
var title = getTitle({
post: {
name: 'My awesome post!',
meta_title: 'My Tag Meta Title Post! '
}
}, {context: ['post']});
title.should.equal('My Tag Meta Title Post!');
});
it('should return post meta_title if amp context in post data', function () {
var title = getTitle({
post: {
name: 'My awesome post!',
meta_title: 'My Tag Meta Title Post! '
}
}, {context: ['amp', 'post']});
title.should.equal('My Tag Meta Title Post!');
});
it('should return blog title with page if unknown type', function () {
localSettingsCache.title = 'My blog title 4';
var title = getTitle({}, {
context: ['paged'],
pagination: {
total: 40,
page: 35
}
});
title.should.equal('My blog title 4 - Page 35');
});
});