Ghost/test/unit/data/meta/structured_data_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

178 lines
7.0 KiB
JavaScript

const should = require('should');
const getStructuredData = require('../../../../core/frontend/meta/structured_data');
describe('getStructuredData', function () {
it('should return structured data from metadata per post', function (done) {
const metadata = {
site: {
title: 'Site Title',
facebook: 'testuser',
twitter: '@testuser'
},
authorName: 'Test User',
ogType: 'article',
metaTitle: 'Post Title',
canonicalUrl: 'http://mysite.com/post/my-post-slug/',
publishedDate: '2015-12-25T05:35:01.234Z',
modifiedDate: '2016-01-21T22:13:05.412Z',
coverImage: {
url: 'http://mysite.com/content/image/mypostcoverimage.jpg',
dimensions: {
width: 500,
height: 500
}
},
ogImage: {
url: null
},
twitterImage: null,
ogTitle: 'Post Title',
ogDescription: 'Post meta description',
twitterTitle: 'Post Title',
twitterDescription: 'Post meta description',
authorFacebook: 'testpage',
creatorTwitter: '@twitterpage',
keywords: ['one', 'two', 'tag'],
metaDescription: 'Post meta description'
};
const structuredData = getStructuredData(metadata);
should.deepEqual(structuredData, {
'article:modified_time': '2016-01-21T22:13:05.412Z',
'article:published_time': '2015-12-25T05:35:01.234Z',
'article:tag': ['one', 'two', 'tag'],
'article:publisher': 'https://www.facebook.com/testuser',
'article:author': 'https://www.facebook.com/testpage',
'og:description': 'Post meta description',
'og:image': 'http://mysite.com/content/image/mypostcoverimage.jpg',
'og:image:width': 500,
'og:image:height': 500,
'og:site_name': 'Site Title',
'og:title': 'Post Title',
'og:type': 'article',
'og:url': 'http://mysite.com/post/my-post-slug/',
'twitter:card': 'summary_large_image',
'twitter:data1': 'Test User',
'twitter:data2': ['one', 'two', 'tag'].join(', '),
'twitter:description': 'Post meta description',
'twitter:image': 'http://mysite.com/content/image/mypostcoverimage.jpg',
'twitter:label1': 'Written by',
'twitter:label2': 'Filed under',
'twitter:title': 'Post Title',
'twitter:url': 'http://mysite.com/post/my-post-slug/',
'twitter:site': '@testuser',
'twitter:creator': '@twitterpage'
});
done();
});
it('should return structured data from metadata with provided og and twitter images only per post', function (done) {
const metadata = {
site: {
title: 'Site Title',
facebook: 'testuser',
twitter: '@testuser'
},
authorName: 'Test User',
ogType: 'article',
metaTitle: 'Post Title',
canonicalUrl: 'http://mysite.com/post/my-post-slug/',
publishedDate: '2015-12-25T05:35:01.234Z',
modifiedDate: '2016-01-21T22:13:05.412Z',
ogImage: {
url: 'http://mysite.com/content/image/mypostogimage.jpg',
dimensions: {
width: 20,
height: 100
}
},
twitterImage: 'http://mysite.com/content/image/myposttwitterimage.jpg',
ogTitle: 'Custom Facebook title',
ogDescription: 'Custom Facebook description',
twitterTitle: 'Custom Twitter title',
twitterDescription: 'Custom Twitter description',
authorFacebook: 'testpage',
creatorTwitter: '@twitterpage',
keywords: ['one', 'two', 'tag'],
metaDescription: 'Post meta description'
};
const structuredData = getStructuredData(metadata);
should.deepEqual(structuredData, {
'article:modified_time': '2016-01-21T22:13:05.412Z',
'article:published_time': '2015-12-25T05:35:01.234Z',
'article:tag': ['one', 'two', 'tag'],
'article:publisher': 'https://www.facebook.com/testuser',
'article:author': 'https://www.facebook.com/testpage',
'og:description': 'Custom Facebook description',
'og:image': 'http://mysite.com/content/image/mypostogimage.jpg',
'og:image:width': 20,
'og:image:height': 100,
'og:site_name': 'Site Title',
'og:title': 'Custom Facebook title',
'og:type': 'article',
'og:url': 'http://mysite.com/post/my-post-slug/',
'twitter:card': 'summary_large_image',
'twitter:data1': 'Test User',
'twitter:data2': ['one', 'two', 'tag'].join(', '),
'twitter:description': 'Custom Twitter description',
'twitter:image': 'http://mysite.com/content/image/myposttwitterimage.jpg',
'twitter:label1': 'Written by',
'twitter:label2': 'Filed under',
'twitter:title': 'Custom Twitter title',
'twitter:url': 'http://mysite.com/post/my-post-slug/',
'twitter:site': '@testuser',
'twitter:creator': '@twitterpage'
});
done();
});
it('should return structured data from metadata with no nulls', function (done) {
const metadata = {
site: {
title: 'Site Title',
facebook: '',
twitter: ''
},
authorName: 'Test User',
ogType: 'article',
metaTitle: 'Post Title',
canonicalUrl: 'http://mysite.com/post/my-post-slug/',
modifiedDate: '2016-01-21T22:13:05.412Z',
authorFacebook: null,
creatorTwitter: null,
coverImage: {
url: undefined
},
ogImage: {
url: null
},
twitterImage: null,
ogTitle: 'Post Title',
ogDescription: null,
twitterTitle: 'Post Title',
twitterDescription: null,
keywords: null,
metaDescription: null
};
const structuredData = getStructuredData(metadata);
should.deepEqual(structuredData, {
'article:modified_time': '2016-01-21T22:13:05.412Z',
'og:site_name': 'Site Title',
'og:title': 'Post Title',
'og:type': 'article',
'og:url': 'http://mysite.com/post/my-post-slug/',
'twitter:card': 'summary',
'twitter:data1': 'Test User',
'twitter:label1': 'Written by',
'twitter:title': 'Post Title',
'twitter:url': 'http://mysite.com/post/my-post-slug/'
});
done();
});
});