openlit
Version:
OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications, facilitating the integration of observability into your GenAI-driven projects
64 lines • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
describe('customRuleDetection', () => {
it('matches a custom rule and returns correct result', () => {
const rules = [
{ pattern: 'foo', classification: 'test', verdict: 'yes', guard: 'custom', score: 0.9, explanation: 'Matched foo' }
];
const result = (0, utils_1.customRuleDetection)('foo bar', rules);
expect(result.verdict).toBe('yes');
expect(result.classification).toBe('test');
expect(result.guard).toBe('custom');
expect(result.score).toBe(0.9);
expect(result.explanation).toBe('Matched foo');
});
it('returns none result if no rules match', () => {
const rules = [
{ pattern: 'baz', classification: 'none' }
];
const result = (0, utils_1.customRuleDetection)('foo bar', rules);
expect(result.verdict).toBe('none');
expect(result.classification).toBe('none');
expect(result.guard).toBe('none');
expect(result.score).toBe(0);
expect(result.explanation).toBe('none');
});
it('skips invalid regex patterns and continues', () => {
const rules = [
{ pattern: '[invalid', classification: 'bad' },
{ pattern: 'bar', classification: 'good', verdict: 'yes' }
];
const result = (0, utils_1.customRuleDetection)('foo bar', rules);
expect(result.classification).toBe('good');
expect(result.verdict).toBe('yes');
});
});
describe('applyThresholdScore', () => {
const baseResult = {
score: 0.7,
verdict: 'yes',
guard: 'test_guard',
classification: 'test_class',
explanation: 'test explanation'
};
it('returns the original result if score >= threshold', () => {
const result = (0, utils_1.applyThresholdScore)(baseResult, 0.5);
expect(result).toEqual(baseResult);
});
it('returns a none result if score < threshold', () => {
const result = (0, utils_1.applyThresholdScore)(baseResult, 0.8);
expect(result).toEqual({
score: 0,
verdict: 'none',
guard: 'none',
classification: 'none',
explanation: 'none'
});
});
it('returns the original result if score == threshold', () => {
const result = (0, utils_1.applyThresholdScore)(baseResult, 0.7);
expect(result).toEqual(baseResult);
});
});
//# sourceMappingURL=utils.test.js.map