import { Map as ImmutableMap } from 'immutable'; import React from 'react'; import { Route, Switch } from 'react-router-dom'; import { render, screen, waitFor } from '../../../jest/test-helpers'; import { normalizeAccount } from '../../../normalizers'; import UI from '../index'; import { WrappedRoute } from '../util/react-router-helpers'; const TestableComponent = () => ( Sign in {/* WrappedRount will redirect to /login for logged out users... which will resolve to the route above! */} null} /> ); describe('', () => { let store: any; beforeEach(() => { store = { me: false, accounts: ImmutableMap({ '1': normalizeAccount({ id: '1', acct: 'username', display_name: 'My name', avatar: 'test.jpg', }), }), }; }); describe('when logged out', () => { describe('when viewing a Profile Page', () => { it('should render the Profile page', async() => { render( , {}, store, { initialEntries: ['/@username'] }, ); await waitFor(() => { expect(screen.getByTestId('cta-banner')).toHaveTextContent('Sign up now to discuss'); }); }); }); describe('when viewing a Status Page', () => { it('should render the Status page', async() => { render( , {}, store, { initialEntries: ['/@username/posts/12'] }, ); await waitFor(() => { expect(screen.getByTestId('cta-banner')).toHaveTextContent('Sign up now to discuss'); }); }); }); describe('when viewing Notifications', () => { it('should redirect to the login page', async() => { render( , {}, store, { initialEntries: ['/notifications'] }, ); await waitFor(() => { expect(screen.getByTestId('sign-in')).toHaveTextContent('Sign in'); }); }); }); }); });