// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck
import React from 'react'
import renderer from 'react-test-renderer'
import MainImage from '../index'
import { ArticleQuery } from '@financial-times/cp-content-pipeline-client'
import { ContentTree } from '@financial-times/content-tree'
// Mock the ImageSet component
jest.mock('../../content-tree/ImageSet/index', () => ({
__esModule: true,
default: ({ isMainImage, content }) => (
),
FallbackImage: ({ isMainImage, content }) => (
),
}))
const baseContent: ArticleQuery['content'] = {
__typename: 'Article',
title: 'Test Article',
id: '00000000-0000-0000-0000-000000000000',
url: 'https://www.ft.com/content/00000000-0000-0000-0000-000000000000',
publishedDate: '2024-06-11T14:13:25.527Z',
publishedTimestamp: 1718115205527,
modifiedTimestamp: 1718115318431,
publishReference: 'test-reference',
firstPublishedDate: '2024-06-11T14:13:25.527Z',
annotations: [],
body: {
structured: {
tree: {
type: 'body',
version: 1,
children: [],
},
references: [],
},
},
}
describe('MainImage component', () => {
it('renders nothing when there is no main image', () => {
const tree = renderer.create().toJSON()
expect(tree).toMatchSnapshot()
})
it('renders ImageSet when main-image reference exists and removes alt text', () => {
const mainImageReference: ContentTree.ImageSet = {
type: 'main-image',
id: 'image-id',
picture: {
sources: [],
default: {
url: 'https://example.com/image.jpg',
width: 800,
height: 600,
},
alt: 'Original alt text',
},
}
const content: ArticleQuery['content'] = {
...baseContent,
body: {
structured: {
tree: {
type: 'body',
version: 1,
children: [],
},
references: [mainImageReference],
},
},
}
const tree = renderer.create().toJSON()
expect(tree).toMatchSnapshot()
})
it('renders FallbackImage when main-image-raw reference exists and removes alt text', () => {
const mainImageRawReference = {
type: 'main-image-raw',
url: 'https://example.com/raw-image.jpg',
alt: 'Original raw alt text',
width: 800,
height: 600,
}
const content: ArticleQuery['content'] = {
...baseContent,
body: {
structured: {
tree: {
type: 'body',
version: 1,
children: [],
},
references: [mainImageRawReference],
},
},
}
const tree = renderer.create().toJSON()
expect(tree).toMatchSnapshot()
})
it('prioritizes main-image over main-image-raw when both exist', () => {
const mainImageReference: ContentTree.ImageSet = {
type: 'main-image',
id: 'image-id',
picture: {
sources: [],
default: {
url: 'https://example.com/image.jpg',
width: 800,
height: 600,
},
alt: 'Alt text for main image',
},
}
const mainImageRawReference = {
type: 'main-image-raw',
url: 'https://example.com/raw-image.jpg',
alt: 'Alt text for raw image',
width: 800,
height: 600,
}
const content: ArticleQuery['content'] = {
...baseContent,
body: {
structured: {
tree: {
type: 'body',
version: 1,
children: [],
},
references: [mainImageReference, mainImageRawReference],
},
},
}
const tree = renderer.create().toJSON()
expect(tree).toMatchSnapshot()
})
})