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'; const TestableComponent = () => ( Sign in ); describe('', () => { let store; beforeEach(() => { store = { me: false, accounts: ImmutableMap({ '1': normalizeAccount({ id: '1', acct: 'username', display_name: 'My name', avatar: 'test.jpg', }), }), }; }); describe('when logged out', () => { describe('with guest experience disabled', () => { beforeEach(() => { store = { ...store, soapbox: ImmutableMap({ guestExperience: false }) }; }); 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 any other page', () => { it('should redirect to the login page', async() => { render( , {}, store, { initialEntries: ['/@username/media'] }, ); await waitFor(() => { expect(screen.getByTestId('sign-in')).toHaveTextContent('Sign in'); }); }); }); }); }); });