0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/test/unit/data/meta/structured_data_spec.js
Hannah Wolfe 7f1d3ebc07
Move tests from core to root (#11700)
- move all test files from core/test to test/
- updated all imports and other references
- all code inside of core/ is then application code
- tests are correctly at the root level
- consistent with other repos/projects

Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2020-03-30 16:26:47 +01:00

171 lines
7.2 KiB
JavaScript

var should = require('should'),
getStructuredData = require('../../../../core/frontend/meta/structured_data');
describe('getStructuredData', function () {
it('should return structured data from metadata per post', function (done) {
var 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'
}, 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) {
var 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'
}, 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) {
var 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
}, 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();
});
});