From f9183b954b35eaf2cec4dbe463f4f91a2b3785ae Mon Sep 17 00:00:00 2001 From: Daijiro Wachi <daijiro.wachi@gmail.com> Date: Tue, 19 May 2020 22:34:42 +0900 Subject: [PATCH] test: add unit test for shared-audio-context.js --- src/lib/audio/shared-audio-context.js | 8 +++++--- test/unit/util/audio-context.test.js | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 test/unit/util/audio-context.test.js diff --git a/src/lib/audio/shared-audio-context.js b/src/lib/audio/shared-audio-context.js index 7d65e51a0..dc1a8703f 100644 --- a/src/lib/audio/shared-audio-context.js +++ b/src/lib/audio/shared-audio-context.js @@ -1,5 +1,5 @@ -import StartAudioContext from 'startaudiocontext'; -import bowser from 'bowser'; +import StartAudioContext from "startaudiocontext"; +import bowser from "bowser"; let AUDIO_CONTEXT; @@ -8,7 +8,9 @@ if (!bowser.msie) { * AudioContext can be initialized only when user interaction event happens */ const event = - typeof document.ontouchend === 'undefined' ? 'mouseup' : 'touchend'; + typeof document.ontouchstart === "undefined" + ? "mousedown" + : "touchstart"; const initAudioContext = () => { document.removeEventListener(event, initAudioContext); AUDIO_CONTEXT = new (window.AudioContext || diff --git a/test/unit/util/audio-context.test.js b/test/unit/util/audio-context.test.js new file mode 100644 index 000000000..d4f3c4ec7 --- /dev/null +++ b/test/unit/util/audio-context.test.js @@ -0,0 +1,25 @@ +import "web-audio-test-api"; +import SharedAudioContext from "../../../src/lib/audio/shared-audio-context"; + +describe("Shared Audio Context", () => { + const audioContext = new AudioContext(); + + test("returns empty object without user gesture", () => { + const sharedAudioContext = new SharedAudioContext(); + expect(sharedAudioContext).toMatchObject({}); + }); + + test("returns AudioContext when mousedown is triggered", () => { + const sharedAudioContext = new SharedAudioContext(); + const event = new Event("mousedown"); + document.dispatchEvent(event); + expect(sharedAudioContext).toMatchObject(audioContext); + }); + + test("returns AudioContext when touchstart is triggered", () => { + const sharedAudioContext = new SharedAudioContext(); + const event = new Event("touchstart"); + document.dispatchEvent(event); + expect(sharedAudioContext).toMatchObject(audioContext); + }); +}); -- GitLab