@delon/testing 18.3.0 → 19.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/testing.mjs +5 -13
- package/fesm2022/testing.mjs.map +1 -1
- package/package.json +1 -3
- package/src/g2.d.ts +1 -5
- package/esm2022/public_api.mjs +0 -9
- package/esm2022/src/cdk-overlay.mjs +0 -13
- package/esm2022/src/dispatch-events.mjs +0 -30
- package/esm2022/src/event-objects.mjs +0 -55
- package/esm2022/src/g2.mjs +0 -154
- package/esm2022/src/suite.mjs +0 -28
- package/esm2022/src/type-in-element.mjs +0 -21
- package/esm2022/src/zorro.mjs +0 -24
- package/esm2022/testing.mjs +0 -5
package/fesm2022/testing.mjs
CHANGED
|
@@ -104,6 +104,7 @@ function typeInElement(value, element) {
|
|
|
104
104
|
element.focus();
|
|
105
105
|
element.value = value;
|
|
106
106
|
dispatchFakeEvent(element, 'input');
|
|
107
|
+
dispatchFakeEvent(element, 'change');
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
const DROPDOWN_MIN_TIME = 1000;
|
|
@@ -129,6 +130,7 @@ function dispatchDropDown(dl, trigger, allowNull = true) {
|
|
|
129
130
|
const PageG2DataCount = 2;
|
|
130
131
|
const PageG2Height = 100;
|
|
131
132
|
class PageG2 {
|
|
133
|
+
fixture;
|
|
132
134
|
constructor(fixture = null) {
|
|
133
135
|
this.fixture = fixture;
|
|
134
136
|
}
|
|
@@ -144,13 +146,6 @@ class PageG2 {
|
|
|
144
146
|
get chart() {
|
|
145
147
|
return this.comp.chart;
|
|
146
148
|
}
|
|
147
|
-
genModule(module, comp) {
|
|
148
|
-
TestBed.configureTestingModule({
|
|
149
|
-
imports: [module],
|
|
150
|
-
declarations: [comp]
|
|
151
|
-
});
|
|
152
|
-
return this;
|
|
153
|
-
}
|
|
154
149
|
genComp(comp, dc = false) {
|
|
155
150
|
this.fixture = TestBed.createComponent(comp);
|
|
156
151
|
if (dc) {
|
|
@@ -158,10 +153,6 @@ class PageG2 {
|
|
|
158
153
|
}
|
|
159
154
|
return this;
|
|
160
155
|
}
|
|
161
|
-
makeModule(module, comp, options = { dc: true }) {
|
|
162
|
-
this.genModule(module, comp).genComp(comp, options.dc);
|
|
163
|
-
return this;
|
|
164
|
-
}
|
|
165
156
|
dcFirst() {
|
|
166
157
|
this.dc();
|
|
167
158
|
flush();
|
|
@@ -262,9 +253,9 @@ class PageG2 {
|
|
|
262
253
|
return this;
|
|
263
254
|
}
|
|
264
255
|
}
|
|
265
|
-
function checkDelay(
|
|
256
|
+
function checkDelay(comp, page = null) {
|
|
266
257
|
if (page == null) {
|
|
267
|
-
page = new PageG2().
|
|
258
|
+
page = new PageG2().genComp(comp, false);
|
|
268
259
|
}
|
|
269
260
|
const context = page.context;
|
|
270
261
|
if (typeof context.delay === 'undefined') {
|
|
@@ -280,6 +271,7 @@ function checkDelay(module, comp, page = null) {
|
|
|
280
271
|
}
|
|
281
272
|
|
|
282
273
|
class TestContext {
|
|
274
|
+
fixture;
|
|
283
275
|
constructor(fixture) {
|
|
284
276
|
this.fixture = fixture;
|
|
285
277
|
}
|
package/fesm2022/testing.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../packages/testing/src/event-objects.ts","../../../../packages/testing/src/dispatch-events.ts","../../../../packages/testing/src/type-in-element.ts","../../../../packages/testing/src/zorro.ts","../../../../packages/testing/src/g2.ts","../../../../packages/testing/src/suite.ts","../../../../packages/testing/src/cdk-overlay.ts","../../../../packages/testing/public_api.ts","../../../../packages/testing/testing.ts"],"sourcesContent":["import type { NzSafeAny } from 'ng-zorro-antd/core/types';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Creates a browser MouseEvent with the specified options. */\nexport function createMouseEvent(type: string, x: number = 0, y: number = 0): MouseEvent {\n const event = document.createEvent('MouseEvent');\n\n event.initMouseEvent(\n type,\n false /* canBubble */,\n false /* cancelable */,\n window /* view */,\n 0 /* detail */,\n x /* screenX */,\n y /* screenY */,\n x /* clientX */,\n y /* clientY */,\n false /* ctrlKey */,\n false /* altKey */,\n false /* shiftKey */,\n false /* metaKey */,\n 0 /* button */,\n null /* relatedTarget */\n );\n\n return event;\n}\n\n/** Creates a browser TouchEvent with the specified pointer coordinates. */\nexport function createTouchEvent(type: string, pageX: number = 0, pageY: number = 0): UIEvent {\n // In favor of creating events that work for most of the browsers, the event is created\n // as a basic UI Event. The necessary details for the event will be set manually.\n const event = document.createEvent('UIEvent');\n const touchDetails = { pageX, pageY };\n\n (event as NzSafeAny).initUIEvent(type, true, true, window, 0);\n\n // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\n // the touch details.\n Object.defineProperties(event, {\n touches: { value: [touchDetails] }\n });\n\n return event;\n}\n\n/** Dispatches a keydown event from an element. */\nexport function createKeyboardEvent(type: string, keyCode: number, target?: Element, key?: string): NzSafeAny {\n const event = document.createEvent('KeyboardEvent') as NzSafeAny;\n // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\n const initEventFn = (event.initKeyEvent || event.initKeyboardEvent).bind(event);\n const originalPreventDefault = event.preventDefault;\n\n initEventFn(type, true, true, window, 0, 0, 0, 0, 0, keyCode);\n\n // Webkit Browsers don't set the keyCode when calling the init function.\n // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\n Object.defineProperties(event, {\n keyCode: { get: () => keyCode },\n key: { get: () => key },\n target: { get: () => target }\n });\n\n // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n event.preventDefault = function (): NzSafeAny {\n Object.defineProperty(event, 'defaultPrevented', { get: () => true });\n return originalPreventDefault.apply(this, arguments);\n };\n\n return event;\n}\n\n/** Creates a fake event object with any desired event type. */\nexport function createFakeEvent(type: string, canBubble: boolean = true, cancelable: boolean = true): Event {\n const event = document.createEvent('Event');\n event.initEvent(type, canBubble, cancelable);\n return event;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent } from './event-objects';\n\n/** Utility to dispatch any event on a Node. */\nexport function dispatchEvent(node: Node | Window, event: Event): Event {\n node.dispatchEvent(event);\n return event;\n}\n\n/** Shorthand to dispatch a fake event on a specified node. */\nexport function dispatchFakeEvent(node: Node | Window, type: string | Event, canBubble?: boolean): Event {\n return dispatchEvent(node, typeof type === 'string' ? createFakeEvent(type, canBubble) : type);\n}\n\n/** Shorthand to dispatch a keyboard event with a specified key code. */\nexport function dispatchKeyboardEvent(node: Node, type: string, keyCode: number, target?: Element): KeyboardEvent {\n return dispatchEvent(node, createKeyboardEvent(type, keyCode, target)) as KeyboardEvent;\n}\n\n/** Shorthand to dispatch a mouse event on the specified coordinates. */\nexport function dispatchMouseEvent(\n node: Node,\n type: string,\n x: number = 0,\n y: number = 0,\n event: MouseEvent = createMouseEvent(type, x, y)\n): MouseEvent {\n return dispatchEvent(node, event) as MouseEvent;\n}\n\n/** Shorthand to dispatch a touch event on the specified coordinates. */\nexport function dispatchTouchEvent(node: Node, type: string, x: number = 0, y: number = 0): Event {\n return dispatchEvent(node, createTouchEvent(type, x, y));\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { dispatchFakeEvent } from './dispatch-events';\n\n/**\n * Focuses an input, sets its value and dispatches\n * the `input` event, simulating the user typing.\n *\n * @param value Value to be set on the input.\n * @param element Element onto which to set the value.\n */\nexport function typeInElement(value: string, element: HTMLInputElement): void {\n element.focus();\n element.value = value;\n dispatchFakeEvent(element, 'input');\n}\n","import { DebugElement } from '@angular/core';\nimport { tick } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\n\nimport { NzDropDownDirective } from 'ng-zorro-antd/dropdown';\n\nimport { dispatchFakeEvent } from './dispatch-events';\n\nexport const DROPDOWN_MIN_TIME = 1000;\n\n/**\n * 触发 dropdown\n */\nexport function dispatchDropDown(\n dl: DebugElement,\n trigger: 'mouseleave' | 'click',\n allowNull: boolean = true\n): boolean {\n const directive = dl.query(By.directive(NzDropDownDirective));\n if (allowNull && directive == null) {\n return false;\n }\n const el = directive.injector.get<NzDropDownDirective>(NzDropDownDirective).elementRef.nativeElement as HTMLElement;\n if (trigger === 'click') {\n dispatchFakeEvent(el, 'click');\n } else {\n dispatchFakeEvent(el, 'mouseenter');\n }\n tick(DROPDOWN_MIN_TIME);\n return true;\n}\n","import { DebugElement, Type } from '@angular/core';\nimport { ComponentFixture, discardPeriodicTasks, flush, TestBed, tick } from '@angular/core/testing';\n\nimport { Chart } from '@antv/g2';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport type PageG2Type = 'geometries' | 'views';\n\nexport const PageG2DataCount = 2;\nexport const PageG2Height = 100;\n\nexport class PageG2<T> {\n constructor(public fixture: ComponentFixture<T> | null = null) {}\n\n get dl(): DebugElement {\n return this.fixture!.debugElement;\n }\n\n get context(): T {\n return this.fixture!.componentInstance;\n }\n\n get comp(): NzSafeAny {\n return (this.context as NzSafeAny)['comp'];\n }\n\n get chart(): Chart {\n return this.comp.chart;\n }\n\n genModule<M>(module: M, comp: Type<T>): this {\n TestBed.configureTestingModule({\n imports: [module],\n declarations: [comp]\n });\n return this;\n }\n\n genComp(comp: Type<T>, dc: boolean = false): this {\n this.fixture = TestBed.createComponent(comp);\n if (dc) {\n this.dcFirst();\n }\n return this;\n }\n\n makeModule<M>(module: M, comp: Type<T>, options: { dc: boolean } = { dc: true }): PageG2<T> {\n this.genModule(module, comp).genComp(comp, options.dc);\n return this;\n }\n\n dcFirst(): this {\n this.dc();\n flush();\n discardPeriodicTasks();\n // FIX: `Error during cleanup of component`\n if (this.comp && typeof this.comp.chart !== 'undefined') {\n spyOn(this.comp.chart, 'destroy');\n }\n return this;\n }\n\n dc(): this {\n this.fixture!.changeDetectorRef.markForCheck();\n this.fixture!.detectChanges();\n return this;\n }\n\n end(): this {\n // The 201 value is delay value\n tick(201);\n flush();\n discardPeriodicTasks();\n return this;\n }\n\n destroy(): void {\n this.comp.ngOnDestroy();\n }\n\n newData(data: NzSafeAny): this {\n (this.context as NzSafeAny)['data'] = data;\n this.dc();\n return this;\n }\n\n getEls(cls: string): NodeListOf<HTMLElement> {\n return (this.dl.nativeElement as HTMLElement).querySelectorAll(cls);\n }\n\n getEl(cls: string): HTMLElement {\n return (this.dl.nativeElement as HTMLElement).querySelector(cls) as HTMLElement;\n }\n\n getController(type: 'axis' | 'legend'): NzSafeAny {\n return this.chart.getController(type) as NzSafeAny;\n }\n\n isCanvas(stauts: boolean = true): this {\n this.isExists('canvas', stauts);\n return this;\n }\n\n isText(cls: string, value: string): this {\n const el = this.getEl(cls);\n expect(el ? el.textContent!.trim() : '').toBe(value);\n return this;\n }\n\n isExists(cls: string, stauts: boolean = true): this {\n expect(this.getEl(cls) != null).toBe(stauts);\n return this;\n }\n\n checkOptions(key: string, value: NzSafeAny): this {\n expect((this.chart as NzSafeAny)[key]).toBe(value);\n return this;\n }\n\n checkAttrOptions(type: PageG2Type, key: string, value: NzSafeAny): this {\n const x = (this.chart[type][0] as NzSafeAny).attributeOption[key];\n expect(x.field).toBe(value);\n return this;\n }\n\n isXScalesCount(num: number): this {\n const x = this.chart.getXScale();\n expect(x.values!.length).toBe(num);\n return this;\n }\n\n isYScalesCount(num: number): this {\n const y = this.chart.getYScales();\n expect(y.length).toBe(1);\n expect(y[0].values!.length).toBe(num);\n return this;\n }\n\n isDataCount(type: PageG2Type, num: number): this {\n const results = this.chart[type];\n expect(results.length).toBeGreaterThan(0);\n expect(results[0].data.length).toBe(num);\n return this;\n }\n\n get firstDataPoint(): { x: number; y: number } {\n return this.chart.getXY((this.context as NzSafeAny)['data'][0]);\n }\n\n checkTooltip(_includeText: string | null, point?: { x: number; y: number }): this {\n if (!point) {\n point = this.firstDataPoint;\n }\n this.chart.showTooltip(point);\n expect(this.chart.getController('tooltip') != null).toBe(true);\n return this;\n }\n\n checkClickItem(): this {\n const point = this.firstDataPoint;\n const clientPoint = this.chart.canvas.getClientByPoint(point.x, point.y);\n const event = new MouseEvent('click', {\n clientX: clientPoint.x,\n clientY: clientPoint.y\n });\n (this.chart.canvas.get('el') as HTMLElement).dispatchEvent(event);\n return this;\n }\n}\n\nexport function checkDelay<M, T>(module: M, comp: Type<T>, page: PageG2<T> | null = null): void {\n if (page == null) {\n page = new PageG2<T>().makeModule(module, comp, { dc: false });\n }\n const context = page.context as NzSafeAny;\n if (typeof context.delay === 'undefined') {\n console.warn(`You muse be dinfed \"delay\" property in test component`);\n return;\n }\n context.delay = 100;\n page.dc();\n page.comp.ngOnDestroy();\n expect(page.chart == null).toBe(true);\n tick(201);\n discardPeriodicTasks();\n}\n","import { DebugElement, Type } from '@angular/core';\nimport { ComponentFixture, TestBed } from '@angular/core/testing';\n\nexport class TestContext<T> {\n constructor(public fixture: ComponentFixture<T>) {}\n\n get component(): T {\n return this.fixture.componentInstance;\n }\n\n get el(): HTMLElement {\n return this.fixture.debugElement.nativeElement;\n }\n\n get dl(): DebugElement {\n return this.fixture.debugElement;\n }\n\n get context(): T {\n return this.fixture.componentInstance;\n }\n\n detectChanges(): void {\n this.fixture.detectChanges();\n }\n\n resolve<T1>(component: Type<T1>): T1 {\n return this.fixture.debugElement.injector.get(component) as T1;\n }\n}\n\nexport const createTestContext = <T>(component: Type<T>): TestContext<T> => {\n return new TestContext<T>(TestBed.createComponent<T>(component));\n};\n","/**\n * 清除Cdk的窗体,以便下一次使用,一般这样使用:\n * ```ts\n * afterEach(cleanCdkOverlayHtml);\n * ```\n */\nexport function cleanCdkOverlayHtml(): void {\n const els = document.querySelectorAll('.cdk-overlay-container');\n if (els && els.length > 0) {\n els.forEach(el => (el.innerHTML = ''));\n }\n}\n","// from angular\nexport * from './src/dispatch-events';\nexport * from './src/event-objects';\nexport * from './src/type-in-element';\n\nexport * from './src/zorro';\nexport * from './src/g2';\nexport * from './src/suite';\nexport * from './src/cdk-overlay';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testing.mjs","sources":["../../../../packages/testing/src/event-objects.ts","../../../../packages/testing/src/dispatch-events.ts","../../../../packages/testing/src/type-in-element.ts","../../../../packages/testing/src/zorro.ts","../../../../packages/testing/src/g2.ts","../../../../packages/testing/src/suite.ts","../../../../packages/testing/src/cdk-overlay.ts","../../../../packages/testing/public_api.ts","../../../../packages/testing/testing.ts"],"sourcesContent":["import type { NzSafeAny } from 'ng-zorro-antd/core/types';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Creates a browser MouseEvent with the specified options. */\nexport function createMouseEvent(type: string, x: number = 0, y: number = 0): MouseEvent {\n const event = document.createEvent('MouseEvent');\n\n event.initMouseEvent(\n type,\n false /* canBubble */,\n false /* cancelable */,\n window /* view */,\n 0 /* detail */,\n x /* screenX */,\n y /* screenY */,\n x /* clientX */,\n y /* clientY */,\n false /* ctrlKey */,\n false /* altKey */,\n false /* shiftKey */,\n false /* metaKey */,\n 0 /* button */,\n null /* relatedTarget */\n );\n\n return event;\n}\n\n/** Creates a browser TouchEvent with the specified pointer coordinates. */\nexport function createTouchEvent(type: string, pageX: number = 0, pageY: number = 0): UIEvent {\n // In favor of creating events that work for most of the browsers, the event is created\n // as a basic UI Event. The necessary details for the event will be set manually.\n const event = document.createEvent('UIEvent');\n const touchDetails = { pageX, pageY };\n\n (event as NzSafeAny).initUIEvent(type, true, true, window, 0);\n\n // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\n // the touch details.\n Object.defineProperties(event, {\n touches: { value: [touchDetails] }\n });\n\n return event;\n}\n\n/** Dispatches a keydown event from an element. */\nexport function createKeyboardEvent(type: string, keyCode: number, target?: Element, key?: string): NzSafeAny {\n const event = document.createEvent('KeyboardEvent') as NzSafeAny;\n // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\n const initEventFn = (event.initKeyEvent || event.initKeyboardEvent).bind(event);\n const originalPreventDefault = event.preventDefault;\n\n initEventFn(type, true, true, window, 0, 0, 0, 0, 0, keyCode);\n\n // Webkit Browsers don't set the keyCode when calling the init function.\n // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\n Object.defineProperties(event, {\n keyCode: { get: () => keyCode },\n key: { get: () => key },\n target: { get: () => target }\n });\n\n // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n event.preventDefault = function (): NzSafeAny {\n Object.defineProperty(event, 'defaultPrevented', { get: () => true });\n return originalPreventDefault.apply(this, arguments);\n };\n\n return event;\n}\n\n/** Creates a fake event object with any desired event type. */\nexport function createFakeEvent(type: string, canBubble: boolean = true, cancelable: boolean = true): Event {\n const event = document.createEvent('Event');\n event.initEvent(type, canBubble, cancelable);\n return event;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent } from './event-objects';\n\n/** Utility to dispatch any event on a Node. */\nexport function dispatchEvent(node: Node | Window, event: Event): Event {\n node.dispatchEvent(event);\n return event;\n}\n\n/** Shorthand to dispatch a fake event on a specified node. */\nexport function dispatchFakeEvent(node: Node | Window, type: string | Event, canBubble?: boolean): Event {\n return dispatchEvent(node, typeof type === 'string' ? createFakeEvent(type, canBubble) : type);\n}\n\n/** Shorthand to dispatch a keyboard event with a specified key code. */\nexport function dispatchKeyboardEvent(node: Node, type: string, keyCode: number, target?: Element): KeyboardEvent {\n return dispatchEvent(node, createKeyboardEvent(type, keyCode, target)) as KeyboardEvent;\n}\n\n/** Shorthand to dispatch a mouse event on the specified coordinates. */\nexport function dispatchMouseEvent(\n node: Node,\n type: string,\n x: number = 0,\n y: number = 0,\n event: MouseEvent = createMouseEvent(type, x, y)\n): MouseEvent {\n return dispatchEvent(node, event) as MouseEvent;\n}\n\n/** Shorthand to dispatch a touch event on the specified coordinates. */\nexport function dispatchTouchEvent(node: Node, type: string, x: number = 0, y: number = 0): Event {\n return dispatchEvent(node, createTouchEvent(type, x, y));\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { dispatchFakeEvent } from './dispatch-events';\n\n/**\n * Focuses an input, sets its value and dispatches\n * the `input` event, simulating the user typing.\n *\n * @param value Value to be set on the input.\n * @param element Element onto which to set the value.\n */\nexport function typeInElement(value: string, element: HTMLInputElement): void {\n element.focus();\n element.value = value;\n dispatchFakeEvent(element, 'input');\n dispatchFakeEvent(element, 'change');\n}\n","import { DebugElement } from '@angular/core';\nimport { tick } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\n\nimport { NzDropDownDirective } from 'ng-zorro-antd/dropdown';\n\nimport { dispatchFakeEvent } from './dispatch-events';\n\nexport const DROPDOWN_MIN_TIME = 1000;\n\n/**\n * 触发 dropdown\n */\nexport function dispatchDropDown(\n dl: DebugElement,\n trigger: 'mouseleave' | 'click',\n allowNull: boolean = true\n): boolean {\n const directive = dl.query(By.directive(NzDropDownDirective));\n if (allowNull && directive == null) {\n return false;\n }\n const el = directive.injector.get<NzDropDownDirective>(NzDropDownDirective).elementRef.nativeElement as HTMLElement;\n if (trigger === 'click') {\n dispatchFakeEvent(el, 'click');\n } else {\n dispatchFakeEvent(el, 'mouseenter');\n }\n tick(DROPDOWN_MIN_TIME);\n return true;\n}\n","import { DebugElement, Type } from '@angular/core';\nimport { ComponentFixture, discardPeriodicTasks, flush, TestBed, tick } from '@angular/core/testing';\n\nimport { Chart } from '@antv/g2';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport type PageG2Type = 'geometries' | 'views';\n\nexport const PageG2DataCount = 2;\nexport const PageG2Height = 100;\n\nexport class PageG2<T> {\n constructor(public fixture: ComponentFixture<T> | null = null) {}\n\n get dl(): DebugElement {\n return this.fixture!.debugElement;\n }\n\n get context(): T {\n return this.fixture!.componentInstance;\n }\n\n get comp(): NzSafeAny {\n return (this.context as NzSafeAny)['comp'];\n }\n\n get chart(): Chart {\n return this.comp.chart;\n }\n\n genComp(comp: Type<T>, dc: boolean = false): this {\n this.fixture = TestBed.createComponent(comp);\n if (dc) {\n this.dcFirst();\n }\n return this;\n }\n\n dcFirst(): this {\n this.dc();\n flush();\n discardPeriodicTasks();\n // FIX: `Error during cleanup of component`\n if (this.comp && typeof this.comp.chart !== 'undefined') {\n spyOn(this.comp.chart, 'destroy');\n }\n return this;\n }\n\n dc(): this {\n this.fixture!.changeDetectorRef.markForCheck();\n this.fixture!.detectChanges();\n return this;\n }\n\n end(): this {\n // The 201 value is delay value\n tick(201);\n flush();\n discardPeriodicTasks();\n return this;\n }\n\n destroy(): void {\n this.comp.ngOnDestroy();\n }\n\n newData(data: NzSafeAny): this {\n (this.context as NzSafeAny)['data'] = data;\n this.dc();\n return this;\n }\n\n getEls(cls: string): NodeListOf<HTMLElement> {\n return (this.dl.nativeElement as HTMLElement).querySelectorAll(cls);\n }\n\n getEl(cls: string): HTMLElement {\n return (this.dl.nativeElement as HTMLElement).querySelector(cls) as HTMLElement;\n }\n\n getController(type: 'axis' | 'legend'): NzSafeAny {\n return this.chart.getController(type) as NzSafeAny;\n }\n\n isCanvas(stauts: boolean = true): this {\n this.isExists('canvas', stauts);\n return this;\n }\n\n isText(cls: string, value: string): this {\n const el = this.getEl(cls);\n expect(el ? el.textContent!.trim() : '').toBe(value);\n return this;\n }\n\n isExists(cls: string, stauts: boolean = true): this {\n expect(this.getEl(cls) != null).toBe(stauts);\n return this;\n }\n\n checkOptions(key: string, value: NzSafeAny): this {\n expect((this.chart as NzSafeAny)[key]).toBe(value);\n return this;\n }\n\n checkAttrOptions(type: PageG2Type, key: string, value: NzSafeAny): this {\n const x = (this.chart[type][0] as NzSafeAny).attributeOption[key];\n expect(x.field).toBe(value);\n return this;\n }\n\n isXScalesCount(num: number): this {\n const x = this.chart.getXScale();\n expect(x.values!.length).toBe(num);\n return this;\n }\n\n isYScalesCount(num: number): this {\n const y = this.chart.getYScales();\n expect(y.length).toBe(1);\n expect(y[0].values!.length).toBe(num);\n return this;\n }\n\n isDataCount(type: PageG2Type, num: number): this {\n const results = this.chart[type];\n expect(results.length).toBeGreaterThan(0);\n expect(results[0].data.length).toBe(num);\n return this;\n }\n\n get firstDataPoint(): { x: number; y: number } {\n return this.chart.getXY((this.context as NzSafeAny)['data'][0]);\n }\n\n checkTooltip(_includeText: string | null, point?: { x: number; y: number }): this {\n if (!point) {\n point = this.firstDataPoint;\n }\n this.chart.showTooltip(point);\n expect(this.chart.getController('tooltip') != null).toBe(true);\n return this;\n }\n\n checkClickItem(): this {\n const point = this.firstDataPoint;\n const clientPoint = this.chart.canvas.getClientByPoint(point.x, point.y);\n const event = new MouseEvent('click', {\n clientX: clientPoint.x,\n clientY: clientPoint.y\n });\n (this.chart.canvas.get('el') as HTMLElement).dispatchEvent(event);\n return this;\n }\n}\n\nexport function checkDelay<T>(comp: Type<T>, page: PageG2<T> | null = null): void {\n if (page == null) {\n page = new PageG2<T>().genComp(comp, false);\n }\n const context = page.context as NzSafeAny;\n if (typeof context.delay === 'undefined') {\n console.warn(`You muse be dinfed \"delay\" property in test component`);\n return;\n }\n context.delay = 100;\n page.dc();\n page.comp.ngOnDestroy();\n expect(page.chart == null).toBe(true);\n tick(201);\n discardPeriodicTasks();\n}\n","import { DebugElement, Type } from '@angular/core';\nimport { ComponentFixture, TestBed } from '@angular/core/testing';\n\nexport class TestContext<T> {\n constructor(public fixture: ComponentFixture<T>) {}\n\n get component(): T {\n return this.fixture.componentInstance;\n }\n\n get el(): HTMLElement {\n return this.fixture.debugElement.nativeElement;\n }\n\n get dl(): DebugElement {\n return this.fixture.debugElement;\n }\n\n get context(): T {\n return this.fixture.componentInstance;\n }\n\n detectChanges(): void {\n this.fixture.detectChanges();\n }\n\n resolve<T1>(component: Type<T1>): T1 {\n return this.fixture.debugElement.injector.get(component) as T1;\n }\n}\n\nexport const createTestContext = <T>(component: Type<T>): TestContext<T> => {\n return new TestContext<T>(TestBed.createComponent<T>(component));\n};\n","/**\n * 清除Cdk的窗体,以便下一次使用,一般这样使用:\n * ```ts\n * afterEach(cleanCdkOverlayHtml);\n * ```\n */\nexport function cleanCdkOverlayHtml(): void {\n const els = document.querySelectorAll('.cdk-overlay-container');\n if (els && els.length > 0) {\n els.forEach(el => (el.innerHTML = ''));\n }\n}\n","// from angular\nexport * from './src/dispatch-events';\nexport * from './src/event-objects';\nexport * from './src/type-in-element';\n\nexport * from './src/zorro';\nexport * from './src/g2';\nexport * from './src/suite';\nexport * from './src/cdk-overlay';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@delon/testing",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.1",
|
|
4
4
|
"author": "cipchk<cipchk@qq.com>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -25,8 +25,6 @@
|
|
|
25
25
|
},
|
|
26
26
|
".": {
|
|
27
27
|
"types": "./index.d.ts",
|
|
28
|
-
"esm2022": "./esm2022/testing.mjs",
|
|
29
|
-
"esm": "./esm2022/testing.mjs",
|
|
30
28
|
"default": "./fesm2022/testing.mjs"
|
|
31
29
|
}
|
|
32
30
|
},
|
package/src/g2.d.ts
CHANGED
|
@@ -12,11 +12,7 @@ export declare class PageG2<T> {
|
|
|
12
12
|
get context(): T;
|
|
13
13
|
get comp(): NzSafeAny;
|
|
14
14
|
get chart(): Chart;
|
|
15
|
-
genModule<M>(module: M, comp: Type<T>): this;
|
|
16
15
|
genComp(comp: Type<T>, dc?: boolean): this;
|
|
17
|
-
makeModule<M>(module: M, comp: Type<T>, options?: {
|
|
18
|
-
dc: boolean;
|
|
19
|
-
}): PageG2<T>;
|
|
20
16
|
dcFirst(): this;
|
|
21
17
|
dc(): this;
|
|
22
18
|
end(): this;
|
|
@@ -43,4 +39,4 @@ export declare class PageG2<T> {
|
|
|
43
39
|
}): this;
|
|
44
40
|
checkClickItem(): this;
|
|
45
41
|
}
|
|
46
|
-
export declare function checkDelay<
|
|
42
|
+
export declare function checkDelay<T>(comp: Type<T>, page?: PageG2<T> | null): void;
|
package/esm2022/public_api.mjs
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// from angular
|
|
2
|
-
export * from './src/dispatch-events';
|
|
3
|
-
export * from './src/event-objects';
|
|
4
|
-
export * from './src/type-in-element';
|
|
5
|
-
export * from './src/zorro';
|
|
6
|
-
export * from './src/g2';
|
|
7
|
-
export * from './src/suite';
|
|
8
|
-
export * from './src/cdk-overlay';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rlc3RpbmcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0FBQ2YsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGZyb20gYW5ndWxhclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlzcGF0Y2gtZXZlbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2V2ZW50LW9iamVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvdHlwZS1pbi1lbGVtZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvem9ycm8nO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvZzInO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvc3VpdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY2RrLW92ZXJsYXknO1xuIl19
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 清除Cdk的窗体,以便下一次使用,一般这样使用:
|
|
3
|
-
* ```ts
|
|
4
|
-
* afterEach(cleanCdkOverlayHtml);
|
|
5
|
-
* ```
|
|
6
|
-
*/
|
|
7
|
-
export function cleanCdkOverlayHtml() {
|
|
8
|
-
const els = document.querySelectorAll('.cdk-overlay-container');
|
|
9
|
-
if (els && els.length > 0) {
|
|
10
|
-
els.forEach(el => (el.innerHTML = ''));
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLW92ZXJsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90ZXN0aW5nL3NyYy9jZGstb3ZlcmxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDaEUsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOa4hemZpENka+eahOeql+S9k++8jOS7peS+v+S4i+S4gOasoeS9v+eUqO+8jOS4gOiIrOi/meagt+S9v+eUqO+8mlxuICogYGBgdHNcbiAqIGFmdGVyRWFjaChjbGVhbkNka092ZXJsYXlIdG1sKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5DZGtPdmVybGF5SHRtbCgpOiB2b2lkIHtcbiAgY29uc3QgZWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNkay1vdmVybGF5LWNvbnRhaW5lcicpO1xuICBpZiAoZWxzICYmIGVscy5sZW5ndGggPiAwKSB7XG4gICAgZWxzLmZvckVhY2goZWwgPT4gKGVsLmlubmVySFRNTCA9ICcnKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent } from './event-objects';
|
|
9
|
-
/** Utility to dispatch any event on a Node. */
|
|
10
|
-
export function dispatchEvent(node, event) {
|
|
11
|
-
node.dispatchEvent(event);
|
|
12
|
-
return event;
|
|
13
|
-
}
|
|
14
|
-
/** Shorthand to dispatch a fake event on a specified node. */
|
|
15
|
-
export function dispatchFakeEvent(node, type, canBubble) {
|
|
16
|
-
return dispatchEvent(node, typeof type === 'string' ? createFakeEvent(type, canBubble) : type);
|
|
17
|
-
}
|
|
18
|
-
/** Shorthand to dispatch a keyboard event with a specified key code. */
|
|
19
|
-
export function dispatchKeyboardEvent(node, type, keyCode, target) {
|
|
20
|
-
return dispatchEvent(node, createKeyboardEvent(type, keyCode, target));
|
|
21
|
-
}
|
|
22
|
-
/** Shorthand to dispatch a mouse event on the specified coordinates. */
|
|
23
|
-
export function dispatchMouseEvent(node, type, x = 0, y = 0, event = createMouseEvent(type, x, y)) {
|
|
24
|
-
return dispatchEvent(node, event);
|
|
25
|
-
}
|
|
26
|
-
/** Shorthand to dispatch a touch event on the specified coordinates. */
|
|
27
|
-
export function dispatchTouchEvent(node, type, x = 0, y = 0) {
|
|
28
|
-
return dispatchEvent(node, createTouchEvent(type, x, y));
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2gtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGVzdGluZy9zcmMvZGlzcGF0Y2gtZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRywrQ0FBK0M7QUFDL0MsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFtQixFQUFFLEtBQVk7SUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQW1CLEVBQUUsSUFBb0IsRUFBRSxTQUFtQjtJQUM5RixPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxJQUFVLEVBQUUsSUFBWSxFQUFFLE9BQWUsRUFBRSxNQUFnQjtJQUMvRixPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBa0IsQ0FBQztBQUMxRixDQUFDO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsSUFBVSxFQUNWLElBQVksRUFDWixJQUFZLENBQUMsRUFDYixJQUFZLENBQUMsRUFDYixRQUFvQixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVoRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFlLENBQUM7QUFDbEQsQ0FBQztBQUVELHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBVSxFQUFFLElBQVksRUFBRSxJQUFZLENBQUMsRUFBRSxJQUFZLENBQUM7SUFDdkYsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUZha2VFdmVudCwgY3JlYXRlS2V5Ym9hcmRFdmVudCwgY3JlYXRlTW91c2VFdmVudCwgY3JlYXRlVG91Y2hFdmVudCB9IGZyb20gJy4vZXZlbnQtb2JqZWN0cyc7XG5cbi8qKiBVdGlsaXR5IHRvIGRpc3BhdGNoIGFueSBldmVudCBvbiBhIE5vZGUuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChub2RlOiBOb2RlIHwgV2luZG93LCBldmVudDogRXZlbnQpOiBFdmVudCB7XG4gIG5vZGUuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIHJldHVybiBldmVudDtcbn1cblxuLyoqIFNob3J0aGFuZCB0byBkaXNwYXRjaCBhIGZha2UgZXZlbnQgb24gYSBzcGVjaWZpZWQgbm9kZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwYXRjaEZha2VFdmVudChub2RlOiBOb2RlIHwgV2luZG93LCB0eXBlOiBzdHJpbmcgfCBFdmVudCwgY2FuQnViYmxlPzogYm9vbGVhbik6IEV2ZW50IHtcbiAgcmV0dXJuIGRpc3BhdGNoRXZlbnQobm9kZSwgdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnID8gY3JlYXRlRmFrZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSkgOiB0eXBlKTtcbn1cblxuLyoqIFNob3J0aGFuZCB0byBkaXNwYXRjaCBhIGtleWJvYXJkIGV2ZW50IHdpdGggYSBzcGVjaWZpZWQga2V5IGNvZGUuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hLZXlib2FyZEV2ZW50KG5vZGU6IE5vZGUsIHR5cGU6IHN0cmluZywga2V5Q29kZTogbnVtYmVyLCB0YXJnZXQ/OiBFbGVtZW50KTogS2V5Ym9hcmRFdmVudCB7XG4gIHJldHVybiBkaXNwYXRjaEV2ZW50KG5vZGUsIGNyZWF0ZUtleWJvYXJkRXZlbnQodHlwZSwga2V5Q29kZSwgdGFyZ2V0KSkgYXMgS2V5Ym9hcmRFdmVudDtcbn1cblxuLyoqIFNob3J0aGFuZCB0byBkaXNwYXRjaCBhIG1vdXNlIGV2ZW50IG9uIHRoZSBzcGVjaWZpZWQgY29vcmRpbmF0ZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hNb3VzZUV2ZW50KFxuICBub2RlOiBOb2RlLFxuICB0eXBlOiBzdHJpbmcsXG4gIHg6IG51bWJlciA9IDAsXG4gIHk6IG51bWJlciA9IDAsXG4gIGV2ZW50OiBNb3VzZUV2ZW50ID0gY3JlYXRlTW91c2VFdmVudCh0eXBlLCB4LCB5KVxuKTogTW91c2VFdmVudCB7XG4gIHJldHVybiBkaXNwYXRjaEV2ZW50KG5vZGUsIGV2ZW50KSBhcyBNb3VzZUV2ZW50O1xufVxuXG4vKiogU2hvcnRoYW5kIHRvIGRpc3BhdGNoIGEgdG91Y2ggZXZlbnQgb24gdGhlIHNwZWNpZmllZCBjb29yZGluYXRlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwYXRjaFRvdWNoRXZlbnQobm9kZTogTm9kZSwgdHlwZTogc3RyaW5nLCB4OiBudW1iZXIgPSAwLCB5OiBudW1iZXIgPSAwKTogRXZlbnQge1xuICByZXR1cm4gZGlzcGF0Y2hFdmVudChub2RlLCBjcmVhdGVUb3VjaEV2ZW50KHR5cGUsIHgsIHkpKTtcbn1cbiJdfQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
/** Creates a browser MouseEvent with the specified options. */
|
|
9
|
-
export function createMouseEvent(type, x = 0, y = 0) {
|
|
10
|
-
const event = document.createEvent('MouseEvent');
|
|
11
|
-
event.initMouseEvent(type, false /* canBubble */, false /* cancelable */, window /* view */, 0 /* detail */, x /* screenX */, y /* screenY */, x /* clientX */, y /* clientY */, false /* ctrlKey */, false /* altKey */, false /* shiftKey */, false /* metaKey */, 0 /* button */, null /* relatedTarget */);
|
|
12
|
-
return event;
|
|
13
|
-
}
|
|
14
|
-
/** Creates a browser TouchEvent with the specified pointer coordinates. */
|
|
15
|
-
export function createTouchEvent(type, pageX = 0, pageY = 0) {
|
|
16
|
-
// In favor of creating events that work for most of the browsers, the event is created
|
|
17
|
-
// as a basic UI Event. The necessary details for the event will be set manually.
|
|
18
|
-
const event = document.createEvent('UIEvent');
|
|
19
|
-
const touchDetails = { pageX, pageY };
|
|
20
|
-
event.initUIEvent(type, true, true, window, 0);
|
|
21
|
-
// Most of the browsers don't have a "initTouchEvent" method that can be used to define
|
|
22
|
-
// the touch details.
|
|
23
|
-
Object.defineProperties(event, {
|
|
24
|
-
touches: { value: [touchDetails] }
|
|
25
|
-
});
|
|
26
|
-
return event;
|
|
27
|
-
}
|
|
28
|
-
/** Dispatches a keydown event from an element. */
|
|
29
|
-
export function createKeyboardEvent(type, keyCode, target, key) {
|
|
30
|
-
const event = document.createEvent('KeyboardEvent');
|
|
31
|
-
// Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.
|
|
32
|
-
const initEventFn = (event.initKeyEvent || event.initKeyboardEvent).bind(event);
|
|
33
|
-
const originalPreventDefault = event.preventDefault;
|
|
34
|
-
initEventFn(type, true, true, window, 0, 0, 0, 0, 0, keyCode);
|
|
35
|
-
// Webkit Browsers don't set the keyCode when calling the init function.
|
|
36
|
-
// See related bug https://bugs.webkit.org/show_bug.cgi?id=16735
|
|
37
|
-
Object.defineProperties(event, {
|
|
38
|
-
keyCode: { get: () => keyCode },
|
|
39
|
-
key: { get: () => key },
|
|
40
|
-
target: { get: () => target }
|
|
41
|
-
});
|
|
42
|
-
// IE won't set `defaultPrevented` on synthetic events so we need to do it manually.
|
|
43
|
-
event.preventDefault = function () {
|
|
44
|
-
Object.defineProperty(event, 'defaultPrevented', { get: () => true });
|
|
45
|
-
return originalPreventDefault.apply(this, arguments);
|
|
46
|
-
};
|
|
47
|
-
return event;
|
|
48
|
-
}
|
|
49
|
-
/** Creates a fake event object with any desired event type. */
|
|
50
|
-
export function createFakeEvent(type, canBubble = true, cancelable = true) {
|
|
51
|
-
const event = document.createEvent('Event');
|
|
52
|
-
event.initEvent(type, canBubble, cancelable);
|
|
53
|
-
return event;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtb2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rlc3Rpbmcvc3JjL2V2ZW50LW9iamVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7Ozs7OztHQU1HO0FBRUgsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsSUFBWSxDQUFDLEVBQUUsSUFBWSxDQUFDO0lBQ3pFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFakQsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsSUFBSSxFQUNKLEtBQUssQ0FBQyxlQUFlLEVBQ3JCLEtBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsTUFBTSxDQUFDLFVBQVUsRUFDakIsQ0FBQyxDQUFDLFlBQVksRUFDZCxDQUFDLENBQUMsYUFBYSxFQUNmLENBQUMsQ0FBQyxhQUFhLEVBQ2YsQ0FBQyxDQUFDLGFBQWEsRUFDZixDQUFDLENBQUMsYUFBYSxFQUNmLEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLEtBQUssQ0FBQyxjQUFjLEVBQ3BCLEtBQUssQ0FBQyxhQUFhLEVBQ25CLENBQUMsQ0FBQyxZQUFZLEVBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUN6QixDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsMkVBQTJFO0FBQzNFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsQ0FBQyxFQUFFLFFBQWdCLENBQUM7SUFDakYsdUZBQXVGO0lBQ3ZGLGlGQUFpRjtJQUNqRixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRXJDLEtBQW1CLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU5RCx1RkFBdUY7SUFDdkYscUJBQXFCO0lBQ3JCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7UUFDN0IsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7S0FDbkMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsa0RBQWtEO0FBQ2xELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLE1BQWdCLEVBQUUsR0FBWTtJQUMvRixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBYyxDQUFDO0lBQ2pFLDZFQUE2RTtJQUM3RSxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUVwRCxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFOUQsd0VBQXdFO0lBQ3hFLGdFQUFnRTtJQUNoRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1FBQzdCLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUU7UUFDL0IsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRTtRQUN2QixNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFO0tBQzlCLENBQUMsQ0FBQztJQUVILG9GQUFvRjtJQUNwRixLQUFLLENBQUMsY0FBYyxHQUFHO1FBQ3JCLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEUsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELCtEQUErRDtBQUMvRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVksRUFBRSxZQUFxQixJQUFJLEVBQUUsYUFBc0IsSUFBSTtJQUNqRyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3QyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqIENyZWF0ZXMgYSBicm93c2VyIE1vdXNlRXZlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW91c2VFdmVudCh0eXBlOiBzdHJpbmcsIHg6IG51bWJlciA9IDAsIHk6IG51bWJlciA9IDApOiBNb3VzZUV2ZW50IHtcbiAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpO1xuXG4gIGV2ZW50LmluaXRNb3VzZUV2ZW50KFxuICAgIHR5cGUsXG4gICAgZmFsc2UgLyogY2FuQnViYmxlICovLFxuICAgIGZhbHNlIC8qIGNhbmNlbGFibGUgKi8sXG4gICAgd2luZG93IC8qIHZpZXcgKi8sXG4gICAgMCAvKiBkZXRhaWwgKi8sXG4gICAgeCAvKiBzY3JlZW5YICovLFxuICAgIHkgLyogc2NyZWVuWSAqLyxcbiAgICB4IC8qIGNsaWVudFggKi8sXG4gICAgeSAvKiBjbGllbnRZICovLFxuICAgIGZhbHNlIC8qIGN0cmxLZXkgKi8sXG4gICAgZmFsc2UgLyogYWx0S2V5ICovLFxuICAgIGZhbHNlIC8qIHNoaWZ0S2V5ICovLFxuICAgIGZhbHNlIC8qIG1ldGFLZXkgKi8sXG4gICAgMCAvKiBidXR0b24gKi8sXG4gICAgbnVsbCAvKiByZWxhdGVkVGFyZ2V0ICovXG4gICk7XG5cbiAgcmV0dXJuIGV2ZW50O1xufVxuXG4vKiogQ3JlYXRlcyBhIGJyb3dzZXIgVG91Y2hFdmVudCB3aXRoIHRoZSBzcGVjaWZpZWQgcG9pbnRlciBjb29yZGluYXRlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb3VjaEV2ZW50KHR5cGU6IHN0cmluZywgcGFnZVg6IG51bWJlciA9IDAsIHBhZ2VZOiBudW1iZXIgPSAwKTogVUlFdmVudCB7XG4gIC8vIEluIGZhdm9yIG9mIGNyZWF0aW5nIGV2ZW50cyB0aGF0IHdvcmsgZm9yIG1vc3Qgb2YgdGhlIGJyb3dzZXJzLCB0aGUgZXZlbnQgaXMgY3JlYXRlZFxuICAvLyBhcyBhIGJhc2ljIFVJIEV2ZW50LiBUaGUgbmVjZXNzYXJ5IGRldGFpbHMgZm9yIHRoZSBldmVudCB3aWxsIGJlIHNldCBtYW51YWxseS5cbiAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnVUlFdmVudCcpO1xuICBjb25zdCB0b3VjaERldGFpbHMgPSB7IHBhZ2VYLCBwYWdlWSB9O1xuXG4gIChldmVudCBhcyBOelNhZmVBbnkpLmluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHdpbmRvdywgMCk7XG5cbiAgLy8gTW9zdCBvZiB0aGUgYnJvd3NlcnMgZG9uJ3QgaGF2ZSBhIFwiaW5pdFRvdWNoRXZlbnRcIiBtZXRob2QgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmVcbiAgLy8gdGhlIHRvdWNoIGRldGFpbHMuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGV2ZW50LCB7XG4gICAgdG91Y2hlczogeyB2YWx1ZTogW3RvdWNoRGV0YWlsc10gfVxuICB9KTtcblxuICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKiBEaXNwYXRjaGVzIGEga2V5ZG93biBldmVudCBmcm9tIGFuIGVsZW1lbnQuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS2V5Ym9hcmRFdmVudCh0eXBlOiBzdHJpbmcsIGtleUNvZGU6IG51bWJlciwgdGFyZ2V0PzogRWxlbWVudCwga2V5Pzogc3RyaW5nKTogTnpTYWZlQW55IHtcbiAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnS2V5Ym9hcmRFdmVudCcpIGFzIE56U2FmZUFueTtcbiAgLy8gRmlyZWZveCBkb2VzIG5vdCBzdXBwb3J0IGBpbml0S2V5Ym9hcmRFdmVudGAsIGJ1dCBzdXBwb3J0cyBgaW5pdEtleUV2ZW50YC5cbiAgY29uc3QgaW5pdEV2ZW50Rm4gPSAoZXZlbnQuaW5pdEtleUV2ZW50IHx8IGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KS5iaW5kKGV2ZW50KTtcbiAgY29uc3Qgb3JpZ2luYWxQcmV2ZW50RGVmYXVsdCA9IGV2ZW50LnByZXZlbnREZWZhdWx0O1xuXG4gIGluaXRFdmVudEZuKHR5cGUsIHRydWUsIHRydWUsIHdpbmRvdywgMCwgMCwgMCwgMCwgMCwga2V5Q29kZSk7XG5cbiAgLy8gV2Via2l0IEJyb3dzZXJzIGRvbid0IHNldCB0aGUga2V5Q29kZSB3aGVuIGNhbGxpbmcgdGhlIGluaXQgZnVuY3Rpb24uXG4gIC8vIFNlZSByZWxhdGVkIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MzVcbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZXZlbnQsIHtcbiAgICBrZXlDb2RlOiB7IGdldDogKCkgPT4ga2V5Q29kZSB9LFxuICAgIGtleTogeyBnZXQ6ICgpID0+IGtleSB9LFxuICAgIHRhcmdldDogeyBnZXQ6ICgpID0+IHRhcmdldCB9XG4gIH0pO1xuXG4gIC8vIElFIHdvbid0IHNldCBgZGVmYXVsdFByZXZlbnRlZGAgb24gc3ludGhldGljIGV2ZW50cyBzbyB3ZSBuZWVkIHRvIGRvIGl0IG1hbnVhbGx5LlxuICBldmVudC5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uICgpOiBOelNhZmVBbnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgJ2RlZmF1bHRQcmV2ZW50ZWQnLCB7IGdldDogKCkgPT4gdHJ1ZSB9KTtcbiAgICByZXR1cm4gb3JpZ2luYWxQcmV2ZW50RGVmYXVsdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xuXG4gIHJldHVybiBldmVudDtcbn1cblxuLyoqIENyZWF0ZXMgYSBmYWtlIGV2ZW50IG9iamVjdCB3aXRoIGFueSBkZXNpcmVkIGV2ZW50IHR5cGUuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmFrZUV2ZW50KHR5cGU6IHN0cmluZywgY2FuQnViYmxlOiBib29sZWFuID0gdHJ1ZSwgY2FuY2VsYWJsZTogYm9vbGVhbiA9IHRydWUpOiBFdmVudCB7XG4gIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gIGV2ZW50LmluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpO1xuICByZXR1cm4gZXZlbnQ7XG59XG4iXX0=
|
package/esm2022/src/g2.mjs
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { discardPeriodicTasks, flush, TestBed, tick } from '@angular/core/testing';
|
|
2
|
-
export const PageG2DataCount = 2;
|
|
3
|
-
export const PageG2Height = 100;
|
|
4
|
-
export class PageG2 {
|
|
5
|
-
constructor(fixture = null) {
|
|
6
|
-
this.fixture = fixture;
|
|
7
|
-
}
|
|
8
|
-
get dl() {
|
|
9
|
-
return this.fixture.debugElement;
|
|
10
|
-
}
|
|
11
|
-
get context() {
|
|
12
|
-
return this.fixture.componentInstance;
|
|
13
|
-
}
|
|
14
|
-
get comp() {
|
|
15
|
-
return this.context['comp'];
|
|
16
|
-
}
|
|
17
|
-
get chart() {
|
|
18
|
-
return this.comp.chart;
|
|
19
|
-
}
|
|
20
|
-
genModule(module, comp) {
|
|
21
|
-
TestBed.configureTestingModule({
|
|
22
|
-
imports: [module],
|
|
23
|
-
declarations: [comp]
|
|
24
|
-
});
|
|
25
|
-
return this;
|
|
26
|
-
}
|
|
27
|
-
genComp(comp, dc = false) {
|
|
28
|
-
this.fixture = TestBed.createComponent(comp);
|
|
29
|
-
if (dc) {
|
|
30
|
-
this.dcFirst();
|
|
31
|
-
}
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
makeModule(module, comp, options = { dc: true }) {
|
|
35
|
-
this.genModule(module, comp).genComp(comp, options.dc);
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
dcFirst() {
|
|
39
|
-
this.dc();
|
|
40
|
-
flush();
|
|
41
|
-
discardPeriodicTasks();
|
|
42
|
-
// FIX: `Error during cleanup of component`
|
|
43
|
-
if (this.comp && typeof this.comp.chart !== 'undefined') {
|
|
44
|
-
spyOn(this.comp.chart, 'destroy');
|
|
45
|
-
}
|
|
46
|
-
return this;
|
|
47
|
-
}
|
|
48
|
-
dc() {
|
|
49
|
-
this.fixture.changeDetectorRef.markForCheck();
|
|
50
|
-
this.fixture.detectChanges();
|
|
51
|
-
return this;
|
|
52
|
-
}
|
|
53
|
-
end() {
|
|
54
|
-
// The 201 value is delay value
|
|
55
|
-
tick(201);
|
|
56
|
-
flush();
|
|
57
|
-
discardPeriodicTasks();
|
|
58
|
-
return this;
|
|
59
|
-
}
|
|
60
|
-
destroy() {
|
|
61
|
-
this.comp.ngOnDestroy();
|
|
62
|
-
}
|
|
63
|
-
newData(data) {
|
|
64
|
-
this.context['data'] = data;
|
|
65
|
-
this.dc();
|
|
66
|
-
return this;
|
|
67
|
-
}
|
|
68
|
-
getEls(cls) {
|
|
69
|
-
return this.dl.nativeElement.querySelectorAll(cls);
|
|
70
|
-
}
|
|
71
|
-
getEl(cls) {
|
|
72
|
-
return this.dl.nativeElement.querySelector(cls);
|
|
73
|
-
}
|
|
74
|
-
getController(type) {
|
|
75
|
-
return this.chart.getController(type);
|
|
76
|
-
}
|
|
77
|
-
isCanvas(stauts = true) {
|
|
78
|
-
this.isExists('canvas', stauts);
|
|
79
|
-
return this;
|
|
80
|
-
}
|
|
81
|
-
isText(cls, value) {
|
|
82
|
-
const el = this.getEl(cls);
|
|
83
|
-
expect(el ? el.textContent.trim() : '').toBe(value);
|
|
84
|
-
return this;
|
|
85
|
-
}
|
|
86
|
-
isExists(cls, stauts = true) {
|
|
87
|
-
expect(this.getEl(cls) != null).toBe(stauts);
|
|
88
|
-
return this;
|
|
89
|
-
}
|
|
90
|
-
checkOptions(key, value) {
|
|
91
|
-
expect(this.chart[key]).toBe(value);
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
checkAttrOptions(type, key, value) {
|
|
95
|
-
const x = this.chart[type][0].attributeOption[key];
|
|
96
|
-
expect(x.field).toBe(value);
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
isXScalesCount(num) {
|
|
100
|
-
const x = this.chart.getXScale();
|
|
101
|
-
expect(x.values.length).toBe(num);
|
|
102
|
-
return this;
|
|
103
|
-
}
|
|
104
|
-
isYScalesCount(num) {
|
|
105
|
-
const y = this.chart.getYScales();
|
|
106
|
-
expect(y.length).toBe(1);
|
|
107
|
-
expect(y[0].values.length).toBe(num);
|
|
108
|
-
return this;
|
|
109
|
-
}
|
|
110
|
-
isDataCount(type, num) {
|
|
111
|
-
const results = this.chart[type];
|
|
112
|
-
expect(results.length).toBeGreaterThan(0);
|
|
113
|
-
expect(results[0].data.length).toBe(num);
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
get firstDataPoint() {
|
|
117
|
-
return this.chart.getXY(this.context['data'][0]);
|
|
118
|
-
}
|
|
119
|
-
checkTooltip(_includeText, point) {
|
|
120
|
-
if (!point) {
|
|
121
|
-
point = this.firstDataPoint;
|
|
122
|
-
}
|
|
123
|
-
this.chart.showTooltip(point);
|
|
124
|
-
expect(this.chart.getController('tooltip') != null).toBe(true);
|
|
125
|
-
return this;
|
|
126
|
-
}
|
|
127
|
-
checkClickItem() {
|
|
128
|
-
const point = this.firstDataPoint;
|
|
129
|
-
const clientPoint = this.chart.canvas.getClientByPoint(point.x, point.y);
|
|
130
|
-
const event = new MouseEvent('click', {
|
|
131
|
-
clientX: clientPoint.x,
|
|
132
|
-
clientY: clientPoint.y
|
|
133
|
-
});
|
|
134
|
-
this.chart.canvas.get('el').dispatchEvent(event);
|
|
135
|
-
return this;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
export function checkDelay(module, comp, page = null) {
|
|
139
|
-
if (page == null) {
|
|
140
|
-
page = new PageG2().makeModule(module, comp, { dc: false });
|
|
141
|
-
}
|
|
142
|
-
const context = page.context;
|
|
143
|
-
if (typeof context.delay === 'undefined') {
|
|
144
|
-
console.warn(`You muse be dinfed "delay" property in test component`);
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
context.delay = 100;
|
|
148
|
-
page.dc();
|
|
149
|
-
page.comp.ngOnDestroy();
|
|
150
|
-
expect(page.chart == null).toBe(true);
|
|
151
|
-
tick(201);
|
|
152
|
-
discardPeriodicTasks();
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90ZXN0aW5nL3NyYy9nMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW9CLG9CQUFvQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRckcsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBRWhDLE1BQU0sT0FBTyxNQUFNO0lBQ2pCLFlBQW1CLFVBQXNDLElBQUk7UUFBMUMsWUFBTyxHQUFQLE9BQU8sQ0FBbUM7SUFBRyxDQUFDO0lBRWpFLElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLE9BQVEsQ0FBQyxZQUFZLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBUSxJQUFJLENBQUMsT0FBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFJLE1BQVMsRUFBRSxJQUFhO1FBQ25DLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztZQUM3QixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ3JCLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFhLEVBQUUsS0FBYyxLQUFLO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUksTUFBUyxFQUFFLElBQWEsRUFBRSxVQUEyQixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUU7UUFDN0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNWLEtBQUssRUFBRSxDQUFDO1FBQ1Isb0JBQW9CLEVBQUUsQ0FBQztRQUN2QiwyQ0FBMkM7UUFDM0MsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDeEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLE9BQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEdBQUc7UUFDRCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxFQUFFLENBQUM7UUFDUixvQkFBb0IsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBZTtRQUNwQixJQUFJLENBQUMsT0FBcUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVc7UUFDaEIsT0FBUSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQTZCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFXO1FBQ2YsT0FBUSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQTZCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBZ0IsQ0FBQztJQUNsRixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQXVCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFjLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFrQixJQUFJO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUMvQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVyxFQUFFLFNBQWtCLElBQUk7UUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFXLEVBQUUsS0FBZ0I7UUFDeEMsTUFBTSxDQUFFLElBQUksQ0FBQyxLQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQWdCLEVBQUUsR0FBVyxFQUFFLEtBQWdCO1FBQzlELE1BQU0sQ0FBQyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFlLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFnQixFQUFFLEdBQVc7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUUsSUFBSSxDQUFDLE9BQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQTJCLEVBQUUsS0FBZ0M7UUFDeEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsTUFBTSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ3BDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN0QixPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDdkIsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFPLE1BQVMsRUFBRSxJQUFhLEVBQUUsT0FBeUIsSUFBSTtJQUN0RixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBb0IsQ0FBQztJQUMxQyxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDdEUsT0FBTztJQUNULENBQUM7SUFDRCxPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNwQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixvQkFBb0IsRUFBRSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWJ1Z0VsZW1lbnQsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEZpeHR1cmUsIGRpc2NhcmRQZXJpb2RpY1Rhc2tzLCBmbHVzaCwgVGVzdEJlZCwgdGljayB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnQGFudHYvZzInO1xuXG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFBhZ2VHMlR5cGUgPSAnZ2VvbWV0cmllcycgfCAndmlld3MnO1xuXG5leHBvcnQgY29uc3QgUGFnZUcyRGF0YUNvdW50ID0gMjtcbmV4cG9ydCBjb25zdCBQYWdlRzJIZWlnaHQgPSAxMDA7XG5cbmV4cG9ydCBjbGFzcyBQYWdlRzI8VD4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxUPiB8IG51bGwgPSBudWxsKSB7fVxuXG4gIGdldCBkbCgpOiBEZWJ1Z0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmZpeHR1cmUhLmRlYnVnRWxlbWVudDtcbiAgfVxuXG4gIGdldCBjb250ZXh0KCk6IFQge1xuICAgIHJldHVybiB0aGlzLmZpeHR1cmUhLmNvbXBvbmVudEluc3RhbmNlO1xuICB9XG5cbiAgZ2V0IGNvbXAoKTogTnpTYWZlQW55IHtcbiAgICByZXR1cm4gKHRoaXMuY29udGV4dCBhcyBOelNhZmVBbnkpWydjb21wJ107XG4gIH1cblxuICBnZXQgY2hhcnQoKTogQ2hhcnQge1xuICAgIHJldHVybiB0aGlzLmNvbXAuY2hhcnQ7XG4gIH1cblxuICBnZW5Nb2R1bGU8TT4obW9kdWxlOiBNLCBjb21wOiBUeXBlPFQ+KTogdGhpcyB7XG4gICAgVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICAgIGltcG9ydHM6IFttb2R1bGVdLFxuICAgICAgZGVjbGFyYXRpb25zOiBbY29tcF1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdlbkNvbXAoY29tcDogVHlwZTxUPiwgZGM6IGJvb2xlYW4gPSBmYWxzZSk6IHRoaXMge1xuICAgIHRoaXMuZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KGNvbXApO1xuICAgIGlmIChkYykge1xuICAgICAgdGhpcy5kY0ZpcnN0KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWFrZU1vZHVsZTxNPihtb2R1bGU6IE0sIGNvbXA6IFR5cGU8VD4sIG9wdGlvbnM6IHsgZGM6IGJvb2xlYW4gfSA9IHsgZGM6IHRydWUgfSk6IFBhZ2VHMjxUPiB7XG4gICAgdGhpcy5nZW5Nb2R1bGUobW9kdWxlLCBjb21wKS5nZW5Db21wKGNvbXAsIG9wdGlvbnMuZGMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGNGaXJzdCgpOiB0aGlzIHtcbiAgICB0aGlzLmRjKCk7XG4gICAgZmx1c2goKTtcbiAgICBkaXNjYXJkUGVyaW9kaWNUYXNrcygpO1xuICAgIC8vIEZJWDogYEVycm9yIGR1cmluZyBjbGVhbnVwIG9mIGNvbXBvbmVudGBcbiAgICBpZiAodGhpcy5jb21wICYmIHR5cGVvZiB0aGlzLmNvbXAuY2hhcnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBzcHlPbih0aGlzLmNvbXAuY2hhcnQsICdkZXN0cm95Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGMoKTogdGhpcyB7XG4gICAgdGhpcy5maXh0dXJlIS5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmZpeHR1cmUhLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVuZCgpOiB0aGlzIHtcbiAgICAvLyBUaGUgMjAxIHZhbHVlIGlzIGRlbGF5IHZhbHVlXG4gICAgdGljaygyMDEpO1xuICAgIGZsdXNoKCk7XG4gICAgZGlzY2FyZFBlcmlvZGljVGFza3MoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb21wLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICBuZXdEYXRhKGRhdGE6IE56U2FmZUFueSk6IHRoaXMge1xuICAgICh0aGlzLmNvbnRleHQgYXMgTnpTYWZlQW55KVsnZGF0YSddID0gZGF0YTtcbiAgICB0aGlzLmRjKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRFbHMoY2xzOiBzdHJpbmcpOiBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PiB7XG4gICAgcmV0dXJuICh0aGlzLmRsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoY2xzKTtcbiAgfVxuXG4gIGdldEVsKGNsczogc3RyaW5nKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiAodGhpcy5kbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKGNscykgYXMgSFRNTEVsZW1lbnQ7XG4gIH1cblxuICBnZXRDb250cm9sbGVyKHR5cGU6ICdheGlzJyB8ICdsZWdlbmQnKTogTnpTYWZlQW55IHtcbiAgICByZXR1cm4gdGhpcy5jaGFydC5nZXRDb250cm9sbGVyKHR5cGUpIGFzIE56U2FmZUFueTtcbiAgfVxuXG4gIGlzQ2FudmFzKHN0YXV0czogYm9vbGVhbiA9IHRydWUpOiB0aGlzIHtcbiAgICB0aGlzLmlzRXhpc3RzKCdjYW52YXMnLCBzdGF1dHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaXNUZXh0KGNsczogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmdldEVsKGNscyk7XG4gICAgZXhwZWN0KGVsID8gZWwudGV4dENvbnRlbnQhLnRyaW0oKSA6ICcnKS50b0JlKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlzRXhpc3RzKGNsczogc3RyaW5nLCBzdGF1dHM6IGJvb2xlYW4gPSB0cnVlKTogdGhpcyB7XG4gICAgZXhwZWN0KHRoaXMuZ2V0RWwoY2xzKSAhPSBudWxsKS50b0JlKHN0YXV0cyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjaGVja09wdGlvbnMoa2V5OiBzdHJpbmcsIHZhbHVlOiBOelNhZmVBbnkpOiB0aGlzIHtcbiAgICBleHBlY3QoKHRoaXMuY2hhcnQgYXMgTnpTYWZlQW55KVtrZXldKS50b0JlKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNoZWNrQXR0ck9wdGlvbnModHlwZTogUGFnZUcyVHlwZSwga2V5OiBzdHJpbmcsIHZhbHVlOiBOelNhZmVBbnkpOiB0aGlzIHtcbiAgICBjb25zdCB4ID0gKHRoaXMuY2hhcnRbdHlwZV1bMF0gYXMgTnpTYWZlQW55KS5hdHRyaWJ1dGVPcHRpb25ba2V5XTtcbiAgICBleHBlY3QoeC5maWVsZCkudG9CZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpc1hTY2FsZXNDb3VudChudW06IG51bWJlcik6IHRoaXMge1xuICAgIGNvbnN0IHggPSB0aGlzLmNoYXJ0LmdldFhTY2FsZSgpO1xuICAgIGV4cGVjdCh4LnZhbHVlcyEubGVuZ3RoKS50b0JlKG51bSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpc1lTY2FsZXNDb3VudChudW06IG51bWJlcik6IHRoaXMge1xuICAgIGNvbnN0IHkgPSB0aGlzLmNoYXJ0LmdldFlTY2FsZXMoKTtcbiAgICBleHBlY3QoeS5sZW5ndGgpLnRvQmUoMSk7XG4gICAgZXhwZWN0KHlbMF0udmFsdWVzIS5sZW5ndGgpLnRvQmUobnVtKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlzRGF0YUNvdW50KHR5cGU6IFBhZ2VHMlR5cGUsIG51bTogbnVtYmVyKTogdGhpcyB7XG4gICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuY2hhcnRbdHlwZV07XG4gICAgZXhwZWN0KHJlc3VsdHMubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG4gICAgZXhwZWN0KHJlc3VsdHNbMF0uZGF0YS5sZW5ndGgpLnRvQmUobnVtKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldCBmaXJzdERhdGFQb2ludCgpOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0ge1xuICAgIHJldHVybiB0aGlzLmNoYXJ0LmdldFhZKCh0aGlzLmNvbnRleHQgYXMgTnpTYWZlQW55KVsnZGF0YSddWzBdKTtcbiAgfVxuXG4gIGNoZWNrVG9vbHRpcChfaW5jbHVkZVRleHQ6IHN0cmluZyB8IG51bGwsIHBvaW50PzogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9KTogdGhpcyB7XG4gICAgaWYgKCFwb2ludCkge1xuICAgICAgcG9pbnQgPSB0aGlzLmZpcnN0RGF0YVBvaW50O1xuICAgIH1cbiAgICB0aGlzLmNoYXJ0LnNob3dUb29sdGlwKHBvaW50KTtcbiAgICBleHBlY3QodGhpcy5jaGFydC5nZXRDb250cm9sbGVyKCd0b29sdGlwJykgIT0gbnVsbCkudG9CZSh0cnVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNoZWNrQ2xpY2tJdGVtKCk6IHRoaXMge1xuICAgIGNvbnN0IHBvaW50ID0gdGhpcy5maXJzdERhdGFQb2ludDtcbiAgICBjb25zdCBjbGllbnRQb2ludCA9IHRoaXMuY2hhcnQuY2FudmFzLmdldENsaWVudEJ5UG9pbnQocG9pbnQueCwgcG9pbnQueSk7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7XG4gICAgICBjbGllbnRYOiBjbGllbnRQb2ludC54LFxuICAgICAgY2xpZW50WTogY2xpZW50UG9pbnQueVxuICAgIH0pO1xuICAgICh0aGlzLmNoYXJ0LmNhbnZhcy5nZXQoJ2VsJykgYXMgSFRNTEVsZW1lbnQpLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0RlbGF5PE0sIFQ+KG1vZHVsZTogTSwgY29tcDogVHlwZTxUPiwgcGFnZTogUGFnZUcyPFQ+IHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgaWYgKHBhZ2UgPT0gbnVsbCkge1xuICAgIHBhZ2UgPSBuZXcgUGFnZUcyPFQ+KCkubWFrZU1vZHVsZShtb2R1bGUsIGNvbXAsIHsgZGM6IGZhbHNlIH0pO1xuICB9XG4gIGNvbnN0IGNvbnRleHQgPSBwYWdlLmNvbnRleHQgYXMgTnpTYWZlQW55O1xuICBpZiAodHlwZW9mIGNvbnRleHQuZGVsYXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc29sZS53YXJuKGBZb3UgbXVzZSBiZSBkaW5mZWQgXCJkZWxheVwiIHByb3BlcnR5IGluIHRlc3QgY29tcG9uZW50YCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnRleHQuZGVsYXkgPSAxMDA7XG4gIHBhZ2UuZGMoKTtcbiAgcGFnZS5jb21wLm5nT25EZXN0cm95KCk7XG4gIGV4cGVjdChwYWdlLmNoYXJ0ID09IG51bGwpLnRvQmUodHJ1ZSk7XG4gIHRpY2soMjAxKTtcbiAgZGlzY2FyZFBlcmlvZGljVGFza3MoKTtcbn1cbiJdfQ==
|
package/esm2022/src/suite.mjs
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { TestBed } from '@angular/core/testing';
|
|
2
|
-
export class TestContext {
|
|
3
|
-
constructor(fixture) {
|
|
4
|
-
this.fixture = fixture;
|
|
5
|
-
}
|
|
6
|
-
get component() {
|
|
7
|
-
return this.fixture.componentInstance;
|
|
8
|
-
}
|
|
9
|
-
get el() {
|
|
10
|
-
return this.fixture.debugElement.nativeElement;
|
|
11
|
-
}
|
|
12
|
-
get dl() {
|
|
13
|
-
return this.fixture.debugElement;
|
|
14
|
-
}
|
|
15
|
-
get context() {
|
|
16
|
-
return this.fixture.componentInstance;
|
|
17
|
-
}
|
|
18
|
-
detectChanges() {
|
|
19
|
-
this.fixture.detectChanges();
|
|
20
|
-
}
|
|
21
|
-
resolve(component) {
|
|
22
|
-
return this.fixture.debugElement.injector.get(component);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export const createTestContext = (component) => {
|
|
26
|
-
return new TestContext(TestBed.createComponent(component));
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90ZXN0aW5nL3NyYy9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW9CLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQW1CLE9BQTRCO1FBQTVCLFlBQU8sR0FBUCxPQUFPLENBQXFCO0lBQUcsQ0FBQztJQUVuRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDeEMsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPLENBQUssU0FBbUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBTyxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUksU0FBa0IsRUFBa0IsRUFBRTtJQUN6RSxPQUFPLElBQUksV0FBVyxDQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUksU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWJ1Z0VsZW1lbnQsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEZpeHR1cmUsIFRlc3RCZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuXG5leHBvcnQgY2xhc3MgVGVzdENvbnRleHQ8VD4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxUPikge31cblxuICBnZXQgY29tcG9uZW50KCk6IFQge1xuICAgIHJldHVybiB0aGlzLmZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2U7XG4gIH1cblxuICBnZXQgZWwoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmZpeHR1cmUuZGVidWdFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBnZXQgZGwoKTogRGVidWdFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5maXh0dXJlLmRlYnVnRWxlbWVudDtcbiAgfVxuXG4gIGdldCBjb250ZXh0KCk6IFQge1xuICAgIHJldHVybiB0aGlzLmZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2U7XG4gIH1cblxuICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZXNvbHZlPFQxPihjb21wb25lbnQ6IFR5cGU8VDE+KTogVDEge1xuICAgIHJldHVybiB0aGlzLmZpeHR1cmUuZGVidWdFbGVtZW50LmluamVjdG9yLmdldChjb21wb25lbnQpIGFzIFQxO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVUZXN0Q29udGV4dCA9IDxUPihjb21wb25lbnQ6IFR5cGU8VD4pOiBUZXN0Q29udGV4dDxUPiA9PiB7XG4gIHJldHVybiBuZXcgVGVzdENvbnRleHQ8VD4oVGVzdEJlZC5jcmVhdGVDb21wb25lbnQ8VD4oY29tcG9uZW50KSk7XG59O1xuIl19
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { dispatchFakeEvent } from './dispatch-events';
|
|
9
|
-
/**
|
|
10
|
-
* Focuses an input, sets its value and dispatches
|
|
11
|
-
* the `input` event, simulating the user typing.
|
|
12
|
-
*
|
|
13
|
-
* @param value Value to be set on the input.
|
|
14
|
-
* @param element Element onto which to set the value.
|
|
15
|
-
*/
|
|
16
|
-
export function typeInElement(value, element) {
|
|
17
|
-
element.focus();
|
|
18
|
-
element.value = value;
|
|
19
|
-
dispatchFakeEvent(element, 'input');
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1pbi1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGVzdGluZy9zcmMvdHlwZS1pbi1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXREOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYSxFQUFFLE9BQXlCO0lBQ3BFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN0QixpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBkaXNwYXRjaEZha2VFdmVudCB9IGZyb20gJy4vZGlzcGF0Y2gtZXZlbnRzJztcblxuLyoqXG4gKiBGb2N1c2VzIGFuIGlucHV0LCBzZXRzIGl0cyB2YWx1ZSBhbmQgZGlzcGF0Y2hlc1xuICogdGhlIGBpbnB1dGAgZXZlbnQsIHNpbXVsYXRpbmcgdGhlIHVzZXIgdHlwaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBiZSBzZXQgb24gdGhlIGlucHV0LlxuICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCBvbnRvIHdoaWNoIHRvIHNldCB0aGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlSW5FbGVtZW50KHZhbHVlOiBzdHJpbmcsIGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcbiAgZWxlbWVudC5mb2N1cygpO1xuICBlbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gIGRpc3BhdGNoRmFrZUV2ZW50KGVsZW1lbnQsICdpbnB1dCcpO1xufVxuIl19
|
package/esm2022/src/zorro.mjs
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { tick } from '@angular/core/testing';
|
|
2
|
-
import { By } from '@angular/platform-browser';
|
|
3
|
-
import { NzDropDownDirective } from 'ng-zorro-antd/dropdown';
|
|
4
|
-
import { dispatchFakeEvent } from './dispatch-events';
|
|
5
|
-
export const DROPDOWN_MIN_TIME = 1000;
|
|
6
|
-
/**
|
|
7
|
-
* 触发 dropdown
|
|
8
|
-
*/
|
|
9
|
-
export function dispatchDropDown(dl, trigger, allowNull = true) {
|
|
10
|
-
const directive = dl.query(By.directive(NzDropDownDirective));
|
|
11
|
-
if (allowNull && directive == null) {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
const el = directive.injector.get(NzDropDownDirective).elementRef.nativeElement;
|
|
15
|
-
if (trigger === 'click') {
|
|
16
|
-
dispatchFakeEvent(el, 'click');
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
dispatchFakeEvent(el, 'mouseenter');
|
|
20
|
-
}
|
|
21
|
-
tick(DROPDOWN_MIN_TIME);
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9ycm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90ZXN0aW5nL3NyYy96b3Jyby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsRUFBZ0IsRUFDaEIsT0FBK0IsRUFDL0IsWUFBcUIsSUFBSTtJQUV6QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBc0IsbUJBQW1CLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBNEIsQ0FBQztJQUNwSCxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN4QixpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztTQUFNLENBQUM7UUFDTixpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGljayB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBCeSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBOekRyb3BEb3duRGlyZWN0aXZlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9kcm9wZG93bic7XG5cbmltcG9ydCB7IGRpc3BhdGNoRmFrZUV2ZW50IH0gZnJvbSAnLi9kaXNwYXRjaC1ldmVudHMnO1xuXG5leHBvcnQgY29uc3QgRFJPUERPV05fTUlOX1RJTUUgPSAxMDAwO1xuXG4vKipcbiAqIOinpuWPkSBkcm9wZG93blxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hEcm9wRG93bihcbiAgZGw6IERlYnVnRWxlbWVudCxcbiAgdHJpZ2dlcjogJ21vdXNlbGVhdmUnIHwgJ2NsaWNrJyxcbiAgYWxsb3dOdWxsOiBib29sZWFuID0gdHJ1ZVxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGRpcmVjdGl2ZSA9IGRsLnF1ZXJ5KEJ5LmRpcmVjdGl2ZShOekRyb3BEb3duRGlyZWN0aXZlKSk7XG4gIGlmIChhbGxvd051bGwgJiYgZGlyZWN0aXZlID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZWwgPSBkaXJlY3RpdmUuaW5qZWN0b3IuZ2V0PE56RHJvcERvd25EaXJlY3RpdmU+KE56RHJvcERvd25EaXJlY3RpdmUpLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgaWYgKHRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICBkaXNwYXRjaEZha2VFdmVudChlbCwgJ2NsaWNrJyk7XG4gIH0gZWxzZSB7XG4gICAgZGlzcGF0Y2hGYWtlRXZlbnQoZWwsICdtb3VzZWVudGVyJyk7XG4gIH1cbiAgdGljayhEUk9QRE9XTl9NSU5fVElNRSk7XG4gIHJldHVybiB0cnVlO1xufVxuIl19
|
package/esm2022/testing.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public_api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rlc3RpbmcvdGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
|