Skip to content

Commit

Permalink
test(sanity): update tests after refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
RitaDias committed Oct 3, 2024
1 parent 5512a2a commit 8f2c016
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 62 deletions.
Original file line number Diff line number Diff line change
@@ -1,24 +1,15 @@
import {beforeAll, describe, expect, it, jest} from '@jest/globals'
import {studioTheme, ThemeProvider} from '@sanity/ui'
import {render, screen} from '@testing-library/react'
import {type SanityClient} from 'sanity'

import {LocaleProviderBase} from '../../i18n/components/LocaleProvider'
import {prepareI18n} from '../../i18n/i18nConfig'
import {usEnglishLocale} from '../../i18n/locales'
import {useSource} from '../../studio/source'
import {createMockSanityClient} from '../../../../test/mocks/mockSanityClient'
import {createTestProvider} from '../../../../test/testUtils/TestProvider'
import {FormBuilderInputErrorBoundary} from './FormBuilderInputErrorBoundary'

// Mock dependencies
jest.mock('../../studio/source', () => ({
useSource: jest.fn(),
}))

jest.mock('use-hot-module-reload', () => ({
useHotModuleReload: jest.fn(),
}))

const useSourceMock = useSource as jest.Mock

describe('FormBuilderInputErrorBoundary', () => {
beforeAll(() => {
jest.clearAllMocks()
Expand All @@ -36,32 +27,29 @@ describe('FormBuilderInputErrorBoundary', () => {

it('calls onStudioError when an error is caught', async () => {
const onStudioError = jest.fn()
useSourceMock.mockReturnValue({onStudioError})

const ThrowErrorComponent = () => {
throw new Error('An EXPECTED, testing error occurred!')
}

const locales = [usEnglishLocale]
const {i18next} = prepareI18n({
projectId: 'test',
dataset: 'test',
name: 'test',
const client = createMockSanityClient() as unknown as SanityClient

const TestProvider = await createTestProvider({
client,
config: {
name: 'default',
projectId: 'test',
dataset: 'test',
onStudioError,
},
})

render(
<ThemeProvider theme={studioTheme}>
<LocaleProviderBase
projectId={'test'}
sourceId={'test'}
locales={locales}
i18next={i18next}
>
<FormBuilderInputErrorBoundary>
<ThrowErrorComponent />
</FormBuilderInputErrorBoundary>
</LocaleProviderBase>
</ThemeProvider>,
<TestProvider>
<FormBuilderInputErrorBoundary>
<ThrowErrorComponent />
</FormBuilderInputErrorBoundary>
</TestProvider>,
)

expect(onStudioError).toHaveBeenCalledTimes(1)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import {describe, expect, it, jest} from '@jest/globals'
import {ErrorBoundary, studioTheme, ThemeProvider} from '@sanity/ui'
import {ErrorBoundary} from '@sanity/ui'
import {render, screen} from '@testing-library/react'
import {type SanityClient} from 'sanity'

import {LocaleProviderBase, usEnglishLocale} from '../../i18n'
import {prepareI18n} from '../../i18n/i18nConfig'
import {useSource} from '../source'
import {createMockSanityClient} from '../../../../test/mocks/mockSanityClient'
import {createTestProvider} from '../../../../test/testUtils/TestProvider'
import {WorkspaceRouterProvider} from './WorkspaceRouterProvider'

jest.mock('../router/RouterHistoryContext', () => ({
Expand All @@ -14,10 +14,6 @@ jest.mock('../router/RouterHistoryContext', () => ({
}),
}))

jest.mock('../source', () => ({
useSource: jest.fn(),
}))

jest.mock('../router', () => ({
createRouter: () => ({
getBasePath: jest.fn(),
Expand All @@ -36,8 +32,6 @@ jest.mock('./WorkspaceRouterProvider', () => ({
useRouterFromWorkspaceHistory: jest.fn(),
}))

const useSourceMock = useSource as jest.Mock

describe('WorkspaceRouterProvider', () => {
const LoadingComponent = () => <div>Loading...</div>
const children = <div>Children</div>
Expand Down Expand Up @@ -76,37 +70,34 @@ describe('WorkspaceRouterProvider', () => {
expect(screen.getByText('Children')).toBeInTheDocument()
})

it('calls onStudioError when an error is caught', () => {
it('calls onStudioError when an error is caught', async () => {
const onStudioError = jest.fn()
useSourceMock.mockReturnValue({onStudioError})

const ThrowErrorComponent = () => {
throw new Error('An EXPECTED, testing error occurred!')
}

const locales = [usEnglishLocale]
const {i18next} = prepareI18n({
projectId: 'test',
dataset: 'test',
name: 'test',
const client = createMockSanityClient() as unknown as SanityClient

const TestProvider = await createTestProvider({
client,
config: {
name: 'default',
projectId: 'test',
dataset: 'test',
onStudioError,
},
})

render(
<ThemeProvider theme={studioTheme}>
<LocaleProviderBase
projectId={'test'}
sourceId={'test'}
locales={locales}
i18next={i18next}
>
{/* prevents thrown error from breaking the test */}
<ErrorBoundary onCatch={({error, info}) => <></>}>
<WorkspaceRouterProvider LoadingComponent={LoadingComponent} workspace={workspace}>
<ThrowErrorComponent />
</WorkspaceRouterProvider>
</ErrorBoundary>
</LocaleProviderBase>
</ThemeProvider>,
<TestProvider>
{/* prevents thrown error from breaking the test */}
<ErrorBoundary onCatch={({error, info}) => <></>}>
<WorkspaceRouterProvider LoadingComponent={LoadingComponent} workspace={workspace}>
<ThrowErrorComponent />
</WorkspaceRouterProvider>
</ErrorBoundary>
</TestProvider>,
)

expect(onStudioError).toHaveBeenCalledTimes(1)
Expand Down

0 comments on commit 8f2c016

Please sign in to comment.