@financial-times/n-concept
Version:
n-concept provides a card for concepts (e.g. topic, author) and their articles
56 lines (51 loc) • 1.64 kB
JavaScript
const ConceptImagePresenter = require('../../presenters/concept-image');
const chai = require('chai');
const expect = chai.expect;
const invalidItems = [
{
primaryImage: {
rawSrc: null
}
},
{
primaryImage: {
rawSrc: 'foobar.jpg'
},
isPodcast: true
}
];
const validItems = [
{
primaryImage: {
rawSrc: 'valid1.jpg'
}
},
{
primaryImage: {
rawSrc: 'valid2.jpg'
}
}
];
describe('Concept Image Presenter', () => {
it('falls back to a default', () => {
const inst = new ConceptImagePresenter();
expect(inst.imageUrl).to.equal('http://com.ft.imagepublish.prod.s3.amazonaws.com/cca52406-bda0-11e5-9fdb-87b8d15baec2');
});
it('uses the src the first valid non-podcast item', () => {
const allItems = invalidItems.concat(validItems);
const inst = new ConceptImagePresenter({taxonomy: 'brand', items: allItems});
expect(inst.imageUrl).to.equal('valid1.jpg');
});
it('uses the taxonomy image if there is no valid image for the items', () => {
const inst = new ConceptImagePresenter({taxonomy: 'brand', items: invalidItems});
expect(inst.imageUrl).to.equal('http://com.ft.imagepublish.prod.s3.amazonaws.com/cca52406-bda0-11e5-9fdb-87b8d15baec2');
});
it('supports mainImage', () => {
const mainImagerawSrc = [ { mainImage: { rawSrc: 'foo.jpg' } } ];
const mainImageurl = [ { mainImage: { url: 'bar.jpg' } } ];
const inst = new ConceptImagePresenter({taxonomy: 'brand', items: mainImagerawSrc});
const inst2 = new ConceptImagePresenter({taxonomy: 'brand', items: mainImageurl});
expect(inst.imageUrl).to.equal('foo.jpg');
expect(inst2.imageUrl).to.equal('bar.jpg');
});
});