Files
discord.js/packages/util/__tests__/runtime.test.ts
Muhammad Bin Ali 22b820fbf2 fix(util): detect Cloudflare Workers in shouldUseGlobalFetchAndWebSocket (#11456)
Co-authored-by: Muhammad Ali <muhammadali@cloudflare.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2026-03-26 15:46:57 +00:00

48 lines
1.7 KiB
TypeScript

import { afterEach, describe, expect, test, vi } from 'vitest';
import { shouldUseGlobalFetchAndWebSocket } from '../src/index.js';
describe('shouldUseGlobalFetchAndWebSocket', () => {
afterEach(() => {
vi.unstubAllGlobals();
});
test('GIVEN browser env with fetch and WebSocket THEN returns true', () => {
vi.stubGlobal('process', undefined);
vi.stubGlobal('fetch', () => void 0);
vi.stubGlobal('WebSocket', class {});
expect(shouldUseGlobalFetchAndWebSocket()).toBe(true);
});
test('GIVEN browser env without fetch or WebSocket THEN returns false', () => {
vi.stubGlobal('process', undefined);
vi.stubGlobal('fetch', globalThis.fetch);
vi.stubGlobal('WebSocket', globalThis.WebSocket);
// @ts-expect-error Testing missing globals
delete globalThis.fetch;
// @ts-expect-error Testing missing globals
delete globalThis.WebSocket;
expect(shouldUseGlobalFetchAndWebSocket()).toBe(false);
});
test('GIVEN Cloudflare Workers with nodejs_compat THEN returns true', () => {
vi.stubGlobal('process', { versions: { node: '22.19.0' } });
vi.stubGlobal('WebSocketPair', class {});
expect(shouldUseGlobalFetchAndWebSocket()).toBe(true);
});
test('GIVEN Node.js THEN returns false', () => {
vi.stubGlobal('process', { versions: { node: '22.19.0' } });
expect(shouldUseGlobalFetchAndWebSocket()).toBe(false);
});
test('GIVEN Deno THEN returns true', () => {
vi.stubGlobal('process', { versions: { deno: '1.0.0' } });
expect(shouldUseGlobalFetchAndWebSocket()).toBe(true);
});
test('GIVEN Bun THEN returns true', () => {
vi.stubGlobal('process', { versions: { bun: '1.0.0' } });
expect(shouldUseGlobalFetchAndWebSocket()).toBe(true);
});
});