{"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    // eslint-disable-next-line prefer-rest-params\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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"}