UNPKG

validai

Version:

AI-powered text validation for slang and gibberish detection

84 lines (83 loc) 3.98 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = require("../index"); // Mock the GeminiProvider jest.mock('../providers/gemini', () => { return { GeminiProvider: jest.fn().mockImplementation(() => ({ validate: jest.fn().mockImplementation((texts) => __awaiter(void 0, void 0, void 0, function* () { const results = {}; for (const [key, value] of Object.entries(texts)) { results[key] = { slang: value.includes('lol') || value.includes('omg'), slangReason: value.includes('lol') ? "Contains slang: 'lol'" : "", gibbrish: value.includes('asdf'), gibbrishReason: value.includes('asdf') ? "Contains gibberish text" : "" }; } return results; })) })) }; }); describe('ValidAI', () => { let validator; beforeEach(() => { validator = new index_1.ValidAI('fake-api-key', 'gemini', 'gemini-model'); }); describe('constructor', () => { it('should throw error for unsupported providers', () => { expect(() => { // @ts-ignore - Testing invalid provider new index_1.ValidAI('fake-api-key', 'unsupported', 'model'); }).toThrow('Currently only Gemini provider is supported'); }); it('should create instance with valid provider', () => { expect(validator).toBeInstanceOf(index_1.ValidAI); }); }); describe('validate', () => { it('should validate text input correctly', () => __awaiter(void 0, void 0, void 0, function* () { const input = { normal: 'Hello world', slang: 'lol what up', gibberish: 'asdf keyboard spam' }; const result = yield validator.validate(input); expect(result.success).toBe(false); // Because we have slang and gibberish expect(result.results.normal.slang).toBe(false); expect(result.results.slang.slang).toBe(true); expect(result.results.gibberish.gibbrish).toBe(true); })); it('should handle empty input', () => __awaiter(void 0, void 0, void 0, function* () { const input = {}; const result = yield validator.validate(input); expect(result.success).toBe(true); expect(result.results).toEqual({}); })); it('should throw error for non-string inputs', () => __awaiter(void 0, void 0, void 0, function* () { const input = { text: 'valid text', number: 123 }; yield expect(validator.validate(input)).rejects.toThrow('The field number is not a string input'); })); it('should return success true when no slang or gibberish detected', () => __awaiter(void 0, void 0, void 0, function* () { const input = { text1: 'This is a proper sentence.', text2: 'Another well-formed text.' }; const result = yield validator.validate(input); expect(result.success).toBe(true); })); }); });