Skip to content

Commit db0df64

Browse files
authored
Merge pull request #1287 from gitKrystan/audit-types-package
Port some conveniences from @types/ember__test-helpers package
2 parents 5652374 + f77cb62 commit db0df64

7 files changed

Lines changed: 55 additions & 7 deletions

File tree

addon-test-support/@ember/test-helpers/dom/-get-element.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
import getRootElement from './get-root-element';
22
import Target, { isDocument, isElement } from './-target';
33

4+
function getElement<
5+
K extends keyof (HTMLElementTagNameMap | SVGElementTagNameMap)
6+
>(target: K): (HTMLElementTagNameMap[K] | SVGElementTagNameMap[K]) | null;
7+
function getElement<K extends keyof HTMLElementTagNameMap>(
8+
target: K
9+
): HTMLElementTagNameMap[K] | null;
10+
function getElement<K extends keyof SVGElementTagNameMap>(
11+
target: K
12+
): SVGElementTagNameMap[K] | null;
413
function getElement(target: string): Element | null;
514
function getElement(target: Element): Element;
615
function getElement(target: Document): Document;

addon-test-support/@ember/test-helpers/dom/find-all.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
import getElements from './-get-elements';
22
import { toArray } from '../ie-11-polyfills';
33

4+
// Derived, with modification, from the types for `querySelectorAll`. These
5+
// would simply be defined as a tweaked re-export as `querySelector` is, but it
6+
// is non-trivial (to say the least!) to preserve overloads like this while also
7+
// changing the return type (from `NodeListOf` to `Array`).
8+
export default function findAll<
9+
K extends keyof (HTMLElementTagNameMap | SVGElementTagNameMap)
10+
>(selector: K): Array<HTMLElementTagNameMap[K] | SVGElementTagNameMap[K]>;
11+
export default function findAll<K extends keyof HTMLElementTagNameMap>(
12+
selector: K
13+
): Array<HTMLElementTagNameMap[K]>;
14+
export default function findAll<K extends keyof SVGElementTagNameMap>(
15+
selector: K
16+
): Array<SVGElementTagNameMap[K]>;
17+
export default function findAll(selector: string): Element[];
418
/**
519
Find all elements matched by the given selector. Similar to calling
620
`querySelectorAll()` on the test root element, but returns an array instead

addon-test-support/@ember/test-helpers/dom/find.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
import getElement from './-get-element';
22

3+
// Derived from `querySelector` types.
4+
export default function find<
5+
K extends keyof (HTMLElementTagNameMap | SVGElementTagNameMap)
6+
>(selector: K): HTMLElementTagNameMap[K] | SVGElementTagNameMap[K] | null;
7+
export default function find<K extends keyof HTMLElementTagNameMap>(
8+
selector: K
9+
): HTMLElementTagNameMap[K] | null;
10+
export default function find<K extends keyof SVGElementTagNameMap>(
11+
selector: K
12+
): SVGElementTagNameMap[K] | null;
13+
export default function find(selector: string): Element | null;
314
/**
415
Find the first element matched by the given selector. Equivalent to calling
516
`querySelector()` on the test root element.
617
718
@public
819
@param {string} selector the selector to search for
9-
@return {Element} matched element or null
20+
@return {Element | null} matched element or null
1021
1122
@example
1223
<caption>

addon-test-support/@ember/test-helpers/dom/trigger-event.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ registerHook('triggerEvent', 'start', (target: Target, eventType: string) => {
5757
export default function triggerEvent(
5858
target: Target,
5959
eventType: string,
60-
options?: object
60+
options?: Record<string, unknown>
6161
): Promise<void> {
6262
return Promise.resolve()
6363
.then(() => {

addon-test-support/@ember/test-helpers/settled.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ export interface SettledState {
193193
hasPendingTransitions: boolean | null;
194194
isRenderPending: boolean;
195195
pendingRequestCount: number;
196-
debugInfo?: DebugInfo;
196+
debugInfo: DebugInfo;
197197
}
198198

199199
/**

addon-test-support/@ember/test-helpers/setup-context.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export interface TestContext extends BaseContext {
8080
getProperties(...args: string[]): Pick<BaseContext, string>;
8181

8282
pauseTest(): Promise<void>;
83-
resumeTest(): Promise<void>;
83+
resumeTest(): void;
8484
}
8585

8686
// eslint-disable-next-line require-jsdoc

type-tests/api.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
currentURL,
2525
// Rendering Helpers
2626
render,
27+
rerender,
2728
clearRender,
2829
// Wait Helpers
2930
waitFor,
@@ -109,7 +110,11 @@ expectTypeOf(tap).toEqualTypeOf<
109110
(target: Target, options?: TouchEventInit) => Promise<void>
110111
>();
111112
expectTypeOf(triggerEvent).toEqualTypeOf<
112-
(target: Target, eventType: string, options?: object) => Promise<void>
113+
(
114+
target: Target,
115+
eventType: string,
116+
options?: Record<string, unknown>
117+
) => Promise<void>
113118
>();
114119
expectTypeOf(triggerKeyEvent).toEqualTypeOf<
115120
(
@@ -135,8 +140,16 @@ expectTypeOf(typeIn).toEqualTypeOf<
135140
>();
136141

137142
// DOM Query Helpers
138-
expectTypeOf(find).toEqualTypeOf<(selector: string) => Element | null>();
143+
expectTypeOf(find).toEqualTypeOf<Document['querySelector']>();
144+
expectTypeOf(find('a')).toEqualTypeOf<HTMLAnchorElement | SVGAElement | null>();
145+
expectTypeOf(find('div')).toEqualTypeOf<HTMLDivElement | null>();
146+
expectTypeOf(find('circle')).toEqualTypeOf<SVGCircleElement | null>();
147+
expectTypeOf(find('.corkscrew')).toEqualTypeOf<Element | null>();
139148
expectTypeOf(findAll).toEqualTypeOf<(selector: string) => Array<Element>>();
149+
expectTypeOf(findAll('a')).toEqualTypeOf<(HTMLAnchorElement | SVGAElement)[]>();
150+
expectTypeOf(findAll('div')).toEqualTypeOf<HTMLDivElement[]>();
151+
expectTypeOf(findAll('circle')).toEqualTypeOf<SVGCircleElement[]>();
152+
expectTypeOf(findAll('.corkscrew')).toEqualTypeOf<Element[]>();
140153
expectTypeOf(getRootElement).toEqualTypeOf<() => Element | Document>();
141154

142155
// Routing Helpers
@@ -153,6 +166,7 @@ expectTypeOf(render).toMatchTypeOf<
153166
options?: { owner?: Owner }
154167
) => Promise<void>
155168
>();
169+
expectTypeOf(rerender).toMatchTypeOf<() => Promise<void>>();
156170
expectTypeOf(clearRender).toEqualTypeOf<() => Promise<void>>();
157171

158172
// Wait Helpers
@@ -186,7 +200,7 @@ expectTypeOf(getSettledState).toEqualTypeOf<
186200
hasPendingTransitions: boolean | null;
187201
isRenderPending: boolean;
188202
pendingRequestCount: number;
189-
debugInfo?: InternalDebugInfo;
203+
debugInfo: InternalDebugInfo;
190204
}
191205
>();
192206

0 commit comments

Comments
 (0)