UNPKG

design-comuni-plone-theme

Version:
845 lines (829 loc) 25.2 kB
import React from 'react'; import { render, screen } from '@testing-library/react'; import '@testing-library/jest-dom/extend-expect'; import PaginaArgomentoView from '../PaginaArgomentoView/PaginaArgomentoView'; import configureStore from 'redux-mock-store'; import { Provider } from 'react-intl-redux'; import { MemoryRouter } from 'react-router-dom'; import thunk from 'redux-thunk'; // Warning: An update to Icon inside a test was not wrapped in act(...). // When testing, code that causes React state updates should be wrapped into act(...): jest.mock('design-comuni-plone-theme/components/ItaliaTheme/Icons/Icon'); jest.mock('@plone/volto/helpers/Loadable/Loadable'); beforeAll( async () => await require('@plone/volto/helpers/Loadable/Loadable').__setLoadables(), ); const middlewares = [thunk]; const mockStore = configureStore(middlewares); const mock_mandatory = { '@components': { actions: { '@id': 'http://localhost:3000/argomenti/sport/@actions', }, aliases: { '@id': 'http://localhost:3000/argomenti/sport/@aliases', }, breadcrumbs: { '@id': 'http://localhost:3000/argomenti/sport/@breadcrumbs', }, contextnavigation: { '@id': 'http://localhost:3000/argomenti/sport/@contextnavigation', }, navigation: { '@id': 'http://localhost:3000/argomenti/sport/@navigation', }, subsite: {}, translations: { '@id': 'http://localhost:3000/argomenti/sport/@translations', }, types: { '@id': 'http://localhost:3000/argomenti/sport/@types', }, workflow: { '@id': 'http://localhost:3000/argomenti/sport/@workflow', }, }, '@id': 'http://localhost:3000/argomenti/sport', '@type': 'Pagina Argomento', UID: '90e54807ffe444f09fd59725fbfc557c', title: 'Sport', }; const mock_allfields = { ...mock_mandatory, allow_discussion: false, blocks: { '00228483-b071-4c68-a565-92a90549cf48': { '@type': 'title', }, '0cf3f1df-c020-40eb-8f33-f265bb19dad1': { '@type': 'description', }, '2d02f60e-5bc9-4382-bded-87b5c5aa405b': { '@type': 'listing', block: '2d02f60e-5bc9-4382-bded-87b5c5aa405b', headlineTag: 'h2', hide_dates: false, linkHref: [ { '@id': '/documenti-e-dati', Description: '', Title: 'Documenti e dati', title: 'Documenti e dati', }, ], linkTitle: 'Tutti i documenti', query: [], querystring: { query: [ { i: 'portal_type', o: 'plone.app.querystring.operation.selection.any', v: ['Documento'], }, ], sort_order: 'ascending', }, show_description: true, show_detail_link: false, show_icon: false, show_path_filters: false, show_section: true, show_type: false, title: 'Documenti', variation: 'simpleCard', }, '4036e2cc-199b-4d9f-9584-877b06a113d2': { '@type': 'text', }, '795d6f3a-970a-47b1-8ad1-cc8ada0f70bc': { '@type': 'listing', block: '795d6f3a-970a-47b1-8ad1-cc8ada0f70bc', headlineTag: 'h2', hide_dates: false, linkHref: [ { '@id': '/amministrazione', Description: '', Title: 'Amministrazione', title: 'Amministrazione', }, ], linkTitle: "Tutta l'amministrazione", path_filters: {}, query: [], querystring: { limit: '3', query: [ { i: 'portal_type', o: 'plone.app.querystring.operation.selection.any', v: ['UnitaOrganizzativa', 'Persona'], }, ], sort_order: 'ascending', }, show_description: true, show_detail_link: false, show_icon: false, show_path_filters: false, show_section: true, show_type: false, title: 'Amministrazione', variation: 'simpleCard', }, '7e34a700-a41e-4a44-9e04-2e51c5e1d9b0': { '@type': 'listing', block: '7e34a700-a41e-4a44-9e04-2e51c5e1d9b0', headlineTag: 'h2', hide_dates: false, linkHref: [ { '@id': '/servizi', Description: '', Title: 'Servizi', title: 'Servizi', }, ], linkTitle: 'Tutti i servizi', query: [], querystring: { limit: '3', query: [ { i: 'portal_type', o: 'plone.app.querystring.operation.selection.any', v: ['Servizio'], }, ], sort_order: 'ascending', }, show_description: true, show_detail_link: false, show_icon: false, show_path_filters: false, show_section: true, show_type: false, title: 'Servizi', variation: 'simpleCard', }, 'cc6f7851-ad0f-4eb1-bba0-1d23750b6fe8': { '@type': 'listing', always_show_image: false, autoplay: false, autoplay_speed: 2, block: 'cc6f7851-ad0f-4eb1-bba0-1d23750b6fe8', headlineTag: 'h2', hide_dates: false, linkHref: [ { '@id': '/notizie', Description: '', Title: 'Notizie', title: 'Notizie', }, ], linkTitle: 'Tutte le novità', natural_image_size: false, path_filters: {}, query: [], querystring: { limit: '3', query: [ { i: 'portal_type', o: 'plone.app.querystring.operation.selection.any', v: ['News Item', 'Event'], }, ], sort_order: 'ascending', }, set_four_columns: false, show_block_bg: true, show_description: true, show_detail_link: false, show_dots: true, show_icon: false, show_image_popup: false, show_image_title: true, show_only_first_ribbon: false, show_path_filters: false, show_pointer_list: false, show_section: false, show_topics: false, show_type: true, slidesToShow: 1, title: 'Novità', variation: 'cardWithImageTemplate', }, }, description: 'Informazioni su eventi sportivi, impianti comunali, servizi dedicati allo sport', icona: 'child', image: { 'content-type': 'image/png', download: 'http://localhost:3000/argomenti/sport/@@images/image-1156-4ffcd0c77ca4a1c9c64a80649bdae352.png', filename: 'foto-ospedale.png', height: 940, scales: { gallery: { download: 'http://localhost:3000/argomenti/sport/@@images/image-250-a830b05cc226c10022663a8870939760.png', height: 203, width: 250, }, great: { download: 'http://localhost:3000/argomenti/sport/@@images/image-1200-893c7283628ec9c36465079d21f05ee0.png', height: 940, width: 1156, }, huge: { download: 'http://localhost:3000/argomenti/sport/@@images/image-1600-11978e33cf1496dcad5ddf72d2addfec.png', height: 940, width: 1156, }, icon: { download: 'http://localhost:3000/argomenti/sport/@@images/image-32-17e65f3e8aa84ed6073fb06d3892f807.png', height: 26, width: 32, }, large: { download: 'http://localhost:3000/argomenti/sport/@@images/image-800-e0ccedc3da400dddb644eb871a129d2e.png', height: 650, width: 800, }, larger: { download: 'http://localhost:3000/argomenti/sport/@@images/image-1000-3a8204d5166f1788579b76d41b11112d.png', height: 813, width: 1000, }, listing: { download: 'http://localhost:3000/argomenti/sport/@@images/image-16-da545670ce47827cdc7612634f04d8a5.png', height: 13, width: 16, }, midi: { download: 'http://localhost:3000/argomenti/sport/@@images/image-300-cb33c44a55ea9f4842c74cb28a365930.png', height: 243, width: 300, }, mini: { download: 'http://localhost:3000/argomenti/sport/@@images/image-200-f0240dabd42962ce5490a48211561f71.png', height: 162, width: 200, }, preview: { download: 'http://localhost:3000/argomenti/sport/@@images/image-400-fdf79ef230c6d931e9bf20e038fc30f0.png', height: 325, width: 400, }, teaser: { download: 'http://localhost:3000/argomenti/sport/@@images/image-600-371729b4ca1e8bb32d1e06860dbb8533.png', height: 487, width: 600, }, thumb: { download: 'http://localhost:3000/argomenti/sport/@@images/image-128-857bb85322609c7b73d7e111bc7732b9.png', height: 104, width: 128, }, tile: { download: 'http://localhost:3000/argomenti/sport/@@images/image-64-49d29cadb948f4e10b6fadce6877477c.png', height: 52, width: 64, }, }, size: 1296882, width: 1156, }, image_caption: 'Didascalia immagine testata', relatedItems: [ { '@id': 'http://localhost:3000/eventi/mega-evento', '@type': 'Event', description: 'Descrizione del mega evento', design_italia_meta_type: 'Evento', effective: null, end: '2023-01-20T09:00:00+00:00', has_children: true, id: 'mega-evento', image_field: 'preview_image', image_scales: { preview_image: [ { 'content-type': 'image/jpeg', download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-5184-b5d567a7ba608b94404e30c90b255c22.jpeg', filename: 'national-cancer-institute.jpeg', height: 3456, scales: { gallery: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-250-1ec9475de2124b017f1dd92d4888a04a.jpeg', height: 166, width: 250, }, great: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-1200-dce45656c72c5e2fda91d15ea1700b38.jpeg', height: 800, width: 1200, }, huge: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-1600-43b4907c74976d400296f42c4bee8b89.jpeg', height: 1066, width: 1600, }, icon: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-32-10fa05879a725f1c0a79ff6cb9299c97.jpeg', height: 21, width: 32, }, large: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-800-be70acf978f5aacbe83af8482c6a2381.jpeg', height: 533, width: 800, }, larger: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-1000-820f7ead7e59728ce3ee9bb8021ec950.jpeg', height: 666, width: 1000, }, listing: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-16-ab5be9555a009fb3de92b9d049462440.jpeg', height: 10, width: 16, }, midi: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-300-8edca2b5c68239a69a87584b16f146e4.jpeg', height: 200, width: 300, }, mini: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-200-10ce8dad9c6577e5f08e12bc7d94be91.jpeg', height: 133, width: 200, }, preview: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-400-0500bc73ae0d0d6f304e4de314a41e73.jpeg', height: 266, width: 400, }, teaser: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-600-389097fa4b7b5dee7b16be86a1957043.jpeg', height: 400, width: 600, }, thumb: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-128-91e9caaa30bdb024c025190a58db4eae.jpeg', height: 85, width: 128, }, tile: { download: 'http://localhost:3000/eventi/mega-evento/@@images/preview_image-64-7d4fda773924ded6e0ac3321d3046c81.jpeg', height: 42, width: 64, }, }, size: 2026538, width: 5184, }, ], }, review_state: 'private', start: '2023-01-20T09:00:00+00:00', title: 'Mega Evento', }, ], ulteriori_informazioni: { 'content-type': 'text/html', data: "<p>There's a lady who's sure</p>", encoding: 'utf8', }, unita_amministrative_responsabili: [ { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi', '@type': 'UnitaOrganizzativa', address: '', circoscrizione: null, city: null, contact_info: { blocks: { '65589e29-7a43-4979-bf71-6f46503a70a2': { '@type': 'text', }, }, blocks_layout: { items: ['65589e29-7a43-4979-bf71-6f46503a70a2'], }, }, description: '', design_italia_meta_type: 'Unita Organizzativa', effective: null, geolocation: { latitude: 0, longitude: 0, }, has_children: true, id: 'gestione-impianti-sportivi', image_field: null, image_scales: null, nome_sede: null, quartiere: null, review_state: 'private', street: 'Via Dei Transiti 21', title: 'Gestione impianti sportivi', zip_code: '50302', }, ], }; // const with_blocks = { // ...mock_allfields, // title: 'Pagina argomento a blocchi', // description: 'Description argomento a blocchi', // blocks: { // '1fb7c316-ec00-4f0d-9973-096bab6d610b': { // '@type': 'pagina_argomento_title', // blockRenderMap: { // 'align-center': 'p', // atomic: { // element: 'figure', // }, // blockquote: { // element: 'blockquote', // }, // callout: { // element: 'p', // }, // 'code-block': { // element: 'pre', // wrapper: { // _owner: null, // _store: {}, // key: null, // props: { // className: 'public-DraftStyleDefault-pre', // }, // ref: null, // type: 'pre', // }, // }, // 'header-five': { // element: 'h5', // }, // 'header-four': { // element: 'h4', // }, // 'header-one': { // element: 'h1', // }, // 'header-six': { // element: 'h6', // }, // 'header-three': { // element: 'h3', // }, // 'header-two': { // element: 'h2', // }, // 'ordered-list-item': { // element: 'li', // wrapper: { // _owner: null, // _store: {}, // key: null, // props: { // className: 'public-DraftStyleDefault-ol', // }, // ref: null, // type: 'ol', // }, // }, // 'unordered-list-item': { // element: 'li', // wrapper: { // _owner: null, // _store: {}, // key: null, // props: { // className: 'public-DraftStyleDefault-ul', // }, // ref: null, // type: 'ul', // }, // }, // unstyled: { // element: 'div', // }, // }, // portata_di_click: { // blocks: [ // { // data: {}, // depth: 0, // entityRanges: [], // inlineStyleRanges: [ // { // length: 6, // offset: 40, // style: 'BOLD', // }, // { // length: 11, // offset: 54, // style: 'BOLD', // }, // { // length: 21, // offset: 78, // style: 'BOLD', // }, // ], // key: '1vnli', // text: 'Eventi ambiente ed educazione \nParchi e Boschi urbani\nContabilit\u00e0 ambientale e Open Data ambientali', // type: 'unstyled', // }, // ], // entityMap: {}, // }, // }, // }, // blocks_layout: { // items: ['1fb7c316-ec00-4f0d-9973-096bab6d610b'], // }, // }; const store = mockStore({ intl: { locale: 'en', messages: {}, }, breadcrumbs: { error: null, items: [ { title: 'Argomenti', url: '/argomenti', }, { title: 'Sport', url: '/argomenti/sport', }, ], root: '', loaded: true, loading: false, }, content: { data: { is_folderish: true, }, subrequests: { '/amministrazione/uffici/gestione-impianti-sportivi': { loading: false, loaded: true, error: null, data: { '@components': { actions: { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/@actions', }, aliases: { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/@aliases', }, breadcrumbs: { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/@breadcrumbs', }, contextnavigation: { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/@contextnavigation', }, navigation: { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/@navigation', }, subsite: {}, translations: { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/@translations', }, types: { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/@types', }, workflow: { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/@workflow', }, }, '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi', '@type': 'UnitaOrganizzativa', UID: 'a0c6f3a0d8194e3ba801138a09510714', allow_discussion: false, assessore_riferimento: [], changeNote: '', circoscrizione: null, city: null, competenze: { blocks: {}, blocks_layout: { items: [], }, }, contact_info: [], contributors: [], correlato_in_evidenza: [], country: null, created: '2023-01-03T15:25:37+00:00', creators: ['admin'], description: '', design_italia_meta_type: 'Unita Organizzativa', documenti_pubblici: [], effective: null, exclude_from_nav: false, expires: null, geolocation: { latitude: 0, longitude: 0, }, id: 'gestione-impianti-sportivi', image: null, image_caption: null, is_folderish: true, items: [ { '@id': 'http://localhost:3000/amministrazione/uffici/gestione-impianti-sportivi/allegati', '@type': 'Document', description: '', design_italia_meta_type: 'Pagina', has_children: false, id: 'allegati', image_field: '', image_scales: null, review_state: 'private', title: 'Allegati', url: '/amministrazione/uffici/gestione-impianti-sportivi/allegati', }, ], items_total: 1, language: { title: 'Italiano', token: 'it', }, layout: 'view', legami_con_altre_strutture: [], lock: { locked: false, stealable: true, }, modified: '2023-01-19T12:04:48+00:00', next_item: { '@id': 'http://localhost:3000/amministrazione/uffici/giunta-e-consiglio', '@type': 'UnitaOrganizzativa', description: '', title: 'Giunta e consiglio', }, nome_sede: null, opengraph_description: null, opengraph_image: null, opengraph_title: null, parent: { '@id': 'http://localhost:3000/amministrazione/uffici', '@type': 'Document', description: '', design_italia_meta_type: 'Pagina', has_children: true, id: 'uffici', image_field: null, image_scales: null, review_state: 'private', title: 'Uffici', }, persone_struttura: [], prestazioni: [], preview_caption: null, preview_image: null, previous_item: {}, quartiere: null, relatedItems: [], related_news: [], responsabile: [], review_state: 'private', rights: '', sede: [], sedi_secondarie: [], seo_canonical_url: null, seo_description: null, seo_noindex: null, seo_title: null, servizi_offerti: [], street: 'Via Dei Transiti 21', subjects: [], tassonomia_argomenti: [], tipologia_organizzazione: { title: 'Struttura amministrativa', token: 'struttura_amministrativa', }, title: 'Gestione impianti sportivi', ulteriori_informazioni: { blocks: {}, blocks_layout: { items: [], }, }, uo_children: [], uo_parent: null, version: 'current', versioning_enabled: true, working_copy: null, working_copy_of: null, zip_code: '50302', }, }, }, }, }); test('expect to have all mandatory fields in page', async () => { const { getByText } = render( <Provider store={store}> <MemoryRouter> <PaginaArgomentoView content={mock_mandatory} /> </MemoryRouter> </Provider>, ); // title expect(screen.getByRole('heading', { name: 'Sport' })).toBeInTheDocument(); }); test('expect to have all fields in page', async () => { const { getByText, getByAltText, debug } = render( <Provider store={store}> <MemoryRouter> <PaginaArgomentoView content={mock_allfields} /> </MemoryRouter> </Provider>, ); //descrizione expect( screen.getByText(/Informazioni su eventi sportivi/i, { exact: false }), ).toBeInTheDocument(); //unità amministrative responsabili expect(screen.getByText(/gestione impianti sportivi/i)).toBeInTheDocument(); // Ulteriori informazioni expect(screen.getByText(/There's a lady who's sure/i)).toBeInTheDocument(); //Eventi correlati expect( screen.getByRole('heading', { name: /Contenuti correlati/i }), ).toBeInTheDocument(); expect( screen.getByRole('link', { name: /Mega evento/i }), ).toBeInTheDocument(); }); // TypeError: Cannot read property 'items' of undefined // 32 | const dispatch = useDispatch(); // 33 | // > 34 | let items = useSelector((state) => state.breadcrumbs.items, isEqual); // test('Page with blocks', async () => { // const { getByText, getByAltText } = render( // <Provider store={store}> // <MemoryRouter> // <PaginaArgomentoView content={with_blocks} /> // </MemoryRouter> // </Provider>, // ); // // title // expect(getByText(/Pagina argomento a blocchi/i)).toBeInTheDocument(); // // description // expect(getByText(/Description argomento a blocchi/i)).toBeInTheDocument(); // // portata_di_click // expect(getByText(/Eventi ambiente ed educazione/)).toBeInTheDocument(); // });