Skip to content

Commit 3087dbb

Browse files
committed
test: fix test
1 parent 0936ab5 commit 3087dbb

File tree

4 files changed

+193
-39
lines changed

4 files changed

+193
-39
lines changed

jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ module.exports = {
140140
// snapshotSerializers: [],
141141

142142
// The test environment that will be used for testing
143-
testEnvironment: "node",
143+
testEnvironment: "jest-fixed-jsdom",
144144

145145
// Options that will be passed to the testEnvironment
146146
// testEnvironmentOptions: {},

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
"jest": "29.5.0",
129129
"jest-environment-jsdom": "29.5.0",
130130
"jest-extended": "^3.2.4",
131+
"jest-fixed-jsdom": "^0.0.10",
131132
"jsdom": "^20.0.0",
132133
"plop": "^2.5.3",
133134
"postcss": "^8.3.5",

src/hooks/VoicePlayer/__tests__/utils.spec.ts

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,25 @@ import {
77
import { isSafari } from '../../../utils/browser';
88
import { getParsedVoiceAudioFileInfo } from '../utils';
99

10-
describe('getParsedVoiceAudioFileInfo', () => {
11-
const originalUserAgent = navigator.userAgent;
10+
jest.mock('../../../utils/browser');
1211

12+
describe('getParsedVoiceAudioFileInfo', () => {
1313
afterEach(() => {
14-
Object.defineProperty(navigator, 'userAgent', {
15-
value: originalUserAgent,
16-
writable: false,
17-
});
14+
jest.clearAllMocks();
1815
});
1916

2017
it('should return VOICE_MESSAGE_MIME_TYPE__XM4A for Safari and m4a MIME type', () => {
21-
const safariUserAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15';
22-
23-
Object.defineProperty(navigator, 'userAgent', {
24-
value: safariUserAgent,
25-
writable: true,
26-
});
18+
(isSafari as jest.Mock).mockReturnValue(true);
2719

28-
expect(isSafari(safariUserAgent)).toBe(true);
2920
expect(getParsedVoiceAudioFileInfo('audio/mp3').mimeType).toBe(VOICE_MESSAGE_MIME_TYPE);
3021
expect(getParsedVoiceAudioFileInfo('audio/m4a').mimeType).toBe(VOICE_MESSAGE_MIME_TYPE__XM4A);
3122
expect(getParsedVoiceAudioFileInfo('audio/mp3').name).toBe(VOICE_MESSAGE_FILE_NAME);
3223
expect(getParsedVoiceAudioFileInfo('audio/m4a').name).toBe(VOICE_MESSAGE_FILE_NAME__XM4A);
3324
});
3425

3526
it('should return VOICE_MESSAGE_MIME_TYPE for non-Safari browser and m4a MIME type', () => {
36-
const chromeUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36';
37-
Object.defineProperty(navigator, 'userAgent', {
38-
value: chromeUserAgent,
39-
writable: true,
40-
});
27+
(isSafari as jest.Mock).mockReturnValue(false);
4128

42-
expect(isSafari(chromeUserAgent)).toBe(false);
4329
expect(getParsedVoiceAudioFileInfo('audio/mp3').mimeType).toBe(VOICE_MESSAGE_MIME_TYPE);
4430
expect(getParsedVoiceAudioFileInfo('audio/m4a').mimeType).toBe(VOICE_MESSAGE_MIME_TYPE);
4531
expect(getParsedVoiceAudioFileInfo('audio/mp3').name).toBe(VOICE_MESSAGE_FILE_NAME);

0 commit comments

Comments
 (0)