import React from 'react'
import renderer from 'react-test-renderer'
import { mount } from 'enzyme'
import exenv from 'exenv'
import { fireEvent, render, screen } from '@testing-library/react'
import { Snackbar as StyledSnackbar } from './index'
import { Snackbar } from './Snackbar'
const close = jest.fn()
describe('Snackbar', () => {
it('should not have changed', () => {
exenv.canUseDOM = false
const snackbarServerSide = renderer
.create(
Oups
,
)
.toJSON()
exenv.canUseDOM = true
expect(snackbarServerSide).toMatchSnapshot()
})
it('should show the snackbar when isOpen is true', () => {
render(
Oups
,
)
const snackbar = screen.getByRole('alert')
expect(snackbar).toBeInTheDocument()
expect(snackbar).toHaveTextContent('Oups')
})
it('should npt show the snackbar when isOpen is false', () => {
render(
Oups
,
)
const snackbar = screen.queryByRole('alert')
expect(snackbar).not.toBeInTheDocument()
})
it('should call close method when click on cross button', () => {
render()
fireEvent.click(screen.getByRole('button'))
expect(close).toHaveBeenCalled()
})
it('should render the same layout on client and server side', () => {
exenv.canUseDOM = false
const serverSide = mount()
exenv.canUseDOM = true
const clientSide = mount()
expect(serverSide.html()).toEqual(clientSide.html())
})
})