Files
wehub-resource-sync c48612c494
CI / E2E Tests (push) Has been cancelled
CI / Lint, Typecheck & Unit Tests (push) Has been cancelled
Docs Build / Build docs site (push) Has been cancelled
Publish @openmaic packages / Build, validate & publish (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:23 +08:00

126 lines
3.1 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import {
isMaicEditorEnabled,
isVocationalTaskEngineEnabled,
resolveVocationalActive,
shouldShowVocationalTestUi,
} from '@/lib/config/feature-flags';
const FLAG = 'NEXT_PUBLIC_MAIC_EDITOR_ENABLED';
describe('isMaicEditorEnabled', () => {
let original: string | undefined;
beforeEach(() => {
original = process.env[FLAG];
});
afterEach(() => {
if (original === undefined) {
delete process.env[FLAG];
} else {
process.env[FLAG] = original;
}
});
it('returns false when the env var is unset', () => {
delete process.env[FLAG];
expect(isMaicEditorEnabled()).toBe(false);
});
it("returns true for 'true'", () => {
process.env[FLAG] = 'true';
expect(isMaicEditorEnabled()).toBe(true);
});
it("returns true for '1'", () => {
process.env[FLAG] = '1';
expect(isMaicEditorEnabled()).toBe(true);
});
it("returns false for 'false'", () => {
process.env[FLAG] = 'false';
expect(isMaicEditorEnabled()).toBe(false);
});
it('returns false for an unrecognized string', () => {
process.env[FLAG] = 'yes';
expect(isMaicEditorEnabled()).toBe(false);
});
});
describe('isVocationalTaskEngineEnabled', () => {
const flag = 'OPENMAIC_ENABLE_VOCATIONAL';
let original: string | undefined;
beforeEach(() => {
original = process.env[flag];
});
afterEach(() => {
if (original === undefined) {
delete process.env[flag];
} else {
process.env[flag] = original;
}
});
it('defaults off when unset', () => {
delete process.env[flag];
expect(isVocationalTaskEngineEnabled()).toBe(false);
});
it("returns true for 'true' and '1'", () => {
process.env[flag] = 'true';
expect(isVocationalTaskEngineEnabled()).toBe(true);
process.env[flag] = '1';
expect(isVocationalTaskEngineEnabled()).toBe(true);
});
it("returns false for 'false'", () => {
process.env[flag] = 'false';
expect(isVocationalTaskEngineEnabled()).toBe(false);
});
it('resolves active mode from both request intent and server flag', () => {
process.env[flag] = 'true';
expect(resolveVocationalActive({ taskEngineMode: true })).toBe(true);
expect(resolveVocationalActive({ taskEngineMode: false })).toBe(false);
expect(resolveVocationalActive(undefined)).toBe(false);
process.env[flag] = 'false';
expect(resolveVocationalActive({ taskEngineMode: true })).toBe(false);
});
});
describe('shouldShowVocationalTestUi', () => {
const flag = 'NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI';
let original: string | undefined;
beforeEach(() => {
original = process.env[flag];
});
afterEach(() => {
if (original === undefined) {
delete process.env[flag];
} else {
process.env[flag] = original;
}
});
it('defaults off when unset', () => {
delete process.env[flag];
expect(shouldShowVocationalTestUi()).toBe(false);
});
it("returns true for 'true' and '1'", () => {
process.env[flag] = 'true';
expect(shouldShowVocationalTestUi()).toBe(true);
process.env[flag] = '1';
expect(shouldShowVocationalTestUi()).toBe(true);
});
});