From 7313d3a2e290804efbafb8e9ee2a675b5dee0179 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Tue, 26 May 2020 17:46:59 -0400 Subject: Add tests for duplicate listeners --- test/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/index.js b/test/index.js index 554f1f1..020c91f 100644 --- a/test/index.js +++ b/test/index.js @@ -65,6 +65,15 @@ describe('mitt#', () => { inst.on(eventType, foo); expect(events.get(eventType)).to.deep.equal([foo]); }); + + // Adding the same listener multiple times should register it multiple times. + // See https://nodejs.org/api/events.html#events_emitter_on_eventname_listener + it('should add duplicate listeners', () => { + const foo = () => {}; + inst.on('foo', foo); + inst.on('foo', foo); + expect(events.get('foo')).to.deep.equal([foo, foo]); + }); }); describe('off()', () => { @@ -98,6 +107,16 @@ describe('mitt#', () => { expect(events.has('bar')).to.equal(false); expect(events.get('baz:bat!')).to.have.lengthOf(1); }); + + it('should remove only the first matching listener', () => { + const foo = () => {}; + inst.on('foo', foo); + inst.on('foo', foo); + inst.off('foo', foo); + expect(events.get('foo')).to.deep.equal([foo]); + inst.off('foo', foo); + expect(events.get('foo')).to.deep.equal([]); + }); }); describe('emit()', () => { -- cgit v1.2.3