render-with-context.tsx 1005 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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. const ProjectListProviderWrapper = ({
  23. children,
  24. }: {
  25. children: React.ReactNode
  26. }) => <ProjectListProvider>{children}</ProjectListProvider>
  27. return render(component, {
  28. wrapper: ProjectListProviderWrapper,
  29. })
  30. }
  31. export function resetProjectListContextFetch() {
  32. fetchMock.reset()
  33. }