render-with-context.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. import { LayoutProvider } from '../../../frontend/js/shared/context/layout-context'
  8. export function renderWithEditorContext(
  9. children,
  10. { user = { id: '123abd' }, projectId = 'project123' } = {}
  11. ) {
  12. window.user = user || window.user
  13. window.project_id = projectId != null ? projectId : window.project_id
  14. window._ide = {
  15. $scope: {
  16. project: {
  17. owner: {
  18. _id: '124abd'
  19. }
  20. },
  21. ui: {
  22. chatOpen: true
  23. },
  24. $watch: () => {}
  25. },
  26. socket: {
  27. on: sinon.stub(),
  28. removeListener: sinon.stub()
  29. }
  30. }
  31. return render(
  32. <ApplicationProvider>
  33. <EditorProvider
  34. openDoc={() => {}}
  35. onlineUsersArray={[]}
  36. $scope={window._ide.$scope}
  37. >
  38. <LayoutProvider $scope={window._ide.$scope}>{children}</LayoutProvider>
  39. </EditorProvider>
  40. </ApplicationProvider>
  41. )
  42. }
  43. export function renderWithChatContext(children, { user, projectId } = {}) {
  44. return renderWithEditorContext(<ChatProvider>{children}</ChatProvider>, {
  45. user,
  46. projectId
  47. })
  48. }
  49. export function cleanUpContext() {
  50. delete window.user
  51. delete window.project_id
  52. delete window._ide
  53. }