Fix: pass user configuration to Tool prepare method

This commit is contained in:
Georgy Berezhnoy 2021-09-11 15:18:43 +03:00
parent 65b86c9203
commit 419f417f71
No known key found for this signature in database
GPG key ID: F72152EC600B4FAE
2 changed files with 30 additions and 3 deletions

View file

@ -1,7 +1,7 @@
import Paragraph from '../../tools/paragraph/dist/bundle';
import Module from '../__module';
import * as _ from '../utils';
import { SanitizerConfig, ToolConstructable, ToolSettings } from '../../../types';
import {SanitizerConfig, ToolConfig, ToolConstructable, ToolSettings} from '../../../types';
import BoldInlineTool from '../inline-tools/inline-tool-bold';
import ItalicInlineTool from '../inline-tools/inline-tool-italic';
import LinkInlineTool from '../inline-tools/inline-tool-link';
@ -279,7 +279,7 @@ export default class Tools extends Module {
}[] {
const toolPreparationList: {
function: (data: { toolName: string }) => void | Promise<void>;
data: { toolName: string };
data: { toolName: string; config: ToolConfig };
}[] = [];
Object
@ -290,6 +290,7 @@ export default class Tools extends Module {
function: _.isFunction(settings.class.prepare) ? settings.class.prepare : (): void => {},
data: {
toolName,
config: settings.config,
},
});
});

View file

@ -72,6 +72,32 @@ describe('Tools module', () => {
expect(err).to.be.instanceOf(Error);
});
// eslint-disable-next-line cypress/no-async-tests
it('should call Tools prepare method with user config', async () => {
class WithSuccessfulPrepare {
// eslint-disable-next-line @typescript-eslint/no-empty-function
public static prepare = cy.stub()
}
const config = {
property: 'value',
};
const module = constructModule({
defaultBlock: 'withSuccessfulPrepare',
tools: {
withSuccessfulPrepare: {
class: WithSuccessfulPrepare as any,
config,
},
},
});
await module.prepare();
expect(WithSuccessfulPrepare.prepare).to.be.calledWithExactly({ toolName: 'withSuccessfulPrepare', config });
});
});
context('collection accessors', () => {
@ -173,7 +199,7 @@ describe('Tools module', () => {
expect(module.unavailable).to.be.instanceOf(Map);
});
it('should contain only ready to use Tools', () => {
it('should contain unavailable Tools', () => {
expect(module.unavailable.has('withSuccessfulPrepare')).to.be.false;
expect(module.unavailable.has('withoutPrepare')).to.be.false;
expect(module.unavailable.has('withFailedPrepare')).to.be.true;