import { useApi, useNewsDetails } from '@skolplattformen/hooks' import React from 'react' import { render } from '../../utils/testHelpers' import { NewsItem } from '../newsItem.component' jest.mock('@skolplattformen/hooks') const defaultNewsItem = { author: 'Köket', fullImageUrl: 'test.png', header: 'K-bullar!', published: '2021-02-15T09:13:28.484Z', modified: '2021-02-15T09:13:28.484Z', } let navigation const setup = (customProps = { newsItem: {} }) => { useApi.mockReturnValue({ api: { getSessionCookie: jest.fn() } }) useNewsDetails.mockReturnValue({ data: { body: 'Nu blir det köttbullar', }, }) navigation = { goBack: jest.fn(), } const newsItem = { ...defaultNewsItem, ...customProps.newsItem, } const props = { navigation, route: { params: { child: { id: 1 }, newsItem, }, }, ...customProps, } return render() } test('gets article details using useNewsDetails', () => { setup() expect(useNewsDetails).toHaveBeenCalledWith({ id: 1 }, defaultNewsItem) }) test('renders an article', () => { const screen = setup() expect(screen.getByText(/nu blir det köttbullar/i)).toBeTruthy() expect(screen.getByText('Publicerad: 15 feb 2021 10:13')).toBeTruthy() expect(screen.getByText('Uppdaterad: 15 feb 2021 10:13')).toBeTruthy() }) test('renders an article without published date if date is invalid', () => { const newsItemWithoutPublishedDate = { ...defaultNewsItem, published: '2020-08-16T21:10:00.000+02:0', } const screen = setup({ newsItem: newsItemWithoutPublishedDate }) expect(screen.getByText(/nu blir det köttbullar/i)).toBeTruthy() expect(screen.getByText('Uppdaterad: 15 feb 2021 10:13')).toBeTruthy() expect(screen.queryByText('Publicerad: Invalid DateTime')).toBeFalsy() }) test('renders an article without modified date if date is invalid', () => { const newsItemWithoutPublishedDate = { ...defaultNewsItem, modified: null, } const screen = setup({ newsItem: newsItemWithoutPublishedDate }) expect(screen.getByText(/nu blir det köttbullar/i)).toBeTruthy() expect(screen.getByText('Publicerad: 15 feb 2021 10:13')).toBeTruthy() expect(screen.queryByText('Uppdaterad: Invalid DateTime')).toBeFalsy() })