mirror of
https://github.com/codex-team/editor.js
synced 2024-05-19 06:47:16 +02:00
922dfd8741
* add custom Chai assertion "be.calledWithBatchedEvents" for testing onchange * chore(api): blocks.update(id, data) method improved - `blocks.update(id, data)` now can accept partial data object — it will update only passed properties, others will remain the same. - `blocks.update(id, data)` now will trigger onChange with only `block-change` event. - `blocks.update(id, data)` will return a promise with BlockAPI object of changed block. * fix tests * Update blocks.cy.ts
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
|
|
/* global chai */
|
|
// because this file is imported from cypress/support/e2e.js
|
|
// that means all other spec files will have this assertion plugin
|
|
// available to them because the supportFile is bundled and served
|
|
// prior to any spec files loading
|
|
|
|
import PartialBlockMutationEvent from '../fixtures/types/PartialBlockMutationEvent';
|
|
|
|
/**
|
|
* Chai plugin for checking if passed onChange method is called with an array of passed events
|
|
*
|
|
* @param _chai - Chai instance
|
|
*/
|
|
const beCalledWithBatchedEvents = (_chai): void => {
|
|
/**
|
|
* Check if passed onChange method is called with an array of passed events
|
|
*
|
|
* @param expectedEvents - batched events to check
|
|
*/
|
|
function assertToBeCalledWithBatchedEvents(expectedEvents: PartialBlockMutationEvent[]): void {
|
|
/**
|
|
* EditorJS API is passed as the first parameter of the onChange callback
|
|
*/
|
|
const EditorJSApiMock = Cypress.sinon.match.any;
|
|
const $onChange = this._obj;
|
|
|
|
this.assert(
|
|
$onChange.calledOnce,
|
|
'expected #{this} to be called once',
|
|
'expected #{this} to not be called once'
|
|
);
|
|
|
|
this.assert(
|
|
$onChange.calledWithMatch(
|
|
EditorJSApiMock,
|
|
Cypress.sinon.match((events: PartialBlockMutationEvent[]) => {
|
|
expect(events).to.be.an('array');
|
|
|
|
return events.every((event, index) => {
|
|
const eventToCheck = expectedEvents[index];
|
|
|
|
return expect(event).to.containSubset(eventToCheck);
|
|
});
|
|
})
|
|
),
|
|
'expected #{this} to be called with #{exp}, but it was called with #{act}',
|
|
'expected #{this} to not be called with #{exp}, but it was called with #{act} ',
|
|
expectedEvents
|
|
);
|
|
}
|
|
|
|
_chai.Assertion.addMethod('calledWithBatchedEvents', assertToBeCalledWithBatchedEvents);
|
|
};
|
|
|
|
/**
|
|
* registers our assertion function "beCalledWithBatchedEvents" with Chai
|
|
*/
|
|
chai.use(beCalledWithBatchedEvents);
|