mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-28 19:41:33 +02:00
[web] Fix tooltip show and hide GitOrigin-RevId: 3dfb7189adc5339b635696c9e84bf714a9a353dd
103 lines
2.9 KiB
TypeScript
103 lines
2.9 KiB
TypeScript
import { useState } from 'react'
|
|
import OLTooltip from '@/shared/components/ol/ol-tooltip'
|
|
|
|
describe('<OLTooltip />', function () {
|
|
it('calls the bound handler and blur then hides text on click', function () {
|
|
const clickHandler = cy.stub().as('clickHandler')
|
|
const blurHandler = cy.stub().as('blurHandler')
|
|
const description = 'foo'
|
|
const btnText = 'Click me!'
|
|
|
|
cy.mount(
|
|
<div
|
|
style={{
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
height: '100vh',
|
|
}}
|
|
>
|
|
<OLTooltip id="abc" description={description}>
|
|
<button onClick={clickHandler} onBlur={blurHandler}>
|
|
{btnText}
|
|
</button>
|
|
</OLTooltip>
|
|
</div>
|
|
)
|
|
|
|
cy.findByRole('button', { name: btnText }).as('button')
|
|
cy.get('@button').trigger('mouseover')
|
|
cy.findByText(description)
|
|
cy.get('@button').click()
|
|
cy.get('@clickHandler').should('have.been.calledOnce')
|
|
cy.get('@blurHandler').should('have.been.calledOnce')
|
|
cy.findByText(description).should('not.exist')
|
|
})
|
|
|
|
it('hides the tooltip when Escape key is pressed', function () {
|
|
const description = 'Press Escape to close'
|
|
const btnText = 'Hover me!'
|
|
|
|
cy.mount(
|
|
<div
|
|
style={{
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
height: '100vh',
|
|
}}
|
|
>
|
|
<OLTooltip id="esc" description={description}>
|
|
<button>{btnText}</button>
|
|
</OLTooltip>
|
|
</div>
|
|
)
|
|
|
|
cy.findByRole('button', { name: btnText }).as('button')
|
|
cy.get('@button').trigger('mouseover')
|
|
cy.findByText(description)
|
|
cy.get('@button').trigger('mouseout')
|
|
cy.get('@button').focus()
|
|
cy.findByText(description)
|
|
cy.get('body').type('{esc}')
|
|
cy.findByText(description).should('not.exist')
|
|
})
|
|
|
|
it('does not re-show the tooltip when the hidden prop transitions from true to false', function () {
|
|
const description = 'tooltip content'
|
|
|
|
function Wrapper() {
|
|
const [hidden, setHidden] = useState(false)
|
|
return (
|
|
<OLTooltip id="abc" description={description} hidden={hidden}>
|
|
<button onClick={() => setHidden(h => !h)}>button</button>
|
|
</OLTooltip>
|
|
)
|
|
}
|
|
|
|
cy.mount(
|
|
<div
|
|
style={{
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
height: '100vh',
|
|
}}
|
|
>
|
|
<Wrapper />
|
|
</div>
|
|
)
|
|
|
|
cy.findByRole('button', { name: 'button' }).as('tooltip-btn')
|
|
cy.get('@tooltip-btn').trigger('mouseover')
|
|
cy.findByText(description)
|
|
cy.get('@tooltip-btn').click()
|
|
cy.findByText(description).should('not.exist')
|
|
cy.get('@tooltip-btn').trigger('mouseout')
|
|
cy.get('@tooltip-btn').click()
|
|
cy.findByText(description).should('not.exist')
|
|
cy.get('@tooltip-btn').trigger('mouseover')
|
|
cy.findByText(description)
|
|
})
|
|
})
|