import React from 'react' import { render } from '@testing-library/react' import ImagePair from '../index' import ImageSet from '../../ImageSet' import type { ContentTree } from '@financial-times/content-tree' const imageSetFixtureA: ContentTree.ImageSet = { type: 'image-set' as const, id: 'http://api.ft.com/content/d779876b-f2f2-4598-b97f-32e0520951e4', picture: { layoutWidth: 'standard', imageType: 'graphic', alt: 'Column chart of 3-month returns if you bought at the peak of a rate-rise cycle, % showing Returns on perfect timing', caption: 'Natalia Criado silver-plated-brass Artefacto serving fork and spoon, €520', credit: '', images: [ { id: '5c55d90a-e102-4a1b-a34a-b3c4d400bfb7', width: 700, height: 360, format: 'standard-inline', url: 'https://www.ft.com/__origami/service/image/v2/images/raw/https%3A%2F%2Fd6c748xw2pzm8.cloudfront.net%2Fproduction%2Fd779876b-f2f2-4598-b97f-32e0520951e4.jpg?source=ft-app-api&fit=scale-down&quality=highest&width=700&dpr=1', sourceSet: [ { dpr: 1, width: 700, url: 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Ad779876b-f2f2-4598-b97f-32e0520951e4?source=ft-app-api&fit=scale-down&quality=highest&width=700&dpr=1', }, ], }, { id: '49a7a6e6-4be9-442f-8af4-9aec1d1bc442', width: 490, height: 880, format: 'mobile', url: 'https://www.ft.com/__origami/service/image/v2/images/raw/https%3A%2F%2Fd6c748xw2pzm8.cloudfront.net%2Fproduction%2Fd779876b-f2f2-4598-b97f-32e0520951e4.jpg?source=ft-app-api&fit=scale-down&quality=highest&width=700&dpr=1', sourceSet: [ { dpr: 1, width: 490, url: 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3A49a7a6e6-4be9-442f-8af4-9aec1d1bc442?source=ft-app-api&fit=scale-down&quality=highest&width=490&dpr=1', }, ], }, ], fallbackImage: { id: '5c55d90a-e102-4a1b-a34a-b3c4d400bfb7', width: 200, height: 200, format: 'standard-inline', url: 'https://images.ft.com/v3/image/raw/https%3A%2F%2Fd1e00ek4ebabms.cloudfront.net%2Fproduction%2Fd779876b-f2f2-4598-b97f-32e0520951e4.jpg?source=next-article&fit=scale-down&quality=highest&width=700&dpr=1', }, }, } const imageSetFixtureB: ContentTree.ImageSet = { type: 'image-set' as const, id: 'http://api.ft.com/content/10fd9d62-d1d8-467f-9fde-72e26bfee896', picture: { layoutWidth: 'standard', imageType: 'image', alt: 'Hors-d’Oeuvre silver Artifact Tea cutlery, £420 for four-piece set, oblist.com', caption: 'Hors-d’Oeuvre silver Artifact Tea cutlery, £420 for four-piece set, oblist.com', credit: '', images: [ { id: '10fd9d62-d1d8-467f-9fde-72e26bfee896', width: 700, height: 1600, format: 'standard-inline', url: 'https://images.ft.com/v3/image/raw/https%3A%2F%2Fd1e00ek4ebabms.cloudfront.net%2Fproduction%2F10fd9d62-d1d8-467f-9fde-72e26bfee896.jpg.jpg?source=next-article&fit=scale-down&quality=highest&width=700&dpr=1', sourceSet: [ { dpr: 1, width: 700, url: 'https://images.ft.com/v3/image/raw/ftcms%3A10fd9d62-d1d8-467f-9fde-72e26bfee896?source=next-article&fit=scale-down&quality=highest&width=700&dpr=1', }, ], }, ], fallbackImage: { id: '10fd9d62-d1d8-467f-9fde-72e26bfee896', width: 1151, height: 1600, format: 'standard-inline', url: 'https://images.ft.com/v3/image/raw/https%3A%2F%2Fd1e00ek4ebabms.cloudfront.net%2Fproduction%2F10fd9d62-d1d8-467f-9fde-72e26bfee896.jpg.jpg?source=next-article&fit=scale-down&quality=highest&width=700&dpr=1', }, }, } const contentData = { type: 'image-pair' as const, children: [imageSetFixtureA, imageSetFixtureB] as [ typeof imageSetFixtureA, typeof imageSetFixtureB ], } describe('ImagePair', () => { it('renders two ImageSet children correctly', () => { const imageSetA = const imageSetB = const { container } = render( {[imageSetA, imageSetB]} ) expect(container).toMatchSnapshot() }) it('renders null if children are missing or not length 2', () => { // Bypass type check for negative test const imageSetA = const { container } = render( {[imageSetA]} ) expect(container.firstChild).toBeNull() }) })