Skip to content

Commit 2f77544

Browse files
lmiller1990eddyerburgh
authored andcommitted
feat: emit api (#181)
* Add print * Add test * Add better test * Specs * All passing * Add flow optional type * Update docs * Update emitted.md * Add types
1 parent 6f64e53 commit 2f77544

File tree

5 files changed

+53
-2
lines changed

5 files changed

+53
-2
lines changed

docs/en/api/wrapper/emitted.md

+13
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,16 @@ expect(wrapper.emitted().foo.length).toBe(2)
3131
// assert event payload
3232
expect(wrapper.emitted().foo[1]).toEqual([123])
3333
```
34+
35+
You can also write the above as follows:
36+
37+
```js
38+
// assert event has been emitted
39+
expect(wrapper.emitted('foo')).toBeTruthy()
40+
41+
// assert event count
42+
expect(wrapper.emitted('foo').length).toBe(2)
43+
44+
// assert event payload
45+
expect(wrapper.emitted('foo')[1]).toEqual([123])
46+
```

docs/ja/api/wrapper/emitted.md

+13
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,16 @@ expect(wrapper.emitted().foo.length).toBe(2)
3131
// イベントのペイロードを検証します
3232
expect(wrapper.emitted().foo[1]).toEqual([123])
3333
```
34+
35+
別の構文があります。
36+
37+
```js
38+
// イベントが発行されたか検証します
39+
expect(wrapper.emitted('foo')).toBeTruthy()
40+
41+
// イベントの数を検証します
42+
expect(wrapper.emitted('foo').length).toBe(2)
43+
44+
// イベントのペイロードを検証します
45+
expect(wrapper.emitted('foo')[1]).toEqual([123])
46+
```

src/wrappers/wrapper.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,13 @@ export default class Wrapper implements BaseWrapper {
6262
/**
6363
* Returns an object containing custom events emitted by the Wrapper vm
6464
*/
65-
emitted () {
65+
emitted (event: ?string) {
6666
if (!this._emitted && !this.vm) {
6767
throwError('wrapper.emitted() can only be called on a Vue instance')
6868
}
69+
if (event) {
70+
return this._emitted[event]
71+
}
6972
return this._emitted
7073
}
7174

test/unit/specs/mount/Wrapper/emitted.spec.js

+22
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
11
import mount from '~src/mount'
22

33
describe('emitted', () => {
4+
it('captures emitted events with a different api', () => {
5+
const wrapper = mount({
6+
render: h => h('div')
7+
})
8+
9+
wrapper.vm.$emit('foo')
10+
expect(wrapper.emitted('foo')).to.exist
11+
expect(wrapper.emitted('foo').length).to.equal(1)
12+
expect(wrapper.emitted('foo')[0]).to.eql([])
13+
14+
expect(wrapper.emitted('bar')).not.to.exist
15+
wrapper.vm.$emit('bar', 1, 2, 3)
16+
expect(wrapper.emitted('bar')).to.exist
17+
expect(wrapper.emitted('bar').length).to.equal(1)
18+
expect(wrapper.emitted('bar')[0]).to.eql([1, 2, 3])
19+
20+
wrapper.vm.$emit('foo', 2, 3, 4)
21+
expect(wrapper.emitted('foo')).to.exist
22+
expect(wrapper.emitted('foo').length).to.equal(2)
23+
expect(wrapper.emitted('foo')[1]).to.eql([2, 3, 4])
24+
})
25+
426
it('captures emitted events', () => {
527
const wrapper = mount({
628
render: h => h('div')

types/index.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ interface Wrapper<V extends Vue> extends BaseWrapper {
7979
text (): string
8080
name (): string
8181

82-
emitted (): { [name: string]: Array<Array<any>> }
82+
emitted (string? event): { [name: string]: Array<Array<any>> }
8383
emittedByOrder (): Array<{ name: string, args: Array<any> }>
8484
}
8585

0 commit comments

Comments
 (0)