Files
stateful-ai-agent-gap/test/detector.test.ts
T

50 lines
1.7 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { PlatformDetector } from '../src/lib/detector';
describe('PlatformDetector', () => {
const detector = new PlatformDetector();
it('detects ChatGPT URLs', () => {
expect(detector.detect('https://chatgpt.com/c/123')).toBe('chatgpt');
expect(detector.detect('https://chat.openai.com/chat')).toBe('chatgpt');
});
it('detects Claude URLs', () => {
expect(detector.detect('https://claude.ai/chat/abc')).toBe('claude');
});
it('detects Cursor URLs', () => {
expect(detector.detect('https://cursor.sh/chat')).toBe('cursor');
});
it('detects Gemini URLs', () => {
expect(detector.detect('https://gemini.google.com/app')).toBe('gemini');
expect(detector.detect('https://aistudio.google.com/app')).toBe('gemini');
});
it('detects Copilot URLs', () => {
expect(detector.detect('https://copilot.microsoft.com/')).toBe('copilot');
expect(detector.detect('https://github.com/copilot')).toBe('copilot');
});
it('returns null for unrelated URLs', () => {
expect(detector.detect('https://google.com')).toBeNull();
expect(detector.detect('https://example.com')).toBeNull();
});
it('maps platform keys to display names', () => {
expect(detector.getPlatformName('chatgpt')).toBe('ChatGPT');
expect(detector.getPlatformName('claude')).toBe('Claude');
expect(detector.getPlatformName('unknown')).toBe('unknown');
});
it('lists all supported platforms', () => {
const platforms = detector.getSupportedPlatforms();
expect(platforms).toContain('chatgpt');
expect(platforms).toContain('claude');
expect(platforms).toContain('cursor');
expect(platforms).toContain('gemini');
expect(platforms).toContain('copilot');
});
});