index.test.tsx57 lines · main
1import { screen } from '@testing-library/react'
2import { beforeAll, describe, expect, test, vi } from 'vitest'
3
4import { customRender as render } from '@/tests/lib/custom-render'
5
6vi.mock('@/components/interfaces/Home/Home', () => ({
7 Home: () => <div data-testid="old-home" />,
8}))
9
10vi.mock('@/components/interfaces/ProjectHome/Home', () => ({
11 ProjectHome: () => <div data-testid="project-home" />,
12}))
13
14vi.mock('@/components/layouts/DefaultLayout', () => ({
15 default: ({ children }: { children: React.ReactNode }) => <>{children}</>,
16}))
17
18vi.mock('@/components/layouts/ProjectLayout', () => ({
19 ProjectLayoutWithAuth: ({ children }: { children: React.ReactNode }) => <>{children}</>,
20}))
21
22vi.mock('@/lib/gotrue', () => ({
23 auth: { onAuthStateChange: vi.fn() },
24}))
25
26describe('when IS_PLATFORM is true', () => {
27 beforeAll(() => {
28 vi.doMock('common', async (importOriginal: () => Promise<any>) => {
29 const mod = await importOriginal()
30 return { ...mod, IS_PLATFORM: true }
31 })
32 })
33
34 test('renders ProjectHome', async () => {
35 const { default: HomePage } = await import('@/pages/project/[ref]/index')
36 render(<HomePage dehydratedState={undefined} />)
37 expect(screen.getByTestId('project-home')).toBeInTheDocument()
38 expect(screen.queryByTestId('old-home')).not.toBeInTheDocument()
39 })
40})
41
42describe('when IS_PLATFORM is false', () => {
43 beforeAll(() => {
44 vi.resetModules()
45 vi.doMock('common', async (importOriginal: () => Promise<any>) => {
46 const mod = await importOriginal()
47 return { ...mod, IS_PLATFORM: false }
48 })
49 })
50
51 test('renders Home', async () => {
52 const { default: HomePage } = await import('@/pages/project/[ref]/index')
53 render(<HomePage dehydratedState={undefined} />)
54 expect(screen.getByTestId('old-home')).toBeInTheDocument()
55 expect(screen.queryByTestId('project-home')).not.toBeInTheDocument()
56 })
57})