|
|
@@ -1,13 +1,10 @@
|
|
|
import React from 'react'
|
|
|
import { expect } from 'chai'
|
|
|
-import {
|
|
|
- render,
|
|
|
- screen,
|
|
|
- waitForElementToBeRemoved
|
|
|
-} from '@testing-library/react'
|
|
|
+import { screen, waitForElementToBeRemoved } from '@testing-library/react'
|
|
|
import fetchMock from 'fetch-mock'
|
|
|
|
|
|
import ChatPane from '../../../../../frontend/js/features/chat/components/chat-pane'
|
|
|
+import { renderWithEditorContext } from '../../../helpers/render-with-context'
|
|
|
import {
|
|
|
stubChatStore,
|
|
|
stubMathJax,
|
|
|
@@ -53,31 +50,44 @@ describe('<ChatPane />', function() {
|
|
|
|
|
|
it('renders multiple messages', async function() {
|
|
|
fetchMock.get(/messages/, testMessages)
|
|
|
- render(<ChatPane resetUnreadMessages={() => {}} />)
|
|
|
+ // unmounting before `beforeEach` block is executed is required to prevent cleanup errors
|
|
|
+ const { unmount } = renderWithEditorContext(
|
|
|
+ <ChatPane resetUnreadMessages={() => {}} />
|
|
|
+ )
|
|
|
|
|
|
await screen.findByText('a message')
|
|
|
await screen.findByText('another message')
|
|
|
+ unmount()
|
|
|
})
|
|
|
|
|
|
it('A loading spinner is rendered while the messages are loading, then disappears', async function() {
|
|
|
fetchMock.get(/messages/, [])
|
|
|
- render(<ChatPane resetUnreadMessages={() => {}} />)
|
|
|
+ const { unmount } = renderWithEditorContext(
|
|
|
+ <ChatPane resetUnreadMessages={() => {}} />
|
|
|
+ )
|
|
|
await waitForElementToBeRemoved(() => screen.getByText('Loading…'))
|
|
|
+ unmount()
|
|
|
})
|
|
|
|
|
|
describe('"send your first message" placeholder', function() {
|
|
|
it('is rendered when there are no messages ', async function() {
|
|
|
fetchMock.get(/messages/, [])
|
|
|
- render(<ChatPane resetUnreadMessages={() => {}} />)
|
|
|
+ const { unmount } = renderWithEditorContext(
|
|
|
+ <ChatPane resetUnreadMessages={() => {}} />
|
|
|
+ )
|
|
|
await screen.findByText('Send your first message to your collaborators')
|
|
|
+ unmount()
|
|
|
})
|
|
|
|
|
|
it('is not rendered when messages are displayed', function() {
|
|
|
fetchMock.get(/messages/, testMessages)
|
|
|
- render(<ChatPane resetUnreadMessages={() => {}} />)
|
|
|
+ const { unmount } = renderWithEditorContext(
|
|
|
+ <ChatPane resetUnreadMessages={() => {}} />
|
|
|
+ )
|
|
|
expect(
|
|
|
screen.queryByText('Send your first message to your collaborators')
|
|
|
).to.not.exist
|
|
|
+ unmount()
|
|
|
})
|
|
|
})
|
|
|
})
|