diff --git a/dist/ConfigurationClass.d.ts b/dist/ConfigurationClass.d.ts index 9d85b47..4e96016 100644 --- a/dist/ConfigurationClass.d.ts +++ b/dist/ConfigurationClass.d.ts @@ -1,5 +1,5 @@ import Tester from './tester'; -import { IConfig, IHook, IProfile, TesterClass } from './interfaces'; +import { IConfig, IHook, IProfile, ITesterClass } from './interfaces'; declare class ConfigurationClass { enzyme: any; hooks: { @@ -8,9 +8,9 @@ declare class ConfigurationClass { profiles: { [key: string]: IProfile; }; - Tester: TesterClass; - constructor(Tester: TesterClass); - configure(enzyme: any, config: IConfig): TesterClass; + Tester: ITesterClass; + constructor(argTester: ITesterClass); + configure(enzyme: any, config: IConfig): ITesterClass; createShortcuts(): void; registerHook(hook: IHook): void; registerProfile(profile: IProfile): void; diff --git a/dist/interfaces.d.ts b/dist/interfaces.d.ts index c3cc964..f9c0c07 100644 --- a/dist/interfaces.d.ts +++ b/dist/interfaces.d.ts @@ -1,9 +1,7 @@ import React, { Component } from 'react'; import Tester from './tester'; import ConfigurationClass from './ConfigurationClass'; -export declare type ComponentClass = React.FC | { - new (): Component; -}; +export declare type ComponentClass = React.FC | (new () => Component); export interface IMountOps { async?: boolean; } @@ -15,13 +13,13 @@ export interface IWrapper { } export interface IHook extends IWrapper { [key: string]: any; - onBeforeMount: (tester: Tester, mountOpts: IMountOps) => Promise; + onBeforeMount: (tester: Tester, mountOpts?: IMountOps) => void | Promise; onInit: (tester: Tester) => void; props: object | (() => void); - shortCuts: { + shortCuts?: { [shortCutName: string]: () => void; }; - wrapper: () => { + wrapper?: () => { Component: ComponentClass; name: string; props: object; @@ -44,7 +42,7 @@ export interface ITesterOpts { TestedComponent?: ComponentClass; } export declare type IBaseTesterClass = typeof Tester; -export interface TesterClass extends IBaseTesterClass { +export interface ITesterClass extends IBaseTesterClass { [key: string]: any; Configuration: ConfigurationClass; } diff --git a/dist/tester.cjs.js b/dist/tester.cjs.js index b7c4bfd..1cfae36 100644 --- a/dist/tester.cjs.js +++ b/dist/tester.cjs.js @@ -124,21 +124,44 @@ function getInstance(component) { var instance = component.instance(); return instance.wrappedInstance || instance; } - function getValue(tester, value) { return typeof value === 'function' ? value(tester) : value; } - function sleep() { - var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - return new Promise(function (resolve) { - return setTimeout(resolve, ms); - }); + return _sleep.apply(this, arguments); +} + +function _sleep() { + _sleep = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee() { + var ms, + _args = arguments; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + ms = _args.length > 0 && _args[0] !== undefined ? _args[0] : 0; + return _context.abrupt("return", new Promise(function (resolve) { + return setTimeout(resolve, ms); + })); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + return _sleep.apply(this, arguments); } function capitalize(string) { return string.charAt(0).toUpperCase() + string.slice(1); } +function isString(value) { + return typeof value === 'string' || value instanceof String; +} var NullComponent = function NullComponent(props) { return React__default.createElement(React.Fragment, props); @@ -172,10 +195,6 @@ var NullComponent = function NullComponent(props) { /** * Testing utility class to mount a specific component with it's required wrappers. - * - * @param {ReactComponent} TestedComponent - * @param {Object} options - * @returns {Tester} */ @@ -236,7 +255,7 @@ function () { }, { key: "debug", value: function debug() { - // eslint-disable-next-line no-console + // tslint:disable-next-line:no-console console.log(this.wrapper.debug()); } }, { @@ -316,6 +335,62 @@ function () { return refresh; }() + }, { + key: "getComponent", + value: function getComponent(selector) { + return isString(selector) ? this.find(selector).first() : selector; + } + }, { + key: "changeInput", + value: function changeInput(selector, value) { + var component = this.getComponent(selector); + component.simulate('focus'); + component.simulate('change', { + target: { + value: value + } + }); + component.simulate('blur'); + } + }, { + key: "click", + value: function click(selector) { + var component = this.getComponent(selector); + component.simulate('click'); + } + }, { + key: "submit", + value: function () { + var _submit = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee3() { + var selector, + component, + _args3 = arguments; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + selector = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : 'form'; + component = this.getComponent(selector); + component.simulate('submit'); + _context3.next = 5; + return this.refresh(); + + case 5: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + + function submit() { + return _submit.apply(this, arguments); + } + + return submit; + }() }, { key: "createShallowWrapper", value: function createShallowWrapper() { @@ -329,7 +404,7 @@ function () { value: function () { var _mount = _asyncToGenerator( /*#__PURE__*/ - regeneratorRuntime.mark(function _callee3() { + regeneratorRuntime.mark(function _callee4() { var mountOpts, _iteratorNormalCompletion, _didIteratorError, @@ -339,77 +414,77 @@ function () { hook, initialMount, WrapperTree, - _args3 = arguments; + _args4 = arguments; - return regeneratorRuntime.wrap(function _callee3$(_context3) { + return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { - switch (_context3.prev = _context3.next) { + switch (_context4.prev = _context4.next) { case 0: - mountOpts = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}; + mountOpts = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {}; // Loop through hooks onBeforeMount(), // This MUST be a regular for () loop to not throw the promise away. (forEach won't work) _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; - _context3.prev = 4; + _context4.prev = 4; _iterator = this.config.getValidHooks(this, 'onBeforeMount')[Symbol.iterator](); case 6: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { - _context3.next = 13; + _context4.next = 13; break; } hook = _step.value; - _context3.next = 10; + _context4.next = 10; return hook.onBeforeMount(this, mountOpts); case 10: _iteratorNormalCompletion = true; - _context3.next = 6; + _context4.next = 6; break; case 13: - _context3.next = 19; + _context4.next = 19; break; case 15: - _context3.prev = 15; - _context3.t0 = _context3["catch"](4); + _context4.prev = 15; + _context4.t0 = _context4["catch"](4); _didIteratorError = true; - _iteratorError = _context3.t0; + _iteratorError = _context4.t0; case 19: - _context3.prev = 19; - _context3.prev = 20; + _context4.prev = 19; + _context4.prev = 20; if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } case 22: - _context3.prev = 22; + _context4.prev = 22; if (!_didIteratorError) { - _context3.next = 25; + _context4.next = 25; break; } throw _iteratorError; case 25: - return _context3.finish(22); + return _context4.finish(22); case 26: - return _context3.finish(19); + return _context4.finish(19); case 27: if (!this.onBeforeMount) { - _context3.next = 30; + _context4.next = 30; break; } - _context3.next = 30; + _context4.next = 30; return this.onBeforeMount(this); case 30: @@ -423,36 +498,36 @@ function () { return Tree; }, initialMount); - _context3.next = 34; + _context4.next = 34; return this.config.enzyme.mount(WrapperTree); case 34: - this.wrapper = _context3.sent; + this.wrapper = _context4.sent; if (this.opts.shallow) { this.createShallowWrapper(); } if (!mountOpts.async) { - _context3.next = 40; + _context4.next = 40; break; } - _context3.next = 39; + _context4.next = 39; return this.sleep(); case 39: this.update(); case 40: - return _context3.abrupt("return", this); + return _context4.abrupt("return", this); case 41: case "end": - return _context3.stop(); + return _context4.stop(); } } - }, _callee3, this, [[4, 15, 19, 27], [20,, 22, 26]]); + }, _callee4, this, [[4, 15, 19, 27], [20,, 22, 26]]); })); function mount() { @@ -484,7 +559,7 @@ Tester.Configuration = void 0; var ConfigurationClass = /*#__PURE__*/ function () { - function ConfigurationClass(Tester) { + function ConfigurationClass(argTester) { _classCallCheck(this, ConfigurationClass); this.enzyme = void 0; @@ -494,8 +569,8 @@ function () { Default: {} }; this.Tester = void 0; - this.Tester = Tester; - Tester.Configuration = this; + this.Tester = argTester; + argTester.Configuration = this; } _createClass(ConfigurationClass, [{ @@ -524,7 +599,8 @@ function () { Create shortcuts for each global profiles Tester shortcuts allows you to use a specific global profile without having to pass it in in the options. E.g. - Using a new Tester.Light(MyComponent) allows you to skip the initialization of Transport, localStorage + Session and AppState. + Using a new Tester.Light(MyComponent) allows you to skip the initialization of + Transport, localStorage + Session and AppState. */ }, { diff --git a/dist/tester.cjs.js.map b/dist/tester.cjs.js.map index 8d7b139..b2dc500 100644 --- a/dist/tester.cjs.js.map +++ b/dist/tester.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"tester.cjs.js","sources":["../src/utils.ts","../src/tester.tsx","../src/ConfigurationClass.ts","../src/index.ts"],"sourcesContent":["/*\n Utilities\n*/\n\nfunction getInstance (component: any) {\n const instance = component.instance();\n return instance.wrappedInstance || instance;\n}\n\nfunction getValue (tester: any, value: unknown) {\n return typeof value === 'function' ? value(tester) : value;\n}\n\nfunction sleep (ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nfunction capitalize (string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport {\n capitalize,\n getInstance,\n getValue,\n sleep,\n};\n","import React, { Fragment } from 'react';\n\nimport {\n getInstance,\n getValue,\n sleep,\n} from './utils';\n\nimport ConfigurationClass from './ConfigurationClass';\nimport { IHook, IProfile, ITesterOpts, IWrapper, ComponentClass } from './interfaces';\n\nconst NullComponent: React.FC = (props: any) => ();\n\n\n/*\n Name: Tester\n Description: Testing utility class to mount a specific component with it's required wrappers.\n\n Usage:\n // Bootstrap Transport, localStorage + Session and an AppState.\n const tester = new Tester(MyComponent);\n\n // Bootstrap nothing, use with light components that doesn't need any of the above.\n const tester = new TesterLight(MyComponent);\n\n // Mount the component\n await tester.mount();\n\n // Test component that requires more JSX than the component only :\n const new Tester(MyComponent, {mount: (
)});\n\n // You can mount right away if no Transport or AppState modification is needed.\n const tester = await new Tester(MyComponent).mount();\n\n // opts.shallow is an experimental feature that allows you to test the TestedComponent instance behaviors.\n // Please only use it when necessary.\n const tester = await new Tester(MyComponent, { shallow: true }).mount();\n tester.shallow.wrapper // equals to shallow()\n tester.shallow.instance // equals to tester.shallow.instance()\n*/\n\n/**\n * Testing utility class to mount a specific component with it's required wrappers.\n *\n * @param {ReactComponent} TestedComponent\n * @param {Object} options\n * @returns {Tester}\n */\nclass Tester {\n static Configuration: ConfigurationClass;\n\n public opts: ITesterOpts;\n\n public config: ConfigurationClass;\n public initialMount: React.ReactNode;\n public onBeforeMount?: (tester: Tester) => Promise;\n public profile: IProfile;\n public props: object;\n public TestedComponent: ComponentClass;\n\n public AppState: any;\n public shallow: any;\n public wrapper: any;\n\n constructor (TestedComponent: ComponentClass, opts: ITesterOpts = {}) {\n this.config = Tester.Configuration;\n this.initialMount = opts.mount;\n this.onBeforeMount = opts.onBeforeMount;\n this.opts = opts;\n this.profile = {...this.config.profiles.Default, ...opts.profile};\n this.props = opts.props || {};\n this.TestedComponent = TestedComponent;\n\n // Allow testing without a main TestedComponent. This require an initialMount.\n if (!this.TestedComponent && this.initialMount) {\n this.TestedComponent = NullComponent;\n this.initialMount = {this.initialMount};\n }\n\n // Loop through hooks onInit(),\n this.config.getValidHooks(this, 'onInit').forEach((hook: IHook) => {\n hook.onInit(this);\n });\n }\n\n getWrappers () {\n const wrappers: IWrapper[] = [];\n\n this.config.getValidHooks(this, 'component').forEach((hook: IHook) => {\n wrappers.push({\n component: hook.component,\n name: hook.name,\n props: getValue(this, hook.props),\n });\n });\n\n return wrappers;\n }\n\n get instance () {\n return getInstance(this.component);\n }\n\n get component () {\n return this.wrapper.find(this.TestedComponent);\n }\n\n debug () {\n // eslint-disable-next-line no-console\n console.log(this.wrapper.debug());\n }\n\n html () {\n return this.component.html();\n }\n\n text () {\n return this.component.text();\n }\n\n find (selector: string) {\n return this.wrapper.find(selector);\n }\n\n update () {\n return this.wrapper.update();\n }\n\n async sleep (ms?: number) {\n await sleep(ms);\n }\n\n async refresh (ms?: number) {\n await sleep(ms);\n this.update();\n }\n\n createShallowWrapper () {\n this.shallow = {};\n const WrappedComponent = (this.TestedComponent as any).wrappedComponent as ComponentClass;\n\n this.shallow.wrapper = this.config.enzyme.mount(\n \n );\n this.shallow.instance = getInstance(this.shallow.wrapper);\n }\n\n async mount (mountOpts: { async?: boolean } = {}) {\n\n // Loop through hooks onBeforeMount(),\n // This MUST be a regular for () loop to not throw the promise away. (forEach won't work)\n for (const hook of this.config.getValidHooks(this, 'onBeforeMount')) {\n await hook.onBeforeMount(this, mountOpts);\n }\n\n // Allows you to fetch data to set as props, prepare extra stores, etc.\n if (this.onBeforeMount) {\n await this.onBeforeMount(this);\n }\n\n const initialMount = this.initialMount || ;\n\n const WrapperTree = this.getWrappers().reduce((Tree, wrapper) => {\n const wrapperChildren = wrapper.renderChildren !== false && Tree;\n if (wrapper.props) {\n return {wrapperChildren};\n }\n return Tree;\n }, initialMount);\n\n this.wrapper = await this.config.enzyme.mount(WrapperTree);\n\n if (this.opts.shallow) {\n this.createShallowWrapper();\n }\n\n if (mountOpts.async) {\n await this.sleep();\n this.update();\n }\n\n return this;\n }\n}\n\nexport default Tester;\n","import Tester from './tester';\nimport { capitalize } from './utils';\nimport { ComponentClass, IConfig, IHook, IProfile, TesterClass } from './interfaces';\n\n/*\n Tester Configuration Class\n*/\nclass ConfigurationClass {\n enzyme: any;\n hooks: { [key: string]: IHook } = {};\n profiles: { [key: string]: IProfile } = {\n // Default profile, each of it's properties can be overwritten.\n Default: {} as IProfile,\n };\n Tester: TesterClass;\n\n constructor (Tester: TesterClass) {\n this.Tester = Tester;\n Tester.Configuration = this;\n }\n\n configure (enzyme: any, config: IConfig) {\n this.enzyme = enzyme;\n\n if (config.hooks) {\n config.hooks.forEach((hook: IHook) => {\n this.registerHook(hook);\n });\n }\n\n if (config.profiles) {\n config.profiles.forEach((profile) => {\n this.registerProfile(profile);\n });\n }\n\n this.createShortcuts();\n\n return this.Tester;\n }\n\n /*\n Create shortcuts for each global profiles\n Tester shortcuts allows you to use a specific global profile without having to pass it in in the options.\n\n E.g.\n Using a new Tester.Light(MyComponent) allows you to skip the initialization of Transport, localStorage + Session and AppState.\n */\n createShortcuts () {\n Object.keys(this.profiles).forEach((profileKey) => {\n this.Tester[profileKey] = (TestedComponent: ComponentClass, opts = {}) => {\n return new this.Tester(TestedComponent, {...opts, profile: this.profiles[profileKey]});\n };\n });\n }\n\n /*\n Hooks,\n {\n name: string,\n component: React.Component,\n props: object || fn(), // fn() allows this.AppState to be set for e.g\n onInit: fn(),\n onBeforeMount: fn(),\n shortCuts: {shortCutName: fn()},\n wrapper: fn() => { Component: React.Component, name: string, props: object }\n }\n\n Note: Order is important!\n */\n registerHook (hook: IHook) {\n if (!hook.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n if (this.hooks[hook.name]) { throw new Error(`Tester.registerHook() : A hook named \"${hook.name}\" already exist.`); }\n\n // Validate hook properties here.\n\n this.hooks[hook.name] = hook;\n }\n\n /*\n Profiles,\n {\n // Profile keys must be hook names.\n }\n */\n registerProfile (profile: IProfile) {\n if (!profile.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n\n const capitalizedName = capitalize(profile.name);\n\n if (this.profiles[capitalizedName] && capitalizedName !== 'Default') {\n throw new Error(`Tester.registerProfile() : A profile named \"${capitalizedName}\" already exist.`);\n }\n\n // Validate profile properties here.\n // - Does every key or the profile is a hook ?\n\n this.profiles[capitalizedName] = profile;\n }\n\n getValidHooks (tester: Tester, hookProp: string): IHook[] {\n const hooks: IHook[] = [];\n\n Object.values(this.hooks).forEach((hook) => {\n let valid = true;\n if (!tester.profile[hook.name]) { valid = false; }\n if (hookProp && !hook[hookProp]) { valid = false; }\n\n if (valid) {\n hooks.push(hook);\n }\n });\n\n return hooks;\n }\n\n}\n\nexport default ConfigurationClass;\n","import Tester from './tester';\nimport ConfigurationClass from './ConfigurationClass';\n\nconst TesterConfig = new ConfigurationClass(Tester);\n\nexport {\n Tester,\n TesterConfig,\n}\n"],"names":["React","Fragment","_sleep","sleep"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tester.cjs.js","sources":["../src/utils.ts","../src/tester.tsx","../src/ConfigurationClass.ts","../src/index.ts"],"sourcesContent":["/*\n Utilities\n*/\n\nexport function getInstance (component: any) {\n const instance = component.instance();\n return instance.wrappedInstance || instance;\n}\n\nexport function getValue (tester: any, value: unknown) {\n return typeof value === 'function' ? value(tester) : value;\n}\n\nexport async function sleep (ms: number = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function capitalize (string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function isString (value: unknown): value is string {\n return typeof value === 'string' || value instanceof String;\n}\n","import React, { Fragment } from 'react';\n\nimport {\n getInstance,\n getValue,\n isString,\n sleep,\n} from './utils';\n\nimport ConfigurationClass from './ConfigurationClass';\nimport { IHook, IProfile, ITesterOpts, IWrapper, ComponentClass } from './interfaces';\n\ntype ISelectArg = string | { simulate: (event: string) => void };\n\nconst NullComponent: React.FC = (props: any) => ();\n\n/*\n Name: Tester\n Description: Testing utility class to mount a specific component with it's required wrappers.\n\n Usage:\n // Bootstrap Transport, localStorage + Session and an AppState.\n const tester = new Tester(MyComponent);\n\n // Bootstrap nothing, use with light components that doesn't need any of the above.\n const tester = new TesterLight(MyComponent);\n\n // Mount the component\n await tester.mount();\n\n // Test component that requires more JSX than the component only :\n const new Tester(MyComponent, {mount: (
)});\n\n // You can mount right away if no Transport or AppState modification is needed.\n const tester = await new Tester(MyComponent).mount();\n\n // opts.shallow is an experimental feature that allows you to test the TestedComponent instance behaviors.\n // Please only use it when necessary.\n const tester = await new Tester(MyComponent, { shallow: true }).mount();\n tester.shallow.wrapper // equals to shallow()\n tester.shallow.instance // equals to tester.shallow.instance()\n*/\n\n/**\n * Testing utility class to mount a specific component with it's required wrappers.\n */\nclass Tester {\n public static Configuration: ConfigurationClass;\n\n public opts: ITesterOpts;\n\n public config: ConfigurationClass;\n public initialMount: React.ReactNode;\n public onBeforeMount?: (tester: Tester) => Promise;\n public profile: IProfile;\n public props: object;\n public TestedComponent: ComponentClass;\n\n public AppState: any;\n public shallow: any;\n public wrapper: any;\n\n public constructor (TestedComponent: ComponentClass, opts: ITesterOpts = {}) {\n this.config = Tester.Configuration;\n this.initialMount = opts.mount;\n this.onBeforeMount = opts.onBeforeMount;\n this.opts = opts;\n this.profile = {...this.config.profiles.Default, ...opts.profile};\n this.props = opts.props || {};\n this.TestedComponent = TestedComponent;\n\n // Allow testing without a main TestedComponent. This require an initialMount.\n if (!this.TestedComponent && this.initialMount) {\n this.TestedComponent = NullComponent;\n this.initialMount = {this.initialMount};\n }\n\n // Loop through hooks onInit(),\n this.config.getValidHooks(this, 'onInit').forEach((hook: IHook) => {\n hook.onInit(this);\n });\n }\n\n public getWrappers (): IWrapper[] {\n const wrappers: IWrapper[] = [];\n\n this.config.getValidHooks(this, 'component').forEach((hook: IHook) => {\n wrappers.push({\n component: hook.component,\n name: hook.name,\n props: getValue(this, hook.props),\n });\n });\n\n return wrappers;\n }\n\n public get instance () {\n return getInstance(this.component);\n }\n\n public get component () {\n return this.wrapper.find(this.TestedComponent);\n }\n\n public debug () {\n // tslint:disable-next-line:no-console\n console.log(this.wrapper.debug());\n }\n\n public html () {\n return this.component.html();\n }\n\n public text () {\n return this.component.text();\n }\n\n public find (selector: string) {\n return this.wrapper.find(selector);\n }\n\n public update () {\n return this.wrapper.update();\n }\n\n public async sleep (ms?: number) {\n await sleep(ms);\n }\n\n public async refresh (ms?: number) {\n await sleep(ms);\n this.update();\n }\n\n private getComponent (selector: ISelectArg) {\n return isString(selector) ? this.find(selector).first() : selector;\n }\n\n public changeInput (selector: ISelectArg, value: string) {\n const component = this.getComponent(selector);\n component.simulate('focus');\n component.simulate('change', { target: { value } });\n component.simulate('blur');\n }\n\n public click (selector: ISelectArg) {\n const component = this.getComponent(selector);\n component.simulate('click');\n }\n\n public async submit (selector: ISelectArg = 'form') {\n const component = this.getComponent(selector);\n component.simulate('submit');\n await this.refresh();\n }\n\n public createShallowWrapper () {\n this.shallow = {};\n const WrappedComponent = (this.TestedComponent as any).wrappedComponent as ComponentClass;\n\n this.shallow.wrapper = this.config.enzyme.mount(\n ,\n );\n this.shallow.instance = getInstance(this.shallow.wrapper);\n }\n\n public async mount (mountOpts: { async?: boolean } = {}) {\n\n // Loop through hooks onBeforeMount(),\n // This MUST be a regular for () loop to not throw the promise away. (forEach won't work)\n for (const hook of this.config.getValidHooks(this, 'onBeforeMount')) {\n await hook.onBeforeMount(this, mountOpts);\n }\n\n // Allows you to fetch data to set as props, prepare extra stores, etc.\n if (this.onBeforeMount) {\n await this.onBeforeMount(this);\n }\n\n const initialMount = this.initialMount || ;\n\n const WrapperTree = this.getWrappers().reduce((Tree, wrapper) => {\n const wrapperChildren = wrapper.renderChildren !== false && Tree;\n if (wrapper.props) {\n return {wrapperChildren};\n }\n return Tree;\n }, initialMount);\n\n this.wrapper = await this.config.enzyme.mount(WrapperTree);\n\n if (this.opts.shallow) {\n this.createShallowWrapper();\n }\n\n if (mountOpts.async) {\n await this.sleep();\n this.update();\n }\n\n return this;\n }\n}\n\nexport default Tester;\n","import Tester from './tester';\nimport { capitalize } from './utils';\nimport { ComponentClass, IConfig, IHook, IProfile, ITesterClass } from './interfaces';\n\n/*\n Tester Configuration Class\n*/\nclass ConfigurationClass {\n public enzyme: any;\n public hooks: { [key: string]: IHook } = {};\n public profiles: { [key: string]: IProfile } = {\n // Default profile, each of it's properties can be overwritten.\n Default: {} as IProfile,\n };\n public Tester: ITesterClass;\n\n public constructor (argTester: ITesterClass) {\n this.Tester = argTester;\n argTester.Configuration = this;\n }\n\n public configure (enzyme: any, config: IConfig) {\n this.enzyme = enzyme;\n\n if (config.hooks) {\n config.hooks.forEach((hook: IHook) => {\n this.registerHook(hook);\n });\n }\n\n if (config.profiles) {\n config.profiles.forEach((profile) => {\n this.registerProfile(profile);\n });\n }\n\n this.createShortcuts();\n\n return this.Tester;\n }\n\n /*\n Create shortcuts for each global profiles\n Tester shortcuts allows you to use a specific global profile without having to pass it in in the options.\n\n E.g.\n Using a new Tester.Light(MyComponent) allows you to skip the initialization of\n Transport, localStorage + Session and AppState.\n */\n public createShortcuts () {\n Object.keys(this.profiles).forEach((profileKey) => {\n this.Tester[profileKey] = (TestedComponent: ComponentClass, opts = {}) =>\n new this.Tester(TestedComponent, {...opts, profile: this.profiles[profileKey]});\n });\n }\n\n /*\n Hooks,\n {\n name: string,\n component: React.Component,\n props: object || fn(), // fn() allows this.AppState to be set for e.g\n onInit: fn(),\n onBeforeMount: fn(),\n shortCuts: {shortCutName: fn()},\n wrapper: fn() => { Component: React.Component, name: string, props: object }\n }\n\n Note: Order is important!\n */\n public registerHook (hook: IHook) {\n if (!hook.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n if (this.hooks[hook.name]) {\n throw new Error(`Tester.registerHook() : A hook named \"${hook.name}\" already exist.`);\n }\n\n // Validate hook properties here.\n\n this.hooks[hook.name] = hook;\n }\n\n /*\n Profiles,\n {\n // Profile keys must be hook names.\n }\n */\n public registerProfile (profile: IProfile) {\n if (!profile.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n\n const capitalizedName = capitalize(profile.name);\n\n if (this.profiles[capitalizedName] && capitalizedName !== 'Default') {\n throw new Error(`Tester.registerProfile() : A profile named \"${capitalizedName}\" already exist.`);\n }\n\n // Validate profile properties here.\n // - Does every key or the profile is a hook ?\n\n this.profiles[capitalizedName] = profile;\n }\n\n public getValidHooks (tester: Tester, hookProp: string): IHook[] {\n const hooks: IHook[] = [];\n\n Object.values(this.hooks).forEach((hook) => {\n let valid = true;\n if (!tester.profile[hook.name]) { valid = false; }\n if (hookProp && !hook[hookProp]) { valid = false; }\n\n if (valid) {\n hooks.push(hook);\n }\n });\n\n return hooks;\n }\n\n}\n\nexport default ConfigurationClass;\n","import Tester from './tester';\nimport ConfigurationClass from './ConfigurationClass';\n\nconst TesterConfig = new ConfigurationClass(Tester);\n\nexport {\n Tester,\n TesterConfig,\n};\n"],"names":["React","Fragment","_sleep","sleep"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tester.d.ts b/dist/tester.d.ts index a2de615..654975e 100644 --- a/dist/tester.d.ts +++ b/dist/tester.d.ts @@ -1,12 +1,11 @@ import React from 'react'; import ConfigurationClass from './ConfigurationClass'; import { IProfile, ITesterOpts, IWrapper, ComponentClass } from './interfaces'; +declare type ISelectArg = string | { + simulate: (event: string) => void; +}; /** * Testing utility class to mount a specific component with it's required wrappers. - * - * @param {ReactComponent} TestedComponent - * @param {Object} options - * @returns {Tester} */ declare class Tester { static Configuration: ConfigurationClass; @@ -31,6 +30,10 @@ declare class Tester { update(): any; sleep(ms?: number): Promise; refresh(ms?: number): Promise; + private getComponent; + changeInput(selector: ISelectArg, value: string): void; + click(selector: ISelectArg): void; + submit(selector?: ISelectArg): Promise; createShallowWrapper(): void; mount(mountOpts?: { async?: boolean; diff --git a/dist/tester.esm.js b/dist/tester.esm.js index 9b4473d..d901aa1 100644 --- a/dist/tester.esm.js +++ b/dist/tester.esm.js @@ -117,21 +117,44 @@ function getInstance(component) { var instance = component.instance(); return instance.wrappedInstance || instance; } - function getValue(tester, value) { return typeof value === 'function' ? value(tester) : value; } - function sleep() { - var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - return new Promise(function (resolve) { - return setTimeout(resolve, ms); - }); + return _sleep.apply(this, arguments); +} + +function _sleep() { + _sleep = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee() { + var ms, + _args = arguments; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + ms = _args.length > 0 && _args[0] !== undefined ? _args[0] : 0; + return _context.abrupt("return", new Promise(function (resolve) { + return setTimeout(resolve, ms); + })); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + return _sleep.apply(this, arguments); } function capitalize(string) { return string.charAt(0).toUpperCase() + string.slice(1); } +function isString(value) { + return typeof value === 'string' || value instanceof String; +} var NullComponent = function NullComponent(props) { return React.createElement(Fragment, props); @@ -165,10 +188,6 @@ var NullComponent = function NullComponent(props) { /** * Testing utility class to mount a specific component with it's required wrappers. - * - * @param {ReactComponent} TestedComponent - * @param {Object} options - * @returns {Tester} */ @@ -229,7 +248,7 @@ function () { }, { key: "debug", value: function debug() { - // eslint-disable-next-line no-console + // tslint:disable-next-line:no-console console.log(this.wrapper.debug()); } }, { @@ -309,6 +328,62 @@ function () { return refresh; }() + }, { + key: "getComponent", + value: function getComponent(selector) { + return isString(selector) ? this.find(selector).first() : selector; + } + }, { + key: "changeInput", + value: function changeInput(selector, value) { + var component = this.getComponent(selector); + component.simulate('focus'); + component.simulate('change', { + target: { + value: value + } + }); + component.simulate('blur'); + } + }, { + key: "click", + value: function click(selector) { + var component = this.getComponent(selector); + component.simulate('click'); + } + }, { + key: "submit", + value: function () { + var _submit = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee3() { + var selector, + component, + _args3 = arguments; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + selector = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : 'form'; + component = this.getComponent(selector); + component.simulate('submit'); + _context3.next = 5; + return this.refresh(); + + case 5: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + + function submit() { + return _submit.apply(this, arguments); + } + + return submit; + }() }, { key: "createShallowWrapper", value: function createShallowWrapper() { @@ -322,7 +397,7 @@ function () { value: function () { var _mount = _asyncToGenerator( /*#__PURE__*/ - regeneratorRuntime.mark(function _callee3() { + regeneratorRuntime.mark(function _callee4() { var mountOpts, _iteratorNormalCompletion, _didIteratorError, @@ -332,77 +407,77 @@ function () { hook, initialMount, WrapperTree, - _args3 = arguments; + _args4 = arguments; - return regeneratorRuntime.wrap(function _callee3$(_context3) { + return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { - switch (_context3.prev = _context3.next) { + switch (_context4.prev = _context4.next) { case 0: - mountOpts = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}; + mountOpts = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {}; // Loop through hooks onBeforeMount(), // This MUST be a regular for () loop to not throw the promise away. (forEach won't work) _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; - _context3.prev = 4; + _context4.prev = 4; _iterator = this.config.getValidHooks(this, 'onBeforeMount')[Symbol.iterator](); case 6: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { - _context3.next = 13; + _context4.next = 13; break; } hook = _step.value; - _context3.next = 10; + _context4.next = 10; return hook.onBeforeMount(this, mountOpts); case 10: _iteratorNormalCompletion = true; - _context3.next = 6; + _context4.next = 6; break; case 13: - _context3.next = 19; + _context4.next = 19; break; case 15: - _context3.prev = 15; - _context3.t0 = _context3["catch"](4); + _context4.prev = 15; + _context4.t0 = _context4["catch"](4); _didIteratorError = true; - _iteratorError = _context3.t0; + _iteratorError = _context4.t0; case 19: - _context3.prev = 19; - _context3.prev = 20; + _context4.prev = 19; + _context4.prev = 20; if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } case 22: - _context3.prev = 22; + _context4.prev = 22; if (!_didIteratorError) { - _context3.next = 25; + _context4.next = 25; break; } throw _iteratorError; case 25: - return _context3.finish(22); + return _context4.finish(22); case 26: - return _context3.finish(19); + return _context4.finish(19); case 27: if (!this.onBeforeMount) { - _context3.next = 30; + _context4.next = 30; break; } - _context3.next = 30; + _context4.next = 30; return this.onBeforeMount(this); case 30: @@ -416,36 +491,36 @@ function () { return Tree; }, initialMount); - _context3.next = 34; + _context4.next = 34; return this.config.enzyme.mount(WrapperTree); case 34: - this.wrapper = _context3.sent; + this.wrapper = _context4.sent; if (this.opts.shallow) { this.createShallowWrapper(); } if (!mountOpts.async) { - _context3.next = 40; + _context4.next = 40; break; } - _context3.next = 39; + _context4.next = 39; return this.sleep(); case 39: this.update(); case 40: - return _context3.abrupt("return", this); + return _context4.abrupt("return", this); case 41: case "end": - return _context3.stop(); + return _context4.stop(); } } - }, _callee3, this, [[4, 15, 19, 27], [20,, 22, 26]]); + }, _callee4, this, [[4, 15, 19, 27], [20,, 22, 26]]); })); function mount() { @@ -477,7 +552,7 @@ Tester.Configuration = void 0; var ConfigurationClass = /*#__PURE__*/ function () { - function ConfigurationClass(Tester) { + function ConfigurationClass(argTester) { _classCallCheck(this, ConfigurationClass); this.enzyme = void 0; @@ -487,8 +562,8 @@ function () { Default: {} }; this.Tester = void 0; - this.Tester = Tester; - Tester.Configuration = this; + this.Tester = argTester; + argTester.Configuration = this; } _createClass(ConfigurationClass, [{ @@ -517,7 +592,8 @@ function () { Create shortcuts for each global profiles Tester shortcuts allows you to use a specific global profile without having to pass it in in the options. E.g. - Using a new Tester.Light(MyComponent) allows you to skip the initialization of Transport, localStorage + Session and AppState. + Using a new Tester.Light(MyComponent) allows you to skip the initialization of + Transport, localStorage + Session and AppState. */ }, { diff --git a/dist/tester.esm.js.map b/dist/tester.esm.js.map index fd8baae..d5c4ea8 100644 --- a/dist/tester.esm.js.map +++ b/dist/tester.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tester.esm.js","sources":["../src/utils.ts","../src/tester.tsx","../src/ConfigurationClass.ts","../src/index.ts"],"sourcesContent":["/*\n Utilities\n*/\n\nfunction getInstance (component: any) {\n const instance = component.instance();\n return instance.wrappedInstance || instance;\n}\n\nfunction getValue (tester: any, value: unknown) {\n return typeof value === 'function' ? value(tester) : value;\n}\n\nfunction sleep (ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nfunction capitalize (string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport {\n capitalize,\n getInstance,\n getValue,\n sleep,\n};\n","import React, { Fragment } from 'react';\n\nimport {\n getInstance,\n getValue,\n sleep,\n} from './utils';\n\nimport ConfigurationClass from './ConfigurationClass';\nimport { IHook, IProfile, ITesterOpts, IWrapper, ComponentClass } from './interfaces';\n\nconst NullComponent: React.FC = (props: any) => ();\n\n\n/*\n Name: Tester\n Description: Testing utility class to mount a specific component with it's required wrappers.\n\n Usage:\n // Bootstrap Transport, localStorage + Session and an AppState.\n const tester = new Tester(MyComponent);\n\n // Bootstrap nothing, use with light components that doesn't need any of the above.\n const tester = new TesterLight(MyComponent);\n\n // Mount the component\n await tester.mount();\n\n // Test component that requires more JSX than the component only :\n const new Tester(MyComponent, {mount: (
)});\n\n // You can mount right away if no Transport or AppState modification is needed.\n const tester = await new Tester(MyComponent).mount();\n\n // opts.shallow is an experimental feature that allows you to test the TestedComponent instance behaviors.\n // Please only use it when necessary.\n const tester = await new Tester(MyComponent, { shallow: true }).mount();\n tester.shallow.wrapper // equals to shallow()\n tester.shallow.instance // equals to tester.shallow.instance()\n*/\n\n/**\n * Testing utility class to mount a specific component with it's required wrappers.\n *\n * @param {ReactComponent} TestedComponent\n * @param {Object} options\n * @returns {Tester}\n */\nclass Tester {\n static Configuration: ConfigurationClass;\n\n public opts: ITesterOpts;\n\n public config: ConfigurationClass;\n public initialMount: React.ReactNode;\n public onBeforeMount?: (tester: Tester) => Promise;\n public profile: IProfile;\n public props: object;\n public TestedComponent: ComponentClass;\n\n public AppState: any;\n public shallow: any;\n public wrapper: any;\n\n constructor (TestedComponent: ComponentClass, opts: ITesterOpts = {}) {\n this.config = Tester.Configuration;\n this.initialMount = opts.mount;\n this.onBeforeMount = opts.onBeforeMount;\n this.opts = opts;\n this.profile = {...this.config.profiles.Default, ...opts.profile};\n this.props = opts.props || {};\n this.TestedComponent = TestedComponent;\n\n // Allow testing without a main TestedComponent. This require an initialMount.\n if (!this.TestedComponent && this.initialMount) {\n this.TestedComponent = NullComponent;\n this.initialMount = {this.initialMount};\n }\n\n // Loop through hooks onInit(),\n this.config.getValidHooks(this, 'onInit').forEach((hook: IHook) => {\n hook.onInit(this);\n });\n }\n\n getWrappers () {\n const wrappers: IWrapper[] = [];\n\n this.config.getValidHooks(this, 'component').forEach((hook: IHook) => {\n wrappers.push({\n component: hook.component,\n name: hook.name,\n props: getValue(this, hook.props),\n });\n });\n\n return wrappers;\n }\n\n get instance () {\n return getInstance(this.component);\n }\n\n get component () {\n return this.wrapper.find(this.TestedComponent);\n }\n\n debug () {\n // eslint-disable-next-line no-console\n console.log(this.wrapper.debug());\n }\n\n html () {\n return this.component.html();\n }\n\n text () {\n return this.component.text();\n }\n\n find (selector: string) {\n return this.wrapper.find(selector);\n }\n\n update () {\n return this.wrapper.update();\n }\n\n async sleep (ms?: number) {\n await sleep(ms);\n }\n\n async refresh (ms?: number) {\n await sleep(ms);\n this.update();\n }\n\n createShallowWrapper () {\n this.shallow = {};\n const WrappedComponent = (this.TestedComponent as any).wrappedComponent as ComponentClass;\n\n this.shallow.wrapper = this.config.enzyme.mount(\n \n );\n this.shallow.instance = getInstance(this.shallow.wrapper);\n }\n\n async mount (mountOpts: { async?: boolean } = {}) {\n\n // Loop through hooks onBeforeMount(),\n // This MUST be a regular for () loop to not throw the promise away. (forEach won't work)\n for (const hook of this.config.getValidHooks(this, 'onBeforeMount')) {\n await hook.onBeforeMount(this, mountOpts);\n }\n\n // Allows you to fetch data to set as props, prepare extra stores, etc.\n if (this.onBeforeMount) {\n await this.onBeforeMount(this);\n }\n\n const initialMount = this.initialMount || ;\n\n const WrapperTree = this.getWrappers().reduce((Tree, wrapper) => {\n const wrapperChildren = wrapper.renderChildren !== false && Tree;\n if (wrapper.props) {\n return {wrapperChildren};\n }\n return Tree;\n }, initialMount);\n\n this.wrapper = await this.config.enzyme.mount(WrapperTree);\n\n if (this.opts.shallow) {\n this.createShallowWrapper();\n }\n\n if (mountOpts.async) {\n await this.sleep();\n this.update();\n }\n\n return this;\n }\n}\n\nexport default Tester;\n","import Tester from './tester';\nimport { capitalize } from './utils';\nimport { ComponentClass, IConfig, IHook, IProfile, TesterClass } from './interfaces';\n\n/*\n Tester Configuration Class\n*/\nclass ConfigurationClass {\n enzyme: any;\n hooks: { [key: string]: IHook } = {};\n profiles: { [key: string]: IProfile } = {\n // Default profile, each of it's properties can be overwritten.\n Default: {} as IProfile,\n };\n Tester: TesterClass;\n\n constructor (Tester: TesterClass) {\n this.Tester = Tester;\n Tester.Configuration = this;\n }\n\n configure (enzyme: any, config: IConfig) {\n this.enzyme = enzyme;\n\n if (config.hooks) {\n config.hooks.forEach((hook: IHook) => {\n this.registerHook(hook);\n });\n }\n\n if (config.profiles) {\n config.profiles.forEach((profile) => {\n this.registerProfile(profile);\n });\n }\n\n this.createShortcuts();\n\n return this.Tester;\n }\n\n /*\n Create shortcuts for each global profiles\n Tester shortcuts allows you to use a specific global profile without having to pass it in in the options.\n\n E.g.\n Using a new Tester.Light(MyComponent) allows you to skip the initialization of Transport, localStorage + Session and AppState.\n */\n createShortcuts () {\n Object.keys(this.profiles).forEach((profileKey) => {\n this.Tester[profileKey] = (TestedComponent: ComponentClass, opts = {}) => {\n return new this.Tester(TestedComponent, {...opts, profile: this.profiles[profileKey]});\n };\n });\n }\n\n /*\n Hooks,\n {\n name: string,\n component: React.Component,\n props: object || fn(), // fn() allows this.AppState to be set for e.g\n onInit: fn(),\n onBeforeMount: fn(),\n shortCuts: {shortCutName: fn()},\n wrapper: fn() => { Component: React.Component, name: string, props: object }\n }\n\n Note: Order is important!\n */\n registerHook (hook: IHook) {\n if (!hook.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n if (this.hooks[hook.name]) { throw new Error(`Tester.registerHook() : A hook named \"${hook.name}\" already exist.`); }\n\n // Validate hook properties here.\n\n this.hooks[hook.name] = hook;\n }\n\n /*\n Profiles,\n {\n // Profile keys must be hook names.\n }\n */\n registerProfile (profile: IProfile) {\n if (!profile.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n\n const capitalizedName = capitalize(profile.name);\n\n if (this.profiles[capitalizedName] && capitalizedName !== 'Default') {\n throw new Error(`Tester.registerProfile() : A profile named \"${capitalizedName}\" already exist.`);\n }\n\n // Validate profile properties here.\n // - Does every key or the profile is a hook ?\n\n this.profiles[capitalizedName] = profile;\n }\n\n getValidHooks (tester: Tester, hookProp: string): IHook[] {\n const hooks: IHook[] = [];\n\n Object.values(this.hooks).forEach((hook) => {\n let valid = true;\n if (!tester.profile[hook.name]) { valid = false; }\n if (hookProp && !hook[hookProp]) { valid = false; }\n\n if (valid) {\n hooks.push(hook);\n }\n });\n\n return hooks;\n }\n\n}\n\nexport default ConfigurationClass;\n","import Tester from './tester';\nimport ConfigurationClass from './ConfigurationClass';\n\nconst TesterConfig = new ConfigurationClass(Tester);\n\nexport {\n Tester,\n TesterConfig,\n}\n"],"names":["_sleep","sleep"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tester.esm.js","sources":["../src/utils.ts","../src/tester.tsx","../src/ConfigurationClass.ts","../src/index.ts"],"sourcesContent":["/*\n Utilities\n*/\n\nexport function getInstance (component: any) {\n const instance = component.instance();\n return instance.wrappedInstance || instance;\n}\n\nexport function getValue (tester: any, value: unknown) {\n return typeof value === 'function' ? value(tester) : value;\n}\n\nexport async function sleep (ms: number = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function capitalize (string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function isString (value: unknown): value is string {\n return typeof value === 'string' || value instanceof String;\n}\n","import React, { Fragment } from 'react';\n\nimport {\n getInstance,\n getValue,\n isString,\n sleep,\n} from './utils';\n\nimport ConfigurationClass from './ConfigurationClass';\nimport { IHook, IProfile, ITesterOpts, IWrapper, ComponentClass } from './interfaces';\n\ntype ISelectArg = string | { simulate: (event: string) => void };\n\nconst NullComponent: React.FC = (props: any) => ();\n\n/*\n Name: Tester\n Description: Testing utility class to mount a specific component with it's required wrappers.\n\n Usage:\n // Bootstrap Transport, localStorage + Session and an AppState.\n const tester = new Tester(MyComponent);\n\n // Bootstrap nothing, use with light components that doesn't need any of the above.\n const tester = new TesterLight(MyComponent);\n\n // Mount the component\n await tester.mount();\n\n // Test component that requires more JSX than the component only :\n const new Tester(MyComponent, {mount: (
)});\n\n // You can mount right away if no Transport or AppState modification is needed.\n const tester = await new Tester(MyComponent).mount();\n\n // opts.shallow is an experimental feature that allows you to test the TestedComponent instance behaviors.\n // Please only use it when necessary.\n const tester = await new Tester(MyComponent, { shallow: true }).mount();\n tester.shallow.wrapper // equals to shallow()\n tester.shallow.instance // equals to tester.shallow.instance()\n*/\n\n/**\n * Testing utility class to mount a specific component with it's required wrappers.\n */\nclass Tester {\n public static Configuration: ConfigurationClass;\n\n public opts: ITesterOpts;\n\n public config: ConfigurationClass;\n public initialMount: React.ReactNode;\n public onBeforeMount?: (tester: Tester) => Promise;\n public profile: IProfile;\n public props: object;\n public TestedComponent: ComponentClass;\n\n public AppState: any;\n public shallow: any;\n public wrapper: any;\n\n public constructor (TestedComponent: ComponentClass, opts: ITesterOpts = {}) {\n this.config = Tester.Configuration;\n this.initialMount = opts.mount;\n this.onBeforeMount = opts.onBeforeMount;\n this.opts = opts;\n this.profile = {...this.config.profiles.Default, ...opts.profile};\n this.props = opts.props || {};\n this.TestedComponent = TestedComponent;\n\n // Allow testing without a main TestedComponent. This require an initialMount.\n if (!this.TestedComponent && this.initialMount) {\n this.TestedComponent = NullComponent;\n this.initialMount = {this.initialMount};\n }\n\n // Loop through hooks onInit(),\n this.config.getValidHooks(this, 'onInit').forEach((hook: IHook) => {\n hook.onInit(this);\n });\n }\n\n public getWrappers (): IWrapper[] {\n const wrappers: IWrapper[] = [];\n\n this.config.getValidHooks(this, 'component').forEach((hook: IHook) => {\n wrappers.push({\n component: hook.component,\n name: hook.name,\n props: getValue(this, hook.props),\n });\n });\n\n return wrappers;\n }\n\n public get instance () {\n return getInstance(this.component);\n }\n\n public get component () {\n return this.wrapper.find(this.TestedComponent);\n }\n\n public debug () {\n // tslint:disable-next-line:no-console\n console.log(this.wrapper.debug());\n }\n\n public html () {\n return this.component.html();\n }\n\n public text () {\n return this.component.text();\n }\n\n public find (selector: string) {\n return this.wrapper.find(selector);\n }\n\n public update () {\n return this.wrapper.update();\n }\n\n public async sleep (ms?: number) {\n await sleep(ms);\n }\n\n public async refresh (ms?: number) {\n await sleep(ms);\n this.update();\n }\n\n private getComponent (selector: ISelectArg) {\n return isString(selector) ? this.find(selector).first() : selector;\n }\n\n public changeInput (selector: ISelectArg, value: string) {\n const component = this.getComponent(selector);\n component.simulate('focus');\n component.simulate('change', { target: { value } });\n component.simulate('blur');\n }\n\n public click (selector: ISelectArg) {\n const component = this.getComponent(selector);\n component.simulate('click');\n }\n\n public async submit (selector: ISelectArg = 'form') {\n const component = this.getComponent(selector);\n component.simulate('submit');\n await this.refresh();\n }\n\n public createShallowWrapper () {\n this.shallow = {};\n const WrappedComponent = (this.TestedComponent as any).wrappedComponent as ComponentClass;\n\n this.shallow.wrapper = this.config.enzyme.mount(\n ,\n );\n this.shallow.instance = getInstance(this.shallow.wrapper);\n }\n\n public async mount (mountOpts: { async?: boolean } = {}) {\n\n // Loop through hooks onBeforeMount(),\n // This MUST be a regular for () loop to not throw the promise away. (forEach won't work)\n for (const hook of this.config.getValidHooks(this, 'onBeforeMount')) {\n await hook.onBeforeMount(this, mountOpts);\n }\n\n // Allows you to fetch data to set as props, prepare extra stores, etc.\n if (this.onBeforeMount) {\n await this.onBeforeMount(this);\n }\n\n const initialMount = this.initialMount || ;\n\n const WrapperTree = this.getWrappers().reduce((Tree, wrapper) => {\n const wrapperChildren = wrapper.renderChildren !== false && Tree;\n if (wrapper.props) {\n return {wrapperChildren};\n }\n return Tree;\n }, initialMount);\n\n this.wrapper = await this.config.enzyme.mount(WrapperTree);\n\n if (this.opts.shallow) {\n this.createShallowWrapper();\n }\n\n if (mountOpts.async) {\n await this.sleep();\n this.update();\n }\n\n return this;\n }\n}\n\nexport default Tester;\n","import Tester from './tester';\nimport { capitalize } from './utils';\nimport { ComponentClass, IConfig, IHook, IProfile, ITesterClass } from './interfaces';\n\n/*\n Tester Configuration Class\n*/\nclass ConfigurationClass {\n public enzyme: any;\n public hooks: { [key: string]: IHook } = {};\n public profiles: { [key: string]: IProfile } = {\n // Default profile, each of it's properties can be overwritten.\n Default: {} as IProfile,\n };\n public Tester: ITesterClass;\n\n public constructor (argTester: ITesterClass) {\n this.Tester = argTester;\n argTester.Configuration = this;\n }\n\n public configure (enzyme: any, config: IConfig) {\n this.enzyme = enzyme;\n\n if (config.hooks) {\n config.hooks.forEach((hook: IHook) => {\n this.registerHook(hook);\n });\n }\n\n if (config.profiles) {\n config.profiles.forEach((profile) => {\n this.registerProfile(profile);\n });\n }\n\n this.createShortcuts();\n\n return this.Tester;\n }\n\n /*\n Create shortcuts for each global profiles\n Tester shortcuts allows you to use a specific global profile without having to pass it in in the options.\n\n E.g.\n Using a new Tester.Light(MyComponent) allows you to skip the initialization of\n Transport, localStorage + Session and AppState.\n */\n public createShortcuts () {\n Object.keys(this.profiles).forEach((profileKey) => {\n this.Tester[profileKey] = (TestedComponent: ComponentClass, opts = {}) =>\n new this.Tester(TestedComponent, {...opts, profile: this.profiles[profileKey]});\n });\n }\n\n /*\n Hooks,\n {\n name: string,\n component: React.Component,\n props: object || fn(), // fn() allows this.AppState to be set for e.g\n onInit: fn(),\n onBeforeMount: fn(),\n shortCuts: {shortCutName: fn()},\n wrapper: fn() => { Component: React.Component, name: string, props: object }\n }\n\n Note: Order is important!\n */\n public registerHook (hook: IHook) {\n if (!hook.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n if (this.hooks[hook.name]) {\n throw new Error(`Tester.registerHook() : A hook named \"${hook.name}\" already exist.`);\n }\n\n // Validate hook properties here.\n\n this.hooks[hook.name] = hook;\n }\n\n /*\n Profiles,\n {\n // Profile keys must be hook names.\n }\n */\n public registerProfile (profile: IProfile) {\n if (!profile.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n\n const capitalizedName = capitalize(profile.name);\n\n if (this.profiles[capitalizedName] && capitalizedName !== 'Default') {\n throw new Error(`Tester.registerProfile() : A profile named \"${capitalizedName}\" already exist.`);\n }\n\n // Validate profile properties here.\n // - Does every key or the profile is a hook ?\n\n this.profiles[capitalizedName] = profile;\n }\n\n public getValidHooks (tester: Tester, hookProp: string): IHook[] {\n const hooks: IHook[] = [];\n\n Object.values(this.hooks).forEach((hook) => {\n let valid = true;\n if (!tester.profile[hook.name]) { valid = false; }\n if (hookProp && !hook[hookProp]) { valid = false; }\n\n if (valid) {\n hooks.push(hook);\n }\n });\n\n return hooks;\n }\n\n}\n\nexport default ConfigurationClass;\n","import Tester from './tester';\nimport ConfigurationClass from './ConfigurationClass';\n\nconst TesterConfig = new ConfigurationClass(Tester);\n\nexport {\n Tester,\n TesterConfig,\n};\n"],"names":["_sleep","sleep"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tester.umd.js b/dist/tester.umd.js index 38d3edd..6e2b6e2 100644 --- a/dist/tester.umd.js +++ b/dist/tester.umd.js @@ -123,21 +123,44 @@ var instance = component.instance(); return instance.wrappedInstance || instance; } - function getValue(tester, value) { return typeof value === 'function' ? value(tester) : value; } - function sleep() { - var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - return new Promise(function (resolve) { - return setTimeout(resolve, ms); - }); + return _sleep.apply(this, arguments); + } + + function _sleep() { + _sleep = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee() { + var ms, + _args = arguments; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + ms = _args.length > 0 && _args[0] !== undefined ? _args[0] : 0; + return _context.abrupt("return", new Promise(function (resolve) { + return setTimeout(resolve, ms); + })); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + return _sleep.apply(this, arguments); } function capitalize(string) { return string.charAt(0).toUpperCase() + string.slice(1); } + function isString(value) { + return typeof value === 'string' || value instanceof String; + } var NullComponent = function NullComponent(props) { return React__default.createElement(React.Fragment, props); @@ -171,10 +194,6 @@ /** * Testing utility class to mount a specific component with it's required wrappers. - * - * @param {ReactComponent} TestedComponent - * @param {Object} options - * @returns {Tester} */ @@ -235,7 +254,7 @@ }, { key: "debug", value: function debug() { - // eslint-disable-next-line no-console + // tslint:disable-next-line:no-console console.log(this.wrapper.debug()); } }, { @@ -315,6 +334,62 @@ return refresh; }() + }, { + key: "getComponent", + value: function getComponent(selector) { + return isString(selector) ? this.find(selector).first() : selector; + } + }, { + key: "changeInput", + value: function changeInput(selector, value) { + var component = this.getComponent(selector); + component.simulate('focus'); + component.simulate('change', { + target: { + value: value + } + }); + component.simulate('blur'); + } + }, { + key: "click", + value: function click(selector) { + var component = this.getComponent(selector); + component.simulate('click'); + } + }, { + key: "submit", + value: function () { + var _submit = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee3() { + var selector, + component, + _args3 = arguments; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + selector = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : 'form'; + component = this.getComponent(selector); + component.simulate('submit'); + _context3.next = 5; + return this.refresh(); + + case 5: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + + function submit() { + return _submit.apply(this, arguments); + } + + return submit; + }() }, { key: "createShallowWrapper", value: function createShallowWrapper() { @@ -328,7 +403,7 @@ value: function () { var _mount = _asyncToGenerator( /*#__PURE__*/ - regeneratorRuntime.mark(function _callee3() { + regeneratorRuntime.mark(function _callee4() { var mountOpts, _iteratorNormalCompletion, _didIteratorError, @@ -338,77 +413,77 @@ hook, initialMount, WrapperTree, - _args3 = arguments; + _args4 = arguments; - return regeneratorRuntime.wrap(function _callee3$(_context3) { + return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { - switch (_context3.prev = _context3.next) { + switch (_context4.prev = _context4.next) { case 0: - mountOpts = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}; + mountOpts = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {}; // Loop through hooks onBeforeMount(), // This MUST be a regular for () loop to not throw the promise away. (forEach won't work) _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; - _context3.prev = 4; + _context4.prev = 4; _iterator = this.config.getValidHooks(this, 'onBeforeMount')[Symbol.iterator](); case 6: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { - _context3.next = 13; + _context4.next = 13; break; } hook = _step.value; - _context3.next = 10; + _context4.next = 10; return hook.onBeforeMount(this, mountOpts); case 10: _iteratorNormalCompletion = true; - _context3.next = 6; + _context4.next = 6; break; case 13: - _context3.next = 19; + _context4.next = 19; break; case 15: - _context3.prev = 15; - _context3.t0 = _context3["catch"](4); + _context4.prev = 15; + _context4.t0 = _context4["catch"](4); _didIteratorError = true; - _iteratorError = _context3.t0; + _iteratorError = _context4.t0; case 19: - _context3.prev = 19; - _context3.prev = 20; + _context4.prev = 19; + _context4.prev = 20; if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } case 22: - _context3.prev = 22; + _context4.prev = 22; if (!_didIteratorError) { - _context3.next = 25; + _context4.next = 25; break; } throw _iteratorError; case 25: - return _context3.finish(22); + return _context4.finish(22); case 26: - return _context3.finish(19); + return _context4.finish(19); case 27: if (!this.onBeforeMount) { - _context3.next = 30; + _context4.next = 30; break; } - _context3.next = 30; + _context4.next = 30; return this.onBeforeMount(this); case 30: @@ -422,36 +497,36 @@ return Tree; }, initialMount); - _context3.next = 34; + _context4.next = 34; return this.config.enzyme.mount(WrapperTree); case 34: - this.wrapper = _context3.sent; + this.wrapper = _context4.sent; if (this.opts.shallow) { this.createShallowWrapper(); } if (!mountOpts.async) { - _context3.next = 40; + _context4.next = 40; break; } - _context3.next = 39; + _context4.next = 39; return this.sleep(); case 39: this.update(); case 40: - return _context3.abrupt("return", this); + return _context4.abrupt("return", this); case 41: case "end": - return _context3.stop(); + return _context4.stop(); } } - }, _callee3, this, [[4, 15, 19, 27], [20,, 22, 26]]); + }, _callee4, this, [[4, 15, 19, 27], [20,, 22, 26]]); })); function mount() { @@ -483,7 +558,7 @@ var ConfigurationClass = /*#__PURE__*/ function () { - function ConfigurationClass(Tester) { + function ConfigurationClass(argTester) { _classCallCheck(this, ConfigurationClass); this.enzyme = void 0; @@ -493,8 +568,8 @@ Default: {} }; this.Tester = void 0; - this.Tester = Tester; - Tester.Configuration = this; + this.Tester = argTester; + argTester.Configuration = this; } _createClass(ConfigurationClass, [{ @@ -523,7 +598,8 @@ Create shortcuts for each global profiles Tester shortcuts allows you to use a specific global profile without having to pass it in in the options. E.g. - Using a new Tester.Light(MyComponent) allows you to skip the initialization of Transport, localStorage + Session and AppState. + Using a new Tester.Light(MyComponent) allows you to skip the initialization of + Transport, localStorage + Session and AppState. */ }, { diff --git a/dist/tester.umd.js.map b/dist/tester.umd.js.map index 2ef4aa3..5f58e8c 100644 --- a/dist/tester.umd.js.map +++ b/dist/tester.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"tester.umd.js","sources":["../src/utils.ts","../src/tester.tsx","../src/ConfigurationClass.ts","../src/index.ts"],"sourcesContent":["/*\n Utilities\n*/\n\nfunction getInstance (component: any) {\n const instance = component.instance();\n return instance.wrappedInstance || instance;\n}\n\nfunction getValue (tester: any, value: unknown) {\n return typeof value === 'function' ? value(tester) : value;\n}\n\nfunction sleep (ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nfunction capitalize (string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport {\n capitalize,\n getInstance,\n getValue,\n sleep,\n};\n","import React, { Fragment } from 'react';\n\nimport {\n getInstance,\n getValue,\n sleep,\n} from './utils';\n\nimport ConfigurationClass from './ConfigurationClass';\nimport { IHook, IProfile, ITesterOpts, IWrapper, ComponentClass } from './interfaces';\n\nconst NullComponent: React.FC = (props: any) => ();\n\n\n/*\n Name: Tester\n Description: Testing utility class to mount a specific component with it's required wrappers.\n\n Usage:\n // Bootstrap Transport, localStorage + Session and an AppState.\n const tester = new Tester(MyComponent);\n\n // Bootstrap nothing, use with light components that doesn't need any of the above.\n const tester = new TesterLight(MyComponent);\n\n // Mount the component\n await tester.mount();\n\n // Test component that requires more JSX than the component only :\n const new Tester(MyComponent, {mount: (
)});\n\n // You can mount right away if no Transport or AppState modification is needed.\n const tester = await new Tester(MyComponent).mount();\n\n // opts.shallow is an experimental feature that allows you to test the TestedComponent instance behaviors.\n // Please only use it when necessary.\n const tester = await new Tester(MyComponent, { shallow: true }).mount();\n tester.shallow.wrapper // equals to shallow()\n tester.shallow.instance // equals to tester.shallow.instance()\n*/\n\n/**\n * Testing utility class to mount a specific component with it's required wrappers.\n *\n * @param {ReactComponent} TestedComponent\n * @param {Object} options\n * @returns {Tester}\n */\nclass Tester {\n static Configuration: ConfigurationClass;\n\n public opts: ITesterOpts;\n\n public config: ConfigurationClass;\n public initialMount: React.ReactNode;\n public onBeforeMount?: (tester: Tester) => Promise;\n public profile: IProfile;\n public props: object;\n public TestedComponent: ComponentClass;\n\n public AppState: any;\n public shallow: any;\n public wrapper: any;\n\n constructor (TestedComponent: ComponentClass, opts: ITesterOpts = {}) {\n this.config = Tester.Configuration;\n this.initialMount = opts.mount;\n this.onBeforeMount = opts.onBeforeMount;\n this.opts = opts;\n this.profile = {...this.config.profiles.Default, ...opts.profile};\n this.props = opts.props || {};\n this.TestedComponent = TestedComponent;\n\n // Allow testing without a main TestedComponent. This require an initialMount.\n if (!this.TestedComponent && this.initialMount) {\n this.TestedComponent = NullComponent;\n this.initialMount = {this.initialMount};\n }\n\n // Loop through hooks onInit(),\n this.config.getValidHooks(this, 'onInit').forEach((hook: IHook) => {\n hook.onInit(this);\n });\n }\n\n getWrappers () {\n const wrappers: IWrapper[] = [];\n\n this.config.getValidHooks(this, 'component').forEach((hook: IHook) => {\n wrappers.push({\n component: hook.component,\n name: hook.name,\n props: getValue(this, hook.props),\n });\n });\n\n return wrappers;\n }\n\n get instance () {\n return getInstance(this.component);\n }\n\n get component () {\n return this.wrapper.find(this.TestedComponent);\n }\n\n debug () {\n // eslint-disable-next-line no-console\n console.log(this.wrapper.debug());\n }\n\n html () {\n return this.component.html();\n }\n\n text () {\n return this.component.text();\n }\n\n find (selector: string) {\n return this.wrapper.find(selector);\n }\n\n update () {\n return this.wrapper.update();\n }\n\n async sleep (ms?: number) {\n await sleep(ms);\n }\n\n async refresh (ms?: number) {\n await sleep(ms);\n this.update();\n }\n\n createShallowWrapper () {\n this.shallow = {};\n const WrappedComponent = (this.TestedComponent as any).wrappedComponent as ComponentClass;\n\n this.shallow.wrapper = this.config.enzyme.mount(\n \n );\n this.shallow.instance = getInstance(this.shallow.wrapper);\n }\n\n async mount (mountOpts: { async?: boolean } = {}) {\n\n // Loop through hooks onBeforeMount(),\n // This MUST be a regular for () loop to not throw the promise away. (forEach won't work)\n for (const hook of this.config.getValidHooks(this, 'onBeforeMount')) {\n await hook.onBeforeMount(this, mountOpts);\n }\n\n // Allows you to fetch data to set as props, prepare extra stores, etc.\n if (this.onBeforeMount) {\n await this.onBeforeMount(this);\n }\n\n const initialMount = this.initialMount || ;\n\n const WrapperTree = this.getWrappers().reduce((Tree, wrapper) => {\n const wrapperChildren = wrapper.renderChildren !== false && Tree;\n if (wrapper.props) {\n return {wrapperChildren};\n }\n return Tree;\n }, initialMount);\n\n this.wrapper = await this.config.enzyme.mount(WrapperTree);\n\n if (this.opts.shallow) {\n this.createShallowWrapper();\n }\n\n if (mountOpts.async) {\n await this.sleep();\n this.update();\n }\n\n return this;\n }\n}\n\nexport default Tester;\n","import Tester from './tester';\nimport { capitalize } from './utils';\nimport { ComponentClass, IConfig, IHook, IProfile, TesterClass } from './interfaces';\n\n/*\n Tester Configuration Class\n*/\nclass ConfigurationClass {\n enzyme: any;\n hooks: { [key: string]: IHook } = {};\n profiles: { [key: string]: IProfile } = {\n // Default profile, each of it's properties can be overwritten.\n Default: {} as IProfile,\n };\n Tester: TesterClass;\n\n constructor (Tester: TesterClass) {\n this.Tester = Tester;\n Tester.Configuration = this;\n }\n\n configure (enzyme: any, config: IConfig) {\n this.enzyme = enzyme;\n\n if (config.hooks) {\n config.hooks.forEach((hook: IHook) => {\n this.registerHook(hook);\n });\n }\n\n if (config.profiles) {\n config.profiles.forEach((profile) => {\n this.registerProfile(profile);\n });\n }\n\n this.createShortcuts();\n\n return this.Tester;\n }\n\n /*\n Create shortcuts for each global profiles\n Tester shortcuts allows you to use a specific global profile without having to pass it in in the options.\n\n E.g.\n Using a new Tester.Light(MyComponent) allows you to skip the initialization of Transport, localStorage + Session and AppState.\n */\n createShortcuts () {\n Object.keys(this.profiles).forEach((profileKey) => {\n this.Tester[profileKey] = (TestedComponent: ComponentClass, opts = {}) => {\n return new this.Tester(TestedComponent, {...opts, profile: this.profiles[profileKey]});\n };\n });\n }\n\n /*\n Hooks,\n {\n name: string,\n component: React.Component,\n props: object || fn(), // fn() allows this.AppState to be set for e.g\n onInit: fn(),\n onBeforeMount: fn(),\n shortCuts: {shortCutName: fn()},\n wrapper: fn() => { Component: React.Component, name: string, props: object }\n }\n\n Note: Order is important!\n */\n registerHook (hook: IHook) {\n if (!hook.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n if (this.hooks[hook.name]) { throw new Error(`Tester.registerHook() : A hook named \"${hook.name}\" already exist.`); }\n\n // Validate hook properties here.\n\n this.hooks[hook.name] = hook;\n }\n\n /*\n Profiles,\n {\n // Profile keys must be hook names.\n }\n */\n registerProfile (profile: IProfile) {\n if (!profile.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n\n const capitalizedName = capitalize(profile.name);\n\n if (this.profiles[capitalizedName] && capitalizedName !== 'Default') {\n throw new Error(`Tester.registerProfile() : A profile named \"${capitalizedName}\" already exist.`);\n }\n\n // Validate profile properties here.\n // - Does every key or the profile is a hook ?\n\n this.profiles[capitalizedName] = profile;\n }\n\n getValidHooks (tester: Tester, hookProp: string): IHook[] {\n const hooks: IHook[] = [];\n\n Object.values(this.hooks).forEach((hook) => {\n let valid = true;\n if (!tester.profile[hook.name]) { valid = false; }\n if (hookProp && !hook[hookProp]) { valid = false; }\n\n if (valid) {\n hooks.push(hook);\n }\n });\n\n return hooks;\n }\n\n}\n\nexport default ConfigurationClass;\n","import Tester from './tester';\nimport ConfigurationClass from './ConfigurationClass';\n\nconst TesterConfig = new ConfigurationClass(Tester);\n\nexport {\n Tester,\n TesterConfig,\n}\n"],"names":["React","Fragment","_sleep","sleep"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tester.umd.js","sources":["../src/utils.ts","../src/tester.tsx","../src/ConfigurationClass.ts","../src/index.ts"],"sourcesContent":["/*\n Utilities\n*/\n\nexport function getInstance (component: any) {\n const instance = component.instance();\n return instance.wrappedInstance || instance;\n}\n\nexport function getValue (tester: any, value: unknown) {\n return typeof value === 'function' ? value(tester) : value;\n}\n\nexport async function sleep (ms: number = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function capitalize (string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function isString (value: unknown): value is string {\n return typeof value === 'string' || value instanceof String;\n}\n","import React, { Fragment } from 'react';\n\nimport {\n getInstance,\n getValue,\n isString,\n sleep,\n} from './utils';\n\nimport ConfigurationClass from './ConfigurationClass';\nimport { IHook, IProfile, ITesterOpts, IWrapper, ComponentClass } from './interfaces';\n\ntype ISelectArg = string | { simulate: (event: string) => void };\n\nconst NullComponent: React.FC = (props: any) => ();\n\n/*\n Name: Tester\n Description: Testing utility class to mount a specific component with it's required wrappers.\n\n Usage:\n // Bootstrap Transport, localStorage + Session and an AppState.\n const tester = new Tester(MyComponent);\n\n // Bootstrap nothing, use with light components that doesn't need any of the above.\n const tester = new TesterLight(MyComponent);\n\n // Mount the component\n await tester.mount();\n\n // Test component that requires more JSX than the component only :\n const new Tester(MyComponent, {mount: (
)});\n\n // You can mount right away if no Transport or AppState modification is needed.\n const tester = await new Tester(MyComponent).mount();\n\n // opts.shallow is an experimental feature that allows you to test the TestedComponent instance behaviors.\n // Please only use it when necessary.\n const tester = await new Tester(MyComponent, { shallow: true }).mount();\n tester.shallow.wrapper // equals to shallow()\n tester.shallow.instance // equals to tester.shallow.instance()\n*/\n\n/**\n * Testing utility class to mount a specific component with it's required wrappers.\n */\nclass Tester {\n public static Configuration: ConfigurationClass;\n\n public opts: ITesterOpts;\n\n public config: ConfigurationClass;\n public initialMount: React.ReactNode;\n public onBeforeMount?: (tester: Tester) => Promise;\n public profile: IProfile;\n public props: object;\n public TestedComponent: ComponentClass;\n\n public AppState: any;\n public shallow: any;\n public wrapper: any;\n\n public constructor (TestedComponent: ComponentClass, opts: ITesterOpts = {}) {\n this.config = Tester.Configuration;\n this.initialMount = opts.mount;\n this.onBeforeMount = opts.onBeforeMount;\n this.opts = opts;\n this.profile = {...this.config.profiles.Default, ...opts.profile};\n this.props = opts.props || {};\n this.TestedComponent = TestedComponent;\n\n // Allow testing without a main TestedComponent. This require an initialMount.\n if (!this.TestedComponent && this.initialMount) {\n this.TestedComponent = NullComponent;\n this.initialMount = {this.initialMount};\n }\n\n // Loop through hooks onInit(),\n this.config.getValidHooks(this, 'onInit').forEach((hook: IHook) => {\n hook.onInit(this);\n });\n }\n\n public getWrappers (): IWrapper[] {\n const wrappers: IWrapper[] = [];\n\n this.config.getValidHooks(this, 'component').forEach((hook: IHook) => {\n wrappers.push({\n component: hook.component,\n name: hook.name,\n props: getValue(this, hook.props),\n });\n });\n\n return wrappers;\n }\n\n public get instance () {\n return getInstance(this.component);\n }\n\n public get component () {\n return this.wrapper.find(this.TestedComponent);\n }\n\n public debug () {\n // tslint:disable-next-line:no-console\n console.log(this.wrapper.debug());\n }\n\n public html () {\n return this.component.html();\n }\n\n public text () {\n return this.component.text();\n }\n\n public find (selector: string) {\n return this.wrapper.find(selector);\n }\n\n public update () {\n return this.wrapper.update();\n }\n\n public async sleep (ms?: number) {\n await sleep(ms);\n }\n\n public async refresh (ms?: number) {\n await sleep(ms);\n this.update();\n }\n\n private getComponent (selector: ISelectArg) {\n return isString(selector) ? this.find(selector).first() : selector;\n }\n\n public changeInput (selector: ISelectArg, value: string) {\n const component = this.getComponent(selector);\n component.simulate('focus');\n component.simulate('change', { target: { value } });\n component.simulate('blur');\n }\n\n public click (selector: ISelectArg) {\n const component = this.getComponent(selector);\n component.simulate('click');\n }\n\n public async submit (selector: ISelectArg = 'form') {\n const component = this.getComponent(selector);\n component.simulate('submit');\n await this.refresh();\n }\n\n public createShallowWrapper () {\n this.shallow = {};\n const WrappedComponent = (this.TestedComponent as any).wrappedComponent as ComponentClass;\n\n this.shallow.wrapper = this.config.enzyme.mount(\n ,\n );\n this.shallow.instance = getInstance(this.shallow.wrapper);\n }\n\n public async mount (mountOpts: { async?: boolean } = {}) {\n\n // Loop through hooks onBeforeMount(),\n // This MUST be a regular for () loop to not throw the promise away. (forEach won't work)\n for (const hook of this.config.getValidHooks(this, 'onBeforeMount')) {\n await hook.onBeforeMount(this, mountOpts);\n }\n\n // Allows you to fetch data to set as props, prepare extra stores, etc.\n if (this.onBeforeMount) {\n await this.onBeforeMount(this);\n }\n\n const initialMount = this.initialMount || ;\n\n const WrapperTree = this.getWrappers().reduce((Tree, wrapper) => {\n const wrapperChildren = wrapper.renderChildren !== false && Tree;\n if (wrapper.props) {\n return {wrapperChildren};\n }\n return Tree;\n }, initialMount);\n\n this.wrapper = await this.config.enzyme.mount(WrapperTree);\n\n if (this.opts.shallow) {\n this.createShallowWrapper();\n }\n\n if (mountOpts.async) {\n await this.sleep();\n this.update();\n }\n\n return this;\n }\n}\n\nexport default Tester;\n","import Tester from './tester';\nimport { capitalize } from './utils';\nimport { ComponentClass, IConfig, IHook, IProfile, ITesterClass } from './interfaces';\n\n/*\n Tester Configuration Class\n*/\nclass ConfigurationClass {\n public enzyme: any;\n public hooks: { [key: string]: IHook } = {};\n public profiles: { [key: string]: IProfile } = {\n // Default profile, each of it's properties can be overwritten.\n Default: {} as IProfile,\n };\n public Tester: ITesterClass;\n\n public constructor (argTester: ITesterClass) {\n this.Tester = argTester;\n argTester.Configuration = this;\n }\n\n public configure (enzyme: any, config: IConfig) {\n this.enzyme = enzyme;\n\n if (config.hooks) {\n config.hooks.forEach((hook: IHook) => {\n this.registerHook(hook);\n });\n }\n\n if (config.profiles) {\n config.profiles.forEach((profile) => {\n this.registerProfile(profile);\n });\n }\n\n this.createShortcuts();\n\n return this.Tester;\n }\n\n /*\n Create shortcuts for each global profiles\n Tester shortcuts allows you to use a specific global profile without having to pass it in in the options.\n\n E.g.\n Using a new Tester.Light(MyComponent) allows you to skip the initialization of\n Transport, localStorage + Session and AppState.\n */\n public createShortcuts () {\n Object.keys(this.profiles).forEach((profileKey) => {\n this.Tester[profileKey] = (TestedComponent: ComponentClass, opts = {}) =>\n new this.Tester(TestedComponent, {...opts, profile: this.profiles[profileKey]});\n });\n }\n\n /*\n Hooks,\n {\n name: string,\n component: React.Component,\n props: object || fn(), // fn() allows this.AppState to be set for e.g\n onInit: fn(),\n onBeforeMount: fn(),\n shortCuts: {shortCutName: fn()},\n wrapper: fn() => { Component: React.Component, name: string, props: object }\n }\n\n Note: Order is important!\n */\n public registerHook (hook: IHook) {\n if (!hook.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n if (this.hooks[hook.name]) {\n throw new Error(`Tester.registerHook() : A hook named \"${hook.name}\" already exist.`);\n }\n\n // Validate hook properties here.\n\n this.hooks[hook.name] = hook;\n }\n\n /*\n Profiles,\n {\n // Profile keys must be hook names.\n }\n */\n public registerProfile (profile: IProfile) {\n if (!profile.name) { throw new Error('Tester.registerHook() : A hooks must have a name.'); }\n\n const capitalizedName = capitalize(profile.name);\n\n if (this.profiles[capitalizedName] && capitalizedName !== 'Default') {\n throw new Error(`Tester.registerProfile() : A profile named \"${capitalizedName}\" already exist.`);\n }\n\n // Validate profile properties here.\n // - Does every key or the profile is a hook ?\n\n this.profiles[capitalizedName] = profile;\n }\n\n public getValidHooks (tester: Tester, hookProp: string): IHook[] {\n const hooks: IHook[] = [];\n\n Object.values(this.hooks).forEach((hook) => {\n let valid = true;\n if (!tester.profile[hook.name]) { valid = false; }\n if (hookProp && !hook[hookProp]) { valid = false; }\n\n if (valid) {\n hooks.push(hook);\n }\n });\n\n return hooks;\n }\n\n}\n\nexport default ConfigurationClass;\n","import Tester from './tester';\nimport ConfigurationClass from './ConfigurationClass';\n\nconst TesterConfig = new ConfigurationClass(Tester);\n\nexport {\n Tester,\n TesterConfig,\n};\n"],"names":["React","Fragment","_sleep","sleep"],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils.d.ts b/dist/utils.d.ts index 8483216..e68c31f 100644 --- a/dist/utils.d.ts +++ b/dist/utils.d.ts @@ -1,5 +1,5 @@ -declare function getInstance(component: any): any; -declare function getValue(tester: any, value: unknown): any; -declare function sleep(ms?: number): Promise<{}>; -declare function capitalize(string: string): string; -export { capitalize, getInstance, getValue, sleep, }; +export declare function getInstance(component: any): any; +export declare function getValue(tester: any, value: unknown): any; +export declare function sleep(ms?: number): Promise; +export declare function capitalize(string: string): string; +export declare function isString(value: unknown): value is string; diff --git a/package-lock.json b/package-lock.json index ae87297..a64e04d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@mighty-justice/tester", - "version": "1.1.0", + "version": "1.2.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e2f9a35..25cd2cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mighty-justice/tester", - "version": "1.1.0", + "version": "1.2.1", "description": "Bootstrap your tests!", "main": "dist/tester.cjs.js", "module": "dist/tester.esm.js",