Rocket.Chat.ReactNative/app/containers/SupportedVersions/SupportedVersionsWarning.te...

99 lines
3.7 KiB
TypeScript

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 = () => (
<Provider store={mockedStore}>
<SupportedVersionsWarning />
</Provider>
);
const TODAY = '2023-04-01T00:00:00.000Z';
jest.useFakeTimers('modern');
jest.setSystemTime(new Date(TODAY));
describe('SupportedVersionsWarning', () => {
test('empty', () => {
render(<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(<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(<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(<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();
});
});