render-with-context.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { render } from '@testing-library/react'
  2. import fetchMock from 'fetch-mock'
  3. import React from 'react'
  4. import { ProjectListProvider } from '../../../../../frontend/js/features/project-list/context/project-list-context'
  5. import { Project } from '../../../../../types/project/dashboard/api'
  6. import { projectsData } from '../fixtures/projects-data'
  7. type Options = {
  8. projects?: Project[]
  9. }
  10. export function renderWithProjectListContext(
  11. component: React.ReactElement,
  12. options: Options = {}
  13. ) {
  14. let { projects } = options
  15. if (!projects) {
  16. projects = projectsData
  17. }
  18. fetchMock.post('express:/api/project', {
  19. status: 200,
  20. body: { projects, totalSize: projects.length },
  21. })
  22. fetchMock.get('express:/system/messages', {
  23. status: 200,
  24. body: [],
  25. })
  26. const ProjectListProviderWrapper = ({
  27. children,
  28. }: {
  29. children: React.ReactNode
  30. }) => <ProjectListProvider>{children}</ProjectListProvider>
  31. return render(component, {
  32. wrapper: ProjectListProviderWrapper,
  33. })
  34. }
  35. export function resetProjectListContextFetch() {
  36. fetchMock.reset()
  37. }