import React from 'react'; import { render, screen } from '@testing-library/react-native'; import { Provider } from 'react-redux'; import { mockedStore } from '../../reducers/mockedStore'; import { SupportedVersionsWarning } from './SupportedVersionsWarning'; import { setUser } from '../../actions/login'; import { setSupportedVersions } from '../../actions/supportedVersions'; import { selectServerSuccess } from '../../actions/server'; const Render = () => ( ); const TODAY = '2023-04-01T00:00:00.000Z'; jest.useFakeTimers('modern'); jest.setSystemTime(new Date(TODAY)); describe('SupportedVersionsWarning', () => { test('empty', () => { render(); expect(screen.queryByTestId('sv-warn-title')).toBeNull(); expect(screen.queryByTestId('sv-warn-subtitle')).toBeNull(); expect(screen.queryByTestId('sv-warn-description')).toBeNull(); expect(screen.queryByTestId('sv-warn-button')).toBeNull(); }); test('render properly', () => { mockedStore.dispatch( setUser({ language: 'en', username: 'rocket.cat', emails: [{ address: 'test@test.com', verified: true }] }) ); mockedStore.dispatch(selectServerSuccess({ server: 'https://example.com', version: '1.0', name: 'Test Server' })); mockedStore.dispatch( setSupportedVersions({ status: 'warn', message: { link: 'Docs page', title: 'title_token', subtitle: 'subtitle_token', description: 'description_token', remainingDays: 10, type: 'alert', params: { test_a: 'test A works', test_b: ':)' } }, i18n: { en: { title_token: '{{instance_ws_name}} is running an unsupported version of Rocket.Chat', subtitle_token: 'Mobile and desktop app access to {{instance_domain}} will be cut off in {{remaining_days}} days.', description_token: 'User: {{instance_username}} Email: {{instance_email}} Version: {{instance_version}} Extra params: {{test_a}} {{test_b}}' }, 'pt-BR': { title_token: 'Alô título', subtitle_token: '{{instance_ws_name}} {{instance_domain}} {{remaining_days}} {{instance_username}} {{instance_email}} {{instance_version}} {{test_a}} {{test_b}}' } }, expiration: '2023-05-01T00:00:00.000Z' }) ); render(); expect(screen.getByText('Test Server is running an unsupported version of Rocket.Chat')).toBeOnTheScreen(); expect( screen.getByText('Mobile and desktop app access to https://example.com will be cut off in 30 days.') ).toBeOnTheScreen(); expect( screen.getByText('User: rocket.cat Email: test@test.com Version: 1.0 Extra params: test A works :)') ).toBeOnTheScreen(); expect(screen.getByText('Learn more')).toBeOnTheScreen(); }); test('render another language', () => { mockedStore.dispatch(setUser({ language: 'pt-BR' })); render(); expect(screen.getByText('Alô título')).toBeOnTheScreen(); expect(screen.getByText('Test Server https://example.com 30 rocket.cat test@test.com 1.0 test A works :)')).toBeOnTheScreen(); expect(screen.queryByTestId('sv-warn-description')).toBeNull(); expect(screen.getByText('Learn more')).toBeOnTheScreen(); }); test('user on unsupported language and fallback to en', () => { mockedStore.dispatch(setUser({ language: 'it' })); render(); expect(screen.getByText('Test Server is running an unsupported version of Rocket.Chat')).toBeOnTheScreen(); expect( screen.getByText('Mobile and desktop app access to https://example.com will be cut off in 30 days.') ).toBeOnTheScreen(); expect( screen.getByText('User: rocket.cat Email: test@test.com Version: 1.0 Extra params: test A works :)') ).toBeOnTheScreen(); expect(screen.getByText('Learn more')).toBeOnTheScreen(); }); });