From d241cbc88ba1a8296812102b06ffd900a66c0a38 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Sat, 15 Jan 2022 16:39:38 +0100 Subject: [PATCH] fix: Remove from the src the /@@images suffix (bare Plone uses it, but then it's not supported in the default Volto block. --- package.json | 2 +- src/converters/blocks.js | 5 ++++- src/converters/blocks.test.js | 26 ++++++++++++++++++++------ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 5d6f4c2..b0a2c2e 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "scripts": { "start": "node ./src/server.js", - "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js", + "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch --watchAll", "prettier": "./node_modules/.bin/prettier --single-quote --check '**/*.{js,json}'", "prettier:fix": "./node_modules/.bin/prettier --single-quote --write '**/*.{js,json}'", "lint": "./node_modules/eslint/bin/eslint.js --max-warnings=0 'src/**/*.js'", diff --git a/src/converters/blocks.js b/src/converters/blocks.js index f24ad3c..9d586ba 100644 --- a/src/converters/blocks.js +++ b/src/converters/blocks.js @@ -2,9 +2,12 @@ import { alignFromClassName, scaleFromUrl } from '../helpers/image.js'; import { getYTVideoId } from '../helpers/video.js'; const imageBlock = (elem) => { + // strip /@@images/image if present + const url = elem.src.split('/@@images')[0]; + const block = { '@type': 'image', - url: elem.src, + url, alt: elem.alt, title: elem.title, }; diff --git a/src/converters/blocks.test.js b/src/converters/blocks.test.js index 1016cc7..645e653 100644 --- a/src/converters/blocks.test.js +++ b/src/converters/blocks.test.js @@ -46,9 +46,7 @@ describe('imageBlock processing', () => { ); const result = imageBlock(elem); expect(result['@type']).toBe('image'); - expect(result['url']).toBe( - 'https://plone.org/news/item/@@images/44ae2493-53fb-4221-98dc-98fa38d6851a.jpeg', - ); + expect(result['url']).toBe('https://plone.org/news/item'); expect(result['title']).toBe('A Picture'); expect(result['alt']).toBe('Picture of a person'); expect(result['size']).toBe('m'); @@ -60,10 +58,26 @@ describe('imageBlock processing', () => { ); const result = imageBlock(elem); expect(result['@type']).toBe('image'); - expect(result['url']).toBe( - 'https://plone.org/news/item/@@images/image/thumb', - ); + expect(result['url']).toBe('https://plone.org/news/item'); expect(result['size']).toBe('s'); expect(result['align']).toBe('right'); }); + test('Image with no @@images present', () => { + const elem = elementFromString( + 'Picture of a person', + ); + const result = imageBlock(elem); + expect(result['@type']).toBe('image'); + expect(result['url']).toBe('https://plone.org/news/item'); + }); + test('Image with resolveuid present', () => { + const elem = elementFromString( + 'Picture of a person', + ); + const result = imageBlock(elem); + expect(result['@type']).toBe('image'); + expect(result['url']).toBe( + '../resolveuid/7c6a1b0a0d2f40ffb6a4c73fd67b185d', + ); + }); });