Skip to content

Commit

Permalink
Add test with shouldUseIOFetching flag
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasecdb committed Jul 20, 2022
1 parent ab7e801 commit d33bdb3
Showing 1 changed file with 39 additions and 28 deletions.
67 changes: 39 additions & 28 deletions react/__tests__/AddressRules.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,22 @@ import braRules from '../country/BRA'
import { getField } from '../selectors/fields'

describe('AddressRules', () => {
let loadedRules: PostalCodeRules | null = null

const LoadedRulesComponent = () => {
loadedRules = useAddressRules()

if (loadedRules == null) {
return null
}

return <span>loaded rules</span>
}

beforeEach(() => {
loadedRules = null
})

it('should load the defined rules', async () => {
let rules: PostalCodeRules | null = null

Expand Down Expand Up @@ -37,30 +53,18 @@ describe('AddressRules', () => {
.spyOn(global.console, 'warn')
.mockImplementation(() => {})

let rules: PostalCodeRules | null = null

const MyComponent = () => {
rules = useAddressRules()

if (rules == null) {
return null
}

return <span>loaded rules</span>
}

render(
<AddressRules
country="XXX"
fetch={(country) => import(`../country/${country}`)}
>
<MyComponent />
<LoadedRulesComponent />
</AddressRules>
)

await screen.findByText('loaded rules')

expect(rules).toEqual(defaultRules)
expect(loadedRules).toEqual(defaultRules)
expect(warnSpy).toHaveBeenCalledWith(
"Couldn't load rules for country XXX, using default rules instead."
)
Expand All @@ -71,37 +75,44 @@ describe('AddressRules', () => {
.spyOn(global.console, 'warn')
.mockImplementation(() => {})

let rules: PostalCodeRules | null = null

const MyComponent = () => {
rules = useAddressRules()

if (rules == null) {
return null
}

return <span>loaded rules</span>
}

render(
<AddressRules
country="BRA"
fetch={(country) =>
Promise.reject(new Error(`Cannot find module '${country}'`))
}
>
<MyComponent />
<LoadedRulesComponent />
</AddressRules>
)

await screen.findByText('loaded rules')

expect(rules).toEqual(defaultRules)
expect(loadedRules).toEqual(defaultRules)
expect(warnSpy).toHaveBeenCalledWith(
"Couldn't load rules for country BRA, using default rules instead."
)
})

it('should use default rules with IO fetching when country does not exist', async () => {
const warnSpy = jest
.spyOn(global.console, 'warn')
.mockImplementation(() => {})

render(
<AddressRules country="XXX" shouldUseIOFetching>
<LoadedRulesComponent />
</AddressRules>
)

await screen.findByText('loaded rules')

expect(loadedRules).toEqual(defaultRules)
expect(warnSpy).toHaveBeenCalledWith(
"Couldn't load rules for country XXX, using default rules instead."
)
})

it('should merge geolocation field rules with default field rules', async () => {
let rules: PostalCodeRules | null = null

Expand Down

0 comments on commit d33bdb3

Please sign in to comment.