88 lines
2.3 KiB
TypeScript
88 lines
2.3 KiB
TypeScript
import { Map as ImmutableMap } from 'immutable';
|
|
import React from 'react';
|
|
import { Route, Switch } from 'react-router-dom';
|
|
|
|
import { normalizeAccount } from 'soapbox/normalizers';
|
|
|
|
import { render, rootState } from '../../../../jest/test-helpers';
|
|
import ChatWidget from '../chat-widget/chat-widget';
|
|
|
|
const id = '1';
|
|
const account = normalizeAccount({
|
|
id,
|
|
acct: 'justin-username',
|
|
display_name: 'Justin L',
|
|
avatar: 'test.jpg',
|
|
chats_onboarded: true,
|
|
});
|
|
|
|
const store = rootState
|
|
.set('me', id)
|
|
.set('accounts', ImmutableMap({
|
|
[id]: account,
|
|
}) as any);
|
|
|
|
describe('<ChatWidget />', () => {
|
|
describe('when on the /chats endpoint', () => {
|
|
it('hides the widget', async () => {
|
|
const App = () => (
|
|
<Switch>
|
|
<Route path='/chats' exact><span>Chats page <ChatWidget /></span></Route>
|
|
<Route path='/' exact><span data-testid='home'>Homepage <ChatWidget /></span></Route>
|
|
</Switch>
|
|
);
|
|
|
|
const screen = render(
|
|
<App />,
|
|
{},
|
|
store,
|
|
{ initialEntries: ['/chats'] },
|
|
);
|
|
|
|
expect(screen.queryAllByTestId('pane')).toHaveLength(0);
|
|
});
|
|
});
|
|
|
|
describe('when the user has not onboarded chats', () => {
|
|
it('hides the widget', async () => {
|
|
const accountWithoutChats = normalizeAccount({
|
|
id,
|
|
acct: 'justin-username',
|
|
display_name: 'Justin L',
|
|
avatar: 'test.jpg',
|
|
chats_onboarded: false,
|
|
});
|
|
const newStore = store.set('accounts', ImmutableMap({
|
|
[id]: accountWithoutChats,
|
|
}) as any);
|
|
|
|
const screen = render(
|
|
<ChatWidget />,
|
|
{},
|
|
newStore,
|
|
);
|
|
|
|
expect(screen.queryAllByTestId('pane')).toHaveLength(0);
|
|
});
|
|
});
|
|
|
|
describe('when the user is onboarded and the endpoint is not /chats', () => {
|
|
it('shows the widget', async () => {
|
|
const App = () => (
|
|
<Switch>
|
|
<Route path='/chats' exact><span>Chats page <ChatWidget /></span></Route>
|
|
<Route path='/' exact><span data-testid='home'>Homepage <ChatWidget /></span></Route>
|
|
</Switch>
|
|
);
|
|
|
|
const screen = render(
|
|
<App />,
|
|
{},
|
|
store,
|
|
{ initialEntries: ['/'] },
|
|
);
|
|
|
|
expect(screen.queryAllByTestId('pane')).toHaveLength(1);
|
|
});
|
|
});
|
|
});
|