all files / api/toJSON/ leadMedia.js

100% Statements 26/26
89.47% Branches 17/19
100% Functions 1/1
100% Lines 26/26
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43      44×                            
'use strict';
 
const R = require('ramda');
let createArticleContent = require('./articleContent');
 
const hasContentItem = R.curry(function (type, relation) {
    return R.compose(R.not, R.isNil, R.path(['content_item', `${type}_id`]))(relation);
});
 
const isRelationType = R.propEq('relation_type');
 
module.exports = (imageDimensions, relations) => {
    const picturerel = R.find(R.and(isRelationType('picturerel'), hasContentItem('image')), relations);
    const teaserrel = R.find(R.and(isRelationType('teaserrel'), hasContentItem('image')), relations);
    const videorel = R.find(R.and(isRelationType('videorel'),  hasContentItem('video')), relations);
    const galleryrel = R.find(R.and(isRelationType('picturerel'), hasContentItem('gallery')), relations);
 
    let leadImage = null;
    let leadGallery = null;
    let leadVideo = null;
    let leadTeaser = null;
 
    if(!R.isNil(galleryrel)) {
        leadGallery = createArticleContent(imageDimensions, galleryrel);
    }
 
    if(!R.isNil(picturerel)) {
        leadImage = createArticleContent(imageDimensions, picturerel);
    }
 
    if(!R.isNil(teaserrel)) {
        leadTeaser = createArticleContent(imageDimensions, teaserrel);
    }
 
    if(!R.isNil(videorel)) {
        const videoArticleContent = createArticleContent(imageDimensions, videorel);
        const vleadImage = R.isNil(leadImage) ? null : leadImage[1];
        const vleadTeaser = R.isNil(leadTeaser) ? null : leadTeaser[1];
        leadVideo = [videoArticleContent[0], R.assocPath(['data', 'attributes', 'leadMedia'], vleadImage || vleadTeaser, videoArticleContent[1])];
    }
 
    return leadGallery || leadVideo || leadImage || leadTeaser || null;
};