@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.
97 lines (73 loc) • 2.74 kB
text/typescript
import { describe, expect, it } from 'vitest';
import { parseFeatureFlag } from './parser';
describe('parseFeatureFlag', () => {
it('should parse an empty string into an empty object', () => {
expect(parseFeatureFlag('')).toEqual({});
});
it('should enable a feature when prefixed with +', () => {
expect(parseFeatureFlag('+webrtc_sync')).toEqual({ webrtc_sync: true });
});
it('should disable a feature when prefixed with -', () => {
expect(parseFeatureFlag('-openai_api_key')).toEqual({ openai_api_key: false });
});
it('should handle multiple flags separated by commas', () => {
const input = '+webrtc_sync,-openai_api_key,+another_feature';
expect(parseFeatureFlag(input)).toEqual({
webrtc_sync: true,
openai_api_key: false,
});
});
it('should hide content with commercial flags', () => {
const input = '+commercial_hide_github,+commercial_hide_docs';
expect(parseFeatureFlag(input)).toEqual({
commercial_hide_docs: true,
commercial_hide_github: true,
});
});
it('invalid flag format return nothing', () => {
const input = 'invalid_format';
expect(parseFeatureFlag(input)).toEqual({});
});
it('invalid format return empty object', () => {
const input = '+webrtc_sync:unexpected';
expect(parseFeatureFlag(input)).toEqual({});
});
it('invalid flag format return nothing', () => {
const input = 'invalid_format';
expect(parseFeatureFlag(input)).toEqual({});
});
it('invalid format return empty object', () => {
const input = '+webrtc_sync:unexpected';
expect(parseFeatureFlag(input)).toEqual({});
});
it('should handle flags separated by Chinese commas', () => {
const input = '+webrtc_sync,-openai_api_key';
expect(parseFeatureFlag(input)).toEqual({
webrtc_sync: true,
openai_api_key: false,
});
});
it('should ignore whitespace around flags', () => {
const input = ' +webrtc_sync , -openai_api_key ';
expect(parseFeatureFlag(input)).toEqual({
webrtc_sync: true,
openai_api_key: false,
});
});
it('should handle flags with underscores and numbers', () => {
const input = '+feature_1,-feature_2';
expect(parseFeatureFlag(input)).toEqual({});
});
it('should handle flags in camelCase', () => {
const input = '+webrtcSync,-openaiApiKey';
expect(parseFeatureFlag(input)).toEqual({});
});
it('should handle flags in PascalCase', () => {
const input = '+WebrtcSync,-OpenaiApiKey';
expect(parseFeatureFlag(input)).toEqual({});
});
it('should handle flags with special characters', () => {
const input = '+webrtc-sync,-openai.api.key';
expect(parseFeatureFlag(input)).toEqual({});
});
});