2020-02-25 15:16:44 +01:00
|
|
|
import React from 'react'
|
2020-10-10 15:37:05 +02:00
|
|
|
import { render, fireEvent, waitFor } from '@testing-library/react'
|
2020-02-25 15:16:44 +01:00
|
|
|
import AppProvider from '../src/renderer/store/AppProvider'
|
|
|
|
import PriceProvider from '../src/renderer/store/PriceProvider'
|
2020-02-26 21:49:11 +01:00
|
|
|
import { PriceContext, AppContext } from '../src/renderer/store/createContext'
|
2020-02-25 15:16:44 +01:00
|
|
|
import { priceContext } from './__fixtures__/context'
|
|
|
|
|
|
|
|
describe('Providers', () => {
|
2020-02-26 21:49:11 +01:00
|
|
|
describe('PriceProvider', () => {
|
|
|
|
it('renders without crashing', async () => {
|
|
|
|
const { getByText } = render(
|
|
|
|
<PriceProvider>
|
|
|
|
<PriceContext.Consumer>
|
|
|
|
{({ priceChanges }) => JSON.stringify(priceChanges)}
|
|
|
|
</PriceContext.Consumer>
|
|
|
|
</PriceProvider>
|
|
|
|
)
|
|
|
|
expect(getByText(/eur/)).toBeInTheDocument()
|
|
|
|
})
|
2020-02-25 15:16:44 +01:00
|
|
|
})
|
|
|
|
|
2020-02-26 21:49:11 +01:00
|
|
|
describe('AppProvider', () => {
|
|
|
|
it('renders without crashing', async () => {
|
|
|
|
const { getByText } = render(
|
|
|
|
<PriceContext.Provider value={priceContext}>
|
|
|
|
<AppProvider>
|
|
|
|
<AppContext.Consumer>
|
|
|
|
{({ toggleCurrencies }) => (
|
|
|
|
<button onClick={() => toggleCurrencies('eur')}>Click</button>
|
|
|
|
)}
|
|
|
|
</AppContext.Consumer>
|
|
|
|
</AppProvider>
|
|
|
|
</PriceContext.Provider>
|
|
|
|
)
|
2020-10-10 15:37:05 +02:00
|
|
|
await waitFor(() => getByText('Click'))
|
2020-02-26 21:49:11 +01:00
|
|
|
expect(getByText('Click')).toBeInTheDocument()
|
|
|
|
|
|
|
|
fireEvent.click(getByText('Click'))
|
|
|
|
})
|
2020-02-25 15:16:44 +01:00
|
|
|
})
|
|
|
|
})
|