UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

62 lines (50 loc) 2.31 kB
// @vitest-environment node import urlJoin from 'url-join'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; // 模拟 urlJoin 函数 vi.mock('url-join', () => ({ default: vi.fn((...args) => args.join('/')), })); describe('getCanonicalUrl', () => { const originalEnv = process.env; beforeEach(() => { // 在每个测试前重置 process.env vi.resetModules(); process.env = { ...originalEnv }; }); afterEach(() => { // 在每个测试后恢复原始的 process.env process.env = originalEnv; }); it('should return correct URL for production environment', async () => { process.env.VERCEL = undefined; process.env.VERCEL_ENV = undefined; const { getCanonicalUrl } = await import('./url'); // 动态导入以获取最新的环境变量状态 const result = getCanonicalUrl('path', 'to', 'page'); expect(result).toBe('https://lobechat.com/path/to/page'); expect(urlJoin).toHaveBeenCalledWith('https://lobechat.com', 'path', 'to', 'page'); }); it('should return correct URL for Vercel preview environment', async () => { process.env.VERCEL = '1'; process.env.VERCEL_ENV = 'preview'; process.env.VERCEL_URL = 'preview-url.vercel.app'; const { getCanonicalUrl } = await import('./url'); // 动态导入 const result = getCanonicalUrl('path', 'to', 'page'); expect(result).toBe('https://preview-url.vercel.app/path/to/page'); expect(urlJoin).toHaveBeenCalledWith('https://preview-url.vercel.app', 'path', 'to', 'page'); }); it('should return production URL when VERCEL is set but VERCEL_ENV is production', async () => { process.env.VERCEL = '1'; process.env.VERCEL_ENV = 'production'; const { getCanonicalUrl } = await import('./url'); // 动态导入 const result = getCanonicalUrl('path', 'to', 'page'); expect(result).toBe('https://lobechat.com/path/to/page'); expect(urlJoin).toHaveBeenCalledWith('https://lobechat.com', 'path', 'to', 'page'); }); it('should work correctly without additional path arguments', async () => { const { getCanonicalUrl } = await import('./url'); // 动态导入 const result = getCanonicalUrl(); expect(result).toBe('https://lobechat.com'); expect(urlJoin).toHaveBeenCalledWith('https://lobechat.com'); }); });