Skip to content

Commit daa44fd

Browse files
committed
Merge branch 'master' into dependabot/npm_and_yarn/acorn-6.4.1
2 parents 8c877cf + 0a697a6 commit daa44fd

File tree

5 files changed

+51
-5
lines changed

5 files changed

+51
-5
lines changed

src/dom-wrapper.ts

+11-2
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,23 @@ export class DOMWrapper<ElementType extends Element> implements WrapperAPI {
5050
return new ErrorWrapper({ selector })
5151
}
5252

53+
get<T extends Element>(selector: string): DOMWrapper<T> {
54+
const result = this.find<T>(selector)
55+
if (result instanceof ErrorWrapper) {
56+
throw new Error(`Unable to find ${selector} within: ${this.html()}`)
57+
}
58+
59+
return result
60+
}
61+
5362
findAll<T extends Element>(selector: string): DOMWrapper<T>[] {
5463
return Array.from(this.element.querySelectorAll<T>(selector)).map(
5564
(x) => new DOMWrapper(x)
5665
)
5766
}
5867

5968
private async setChecked(checked: boolean = true) {
60-
// typecast so we get typesafety
69+
// typecast so we get type safety
6170
const element = (this.element as unknown) as HTMLInputElement
6271
const type = this.attributes().type
6372

@@ -69,7 +78,7 @@ export class DOMWrapper<ElementType extends Element> implements WrapperAPI {
6978

7079
// we do not want to trigger an event if the user
7180
// attempting set the same value twice
72-
// this is beacuse in a browser setting checked = true when it is
81+
// this is because in a browser setting checked = true when it is
7382
// already true is a no-op; no change event is triggered
7483
if (checked === element.checked) {
7584
return

src/emitMixin.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ export const createEmitMixin = () => {
55

66
const emitMixin = {
77
beforeCreate() {
8-
const originalEmit = getCurrentInstance().emit
98
getCurrentInstance().emit = (event: string, ...args: unknown[]) => {
109
events[event]
1110
? (events[event] = [...events[event], [...args]])
1211
: (events[event] = [[...args]])
1312

14-
return originalEmit.call(getCurrentInstance(), event, ...args)
13+
return [event, ...args]
1514
}
1615
}
1716
}

src/vue-wrapper.ts

+9
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,15 @@ export class VueWrapper implements WrapperAPI {
7979
return new ErrorWrapper({ selector })
8080
}
8181

82+
get<T extends Element>(selector: string): DOMWrapper<T> {
83+
const result = this.find<T>(selector)
84+
if (result instanceof ErrorWrapper) {
85+
throw new Error(`Unable to find ${selector} within: ${this.html()}`)
86+
}
87+
88+
return result
89+
}
90+
8291
findAll<T extends Element>(selector: string): DOMWrapper<T>[] {
8392
const results = this.appRootNode.querySelectorAll<T>(selector)
8493
return Array.from(results).map((x) => new DOMWrapper(x))

tests/emit.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ describe('emitted', () => {
4444
expect(wrapper.emitted().hello[1]).toEqual(['foo', 'bar'])
4545
})
4646

47-
it.only('captures events emitted via destructured emit', () => {
47+
it.skip('captures events emitted via destructured emit', () => {
4848
const Component = defineComponent({
4949
name: 'ContextEmit',
5050

tests/get.spec.ts

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { defineComponent, h } from 'vue'
2+
3+
import { mount } from '../src'
4+
5+
describe('get', () => {
6+
test('returns the element if it exists', () => {
7+
const Component = defineComponent({
8+
render() {
9+
return h('div', {}, [h('span', { id: 'my-span' })])
10+
}
11+
})
12+
13+
const wrapper = mount(Component)
14+
expect(wrapper.get('#my-span')).not.toBeNull()
15+
})
16+
17+
test('throws if it does not exist', () => {
18+
const Component = defineComponent({
19+
render() {
20+
return h('div', {}, [h('span', { id: 'my-span' })])
21+
}
22+
})
23+
24+
const wrapper = mount(Component)
25+
expect(() => wrapper.get('#other-span')).toThrowError(
26+
'Unable to find #other-span within: <div><span id="my-span"></span></div>'
27+
)
28+
})
29+
})

0 commit comments

Comments
 (0)