render-with-context.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React from 'react'
  2. import { render } from '@testing-library/react'
  3. import { ApplicationProvider } from '../../../frontend/js/shared/context/application-context'
  4. import { EditorProvider } from '../../../frontend/js/shared/context/editor-context'
  5. import sinon from 'sinon'
  6. import { ChatProvider } from '../../../frontend/js/features/chat/context/chat-context'
  7. export function renderWithEditorContext(
  8. children,
  9. { user = { id: '123abd' }, projectId = 'project123' } = {}
  10. ) {
  11. window.user = user || window.user
  12. window.project_id = projectId != null ? projectId : window.project_id
  13. window._ide = {
  14. $scope: {
  15. project: {
  16. owner: {
  17. _id: '124abd'
  18. }
  19. }
  20. },
  21. socket: {
  22. on: sinon.stub(),
  23. removeListener: sinon.stub()
  24. }
  25. }
  26. return render(
  27. <ApplicationProvider>
  28. <EditorProvider
  29. setChatIsOpen={() => {}}
  30. setChatIsOpenAngular={() => {}}
  31. openDoc={() => {}}
  32. onlineUsersArray={[]}
  33. >
  34. {children}
  35. </EditorProvider>
  36. </ApplicationProvider>
  37. )
  38. }
  39. export function renderWithChatContext(children, { user, projectId } = {}) {
  40. global.localStorage.setItem('editor.ui.chat.open', true)
  41. return renderWithEditorContext(<ChatProvider>{children}</ChatProvider>, {
  42. user,
  43. projectId
  44. })
  45. }