@revoloo/cypress6
Version:
Cypress.io end to end testing tool
99 lines (77 loc) • 2.51 kB
JavaScript
import Cell from '@/components/Cell'
import { mount } from '@cypress/vue'
describe('Cell', () => {
beforeEach(() => {
cy.viewport(30, 30)
})
describe('solved', () => {
it('renders successfully with a letter and number', () => {
const cellConfig = { letter: 'A', number: 1, showLetter: true }
mount(Cell, { propsData: cellConfig })
cy.get('[data-testid=cell]')
.should('contain.text', cellConfig.number)
cy.get('[data-testid=cell-input]')
.should('contain.value', cellConfig.letter)
})
})
describe('blacked out', () => {
it('renders a blocked out cell when showLetter is set and its blocked out', () => {
const cellConfig = { letter: '.', blockedOut: true, showLetter: true }
mount(Cell, { propsData: cellConfig })
cy.get('[data-testid=cell]').then((cell) => {
expect(cell).to.have.class('blocked-out')
})
})
it('renders a blocked out cell when the prop is set', () => {
const cellConfig = { letter: '.', blockedOut: true }
mount(Cell, { propsData: cellConfig })
cy.get('[data-testid=cell]').then((cell) => {
expect(cell).to.have.class('blocked-out')
})
})
})
describe('#showLetter', () => {
it('when false, it does not render the letter', () => {
const cellConfig = { letter: 'A', number: 1, showLetter: false }
mount(Cell, { propsData: cellConfig })
cy.get('[data-testid=cell-input]')
.should('not.contain.value', cellConfig.letter)
})
})
describe('input', () => {
let spy
beforeEach(() => {
const cellConfig = {
letter: 'A',
showLetter: false,
editable: true,
}
spy = cy.spy()
mount(Cell, { propsData: cellConfig, listeners: { input: spy } })
cy.get('[data-testid=cell-input]').as('input')
})
it('emits a new letter when edited', () => {
cy.get('@input')
.click()
.type('B', { force: true })
.then(() => {
expect(spy).to.have.been.calledWith('B')
})
})
it('only accepts one letter at a time', () => {
cy.get('@input')
.click()
.type('B', { force: true })
.type('D', { force: true })
.should('have.value', 'D')
.then(() => {
expect(spy).to.have.been.calledWith('B')
expect(spy).to.have.been.calledWith('D')
})
.clear({ force: true })
.then(() => {
expect(spy).to.have.been.calledWith('')
})
})
})
})