mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-18 09:04:35 +01:00
96 lines
2.3 KiB
JavaScript
96 lines
2.3 KiB
JavaScript
|
/// <reference types="cypress" />
|
||
|
|
||
|
context('Spies, Stubs, and Clock', () => {
|
||
|
it('cy.spy() - wrap a method in a spy', () => {
|
||
|
// https://on.cypress.io/spy
|
||
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')
|
||
|
|
||
|
const obj = {
|
||
|
foo () {},
|
||
|
}
|
||
|
|
||
|
const spy = cy.spy(obj, 'foo').as('anyArgs')
|
||
|
|
||
|
obj.foo()
|
||
|
|
||
|
expect(spy).to.be.called
|
||
|
})
|
||
|
|
||
|
it('cy.spy() retries until assertions pass', () => {
|
||
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')
|
||
|
|
||
|
const obj = {
|
||
|
/**
|
||
|
* Prints the argument passed
|
||
|
* @param x {any}
|
||
|
*/
|
||
|
foo (x) {
|
||
|
console.log('obj.foo called with', x)
|
||
|
},
|
||
|
}
|
||
|
|
||
|
cy.spy(obj, 'foo').as('foo')
|
||
|
|
||
|
setTimeout(() => {
|
||
|
obj.foo('first')
|
||
|
}, 500)
|
||
|
|
||
|
setTimeout(() => {
|
||
|
obj.foo('second')
|
||
|
}, 2500)
|
||
|
|
||
|
cy.get('@foo').should('have.been.calledTwice')
|
||
|
})
|
||
|
|
||
|
it('cy.stub() - create a stub and/or replace a function with stub', () => {
|
||
|
// https://on.cypress.io/stub
|
||
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')
|
||
|
|
||
|
const obj = {
|
||
|
/**
|
||
|
* prints both arguments to the console
|
||
|
* @param a {string}
|
||
|
* @param b {string}
|
||
|
*/
|
||
|
foo (a, b) {
|
||
|
console.log('a', a, 'b', b)
|
||
|
},
|
||
|
}
|
||
|
|
||
|
const stub = cy.stub(obj, 'foo').as('foo')
|
||
|
|
||
|
obj.foo('foo', 'bar')
|
||
|
|
||
|
expect(stub).to.be.called
|
||
|
})
|
||
|
|
||
|
it('cy.clock() - control time in the browser', () => {
|
||
|
// https://on.cypress.io/clock
|
||
|
|
||
|
// create the date in UTC so its always the same
|
||
|
// no matter what local timezone the browser is running in
|
||
|
const now = new Date(Date.UTC(2017, 2, 14)).getTime()
|
||
|
|
||
|
cy.clock(now)
|
||
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')
|
||
|
cy.get('#clock-div').click()
|
||
|
.should('have.text', '1489449600')
|
||
|
})
|
||
|
|
||
|
it('cy.tick() - move time in the browser', () => {
|
||
|
// https://on.cypress.io/tick
|
||
|
|
||
|
// create the date in UTC so its always the same
|
||
|
// no matter what local timezone the browser is running in
|
||
|
const now = new Date(Date.UTC(2017, 2, 14)).getTime()
|
||
|
|
||
|
cy.clock(now)
|
||
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')
|
||
|
cy.get('#tick-div').click()
|
||
|
.should('have.text', '1489449600')
|
||
|
cy.tick(10000) // 10 seconds passed
|
||
|
cy.get('#tick-div').click()
|
||
|
.should('have.text', '1489449610')
|
||
|
})
|
||
|
})
|