siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
82 lines (72 loc) • 2.63 kB
JavaScript
import _uniq from 'lodash/uniq';
import _sortBy from 'lodash/sortBy';
import { googleFontResponse } from './../TestData/MockGoogleFontResponse';
const URL = 'https://www.googleapis.com/webfonts/v1/webfonts?key=AIzaSyDUYZ9Phtnc_OpfFd39Ri-eQoxbfvcwUeA';
let __sortArray = (arr, identitiy) => _sortBy(arr, (item)=> item.toLowerCase() === identitiy ? 0 : 1 );
let __getMappedVariants = (arr) => {
let sortedArr = __sortArray(arr, 'regular');
return sortedArr.map((obj)=>{
return {
value: obj,
label: obj,
}
})
}
let __getMappedValueLabelObj = (obj) => {
return {
value: obj.family,
label: obj.family,
variants: __getMappedVariants(obj.variants)
}
}
let fetchGoolgeFonts = () => {
let fontsObject = { "All": [] };
let propertiesToBeDeleted = ["kind", "subsets", "version", "lastModified", "files"];
let category = "";
let categoryArray = ["All"];
return fetch(URL)
.then((res) => {
return res.json()
})
.then((fonts) => {
fonts.items.map((font) => {
propertiesToBeDeleted.map((d) => delete font[d]);
category = font.category;
categoryArray.push(category)
fontsObject["All"].push(__getMappedValueLabelObj(font));
fontsObject[category] ? fontsObject[category].push(__getMappedValueLabelObj(font)) : fontsObject[category] = [__getMappedValueLabelObj(font)]
});
return (
{
fonts: fontsObject,
categories: _uniq(categoryArray)
}
)
})
.catch(()=>{
// need to be removed
let fonts = googleFontResponse;
fonts.items.map((font) => {
propertiesToBeDeleted.map((d) => delete font[d]);
category = font.category;
categoryArray.push(category)
fontsObject["All"].push(__getMappedValueLabelObj(font));
fontsObject[category] ? fontsObject[category].push(__getMappedValueLabelObj(font)) : fontsObject[category] = [__getMappedValueLabelObj(font)]
});
return (
{
fonts: fontsObject,
categories: _uniq(categoryArray)
}
)
})
}
let mappedCategoryArray = (arr) => {
return arr.map((val) => {
return ({
name: val,
isActive: val === "All" ? true : false
})
});
};
export { fetchGoolgeFonts, mappedCategoryArray }