import {injectTransforms, getSrcTransformer, F_AUTO, effectsLast, createDensitySrcSet} from '../helpers' const SRC_BASE = `https://res.cloudinary.com/mabx-eu-uat/image/upload` const SRC_END = `v1/demo/osrxy6zh0rrpaqx012c7` const TRANSFORM_WITHOUT_F_AUTO = `c_crop,h_0.40,w_0.65` const GROUP_SEPARATOR = `,` const CHAIN_SEPARATOR = `/` const SHARPEN = `e_sharpen:50` const BLUR = `e_blur:400` const CROP_POSITION = `c_crop,h_0.40,w_0.65,g_xy_center,x_0.5,y_0.55` const SIMPLE_TRANSFORM = `q_60,w_600` const cloudinarySrc = `${SRC_BASE}/${SRC_END}` const transforms = `${TRANSFORM_WITHOUT_F_AUTO}${GROUP_SEPARATOR}${F_AUTO}` const complexTransforms = `${SHARPEN}/${BLUR}/${CROP_POSITION}` describe(`injectTransforms`, () => { it(`injects simple transforms in the correct part of the Cloudinary URL`, () => { const result = injectTransforms(cloudinarySrc, transforms) expect(result).toBe( [ // SRC_BASE, F_AUTO, TRANSFORM_WITHOUT_F_AUTO, SRC_END, ].join(CHAIN_SEPARATOR) ) }) it(`injects complex transforms in the correct part of the Cloudinary URL`, () => { const result = injectTransforms(cloudinarySrc, complexTransforms) expect(result).toBe( [ // SRC_BASE, F_AUTO, CROP_POSITION, BLUR, SHARPEN, SRC_END, ].join(CHAIN_SEPARATOR) ) }) it(`appends additional transforms to a chain`, () => { const srcWithExistingTransforms = [ // SRC_BASE, CROP_POSITION, SRC_END, ].join(CHAIN_SEPARATOR) // `https://res.cloudinary.com/mabx-eu-dev/image/upload/${CROP_POSITION}/v1/volvo/image-for-all-crops_dlmchi` const result = injectTransforms(srcWithExistingTransforms, SIMPLE_TRANSFORM) expect(result).toEqual(expect.stringContaining(`${CROP_POSITION}/${F_AUTO}/${SIMPLE_TRANSFORM}/`)) // expect(result).toBe( // [ // // // SRC_BASE, // CROP_POSITION, // F_AUTO, // SIMPLE_TRANSFORM, // SRC_END, // ].join(CHAIN_SEPARATOR) // ) }) it(`removes duplicate transform chain links`, () => { const srcWithExistingTransforms = [ // SRC_BASE, F_AUTO, CROP_POSITION, SRC_END, ].join(CHAIN_SEPARATOR) // `https://res.cloudinary.com/mabx-eu-dev/image/upload/${CROP_POSITION}/v1/volvo/image-for-all-crops_dlmchi` const result = injectTransforms(srcWithExistingTransforms, SIMPLE_TRANSFORM) expect(result).toBe( [ // SRC_BASE, F_AUTO, CROP_POSITION, SIMPLE_TRANSFORM, SRC_END, ].join(CHAIN_SEPARATOR) ) }) it(`returns an empty string if src is not provided`, () => { const result = injectTransforms() expect(result).toBe(``) }) }) describe(`getSrcTransformer`, () => { it(`returns a function that transforms a src string`, () => { const transformer = getSrcTransformer(cloudinarySrc) const TRANSFORMS = `q_60,w_600` const result = transformer(TRANSFORMS) expect(result).toBe(`${SRC_BASE}/${F_AUTO}/${TRANSFORMS}/${SRC_END}`) }) }) describe(`effectsLast`, () => { it(`sorts e_ last`, () => { expect(effectsLast(`e_blur:400`, `something else`)).toBe(1) expect(effectsLast(`e_blur:400`, `e_sharpen:400,plus more`)).toBe(0) expect(effectsLast(`c_crop`, `e_sharpen:400`)).toBe(-1) }) }) describe(`createDensitySrcSet`, () => { it(`creates a srcset with density descriptors`, () => { const src = `https://res.cloudinary.com/mabx-eu-dev/image/upload/v1/volvo/image-for-all-crops_dlmchi` const result = createDensitySrcSet(src, 400) const srcsetBits = result.srcset.split(`,`) expect(srcsetBits.length).toBe(3) expect(result).toEqual( expect.objectContaining({ srcset: expect.stringContaining(` 1x,`), }) ) expect(result).toEqual( expect.objectContaining({ srcset: expect.stringContaining(` 2x,`), }) ) expect(result).toEqual( expect.objectContaining({ srcset: expect.stringContaining(` 3x`), }) ) }) })