mirror of
https://github.com/arkorty/B.Tech-Project-III.git
synced 2026-04-19 20:51:49 +00:00
133 lines
4.3 KiB
TypeScript
133 lines
4.3 KiB
TypeScript
import { expect } from 'chai';
|
|
import { AIVerificationService } from '../src/services/ai-verification.service';
|
|
import { TextVerificationInput } from '../src/types/ai.types';
|
|
|
|
describe('AIVerificationService', function () {
|
|
this.timeout(30000); // Increase timeout for API calls
|
|
|
|
let aiService: AIVerificationService;
|
|
|
|
before(() => {
|
|
aiService = new AIVerificationService();
|
|
});
|
|
|
|
describe('Text Verification', function () {
|
|
it('should verify a valid text submission', async function () {
|
|
const input: TextVerificationInput = {
|
|
submissionText: 'The sky is blue because of Rayleigh scattering of sunlight.',
|
|
verificationCriteria: 'Answer must explain why the sky is blue with scientific reasoning.',
|
|
taskType: 'text_verification',
|
|
};
|
|
|
|
const result = await aiService.verifyTextTask(input);
|
|
|
|
expect(result).to.have.property('approved');
|
|
expect(result).to.have.property('score');
|
|
expect(result).to.have.property('reasoning');
|
|
expect(result.score).to.be.a('number');
|
|
expect(result.score).to.be.greaterThan(0);
|
|
expect(result.score).to.be.lessThanOrEqual(100);
|
|
});
|
|
|
|
it('should reject invalid text submission', async function () {
|
|
const input: TextVerificationInput = {
|
|
submissionText: 'I like pizza',
|
|
verificationCriteria: 'Answer must explain photosynthesis in plants.',
|
|
taskType: 'text_verification',
|
|
};
|
|
|
|
const result = await aiService.verifyTextTask(input);
|
|
|
|
expect(result.approved).to.be.false;
|
|
expect(result.score).to.be.lessThan(50);
|
|
});
|
|
|
|
it('should cache repeated verification requests', async function () {
|
|
const input: TextVerificationInput = {
|
|
submissionText: 'Test caching',
|
|
verificationCriteria: 'Must contain the word test',
|
|
taskType: 'text_verification',
|
|
};
|
|
|
|
const result1 = await aiService.verifyTextTask(input);
|
|
const result2 = await aiService.verifyTextTask(input);
|
|
|
|
expect(result1.timestamp).to.equal(result2.timestamp);
|
|
});
|
|
});
|
|
|
|
describe('Survey Verification', function () {
|
|
it('should verify survey submissions', async function () {
|
|
const answers = {
|
|
question1: 'Answer 1',
|
|
question2: 'Answer 2',
|
|
question3: 'Answer 3',
|
|
};
|
|
|
|
const result = await aiService.verifySurveySubmission(
|
|
answers,
|
|
'Must contain answers for question1, question2, and question3'
|
|
);
|
|
|
|
expect(result).to.have.property('approved');
|
|
expect(result).to.have.property('score');
|
|
});
|
|
});
|
|
|
|
describe('Content Moderation', function () {
|
|
it('should detect inappropriate content', async function () {
|
|
const result = await aiService.verifyContentModeration(
|
|
'This is spam spam spam',
|
|
'Flag content that appears to be spam or repetitive'
|
|
);
|
|
|
|
expect(result).to.have.property('approved');
|
|
expect(result).to.have.property('score');
|
|
});
|
|
|
|
it('should approve clean content', async function () {
|
|
const result = await aiService.verifyContentModeration(
|
|
'This is a helpful and constructive comment.',
|
|
'Flag harmful, abusive, or spam content'
|
|
);
|
|
|
|
expect(result.approved).to.be.true;
|
|
});
|
|
});
|
|
|
|
describe('Health Status', function () {
|
|
it('should return service health status', async function () {
|
|
const health = await aiService.getHealthStatus();
|
|
|
|
expect(health).to.have.property('status');
|
|
expect(health).to.have.property('rateLimit');
|
|
expect(health).to.have.property('cache');
|
|
expect(health.status).to.equal('healthy');
|
|
});
|
|
});
|
|
|
|
describe('Batch Verification', function () {
|
|
it('should batch verify multiple submissions', async function () {
|
|
const submissions: TextVerificationInput[] = [
|
|
{
|
|
submissionText: 'Valid answer 1',
|
|
verificationCriteria: 'Must be a valid answer',
|
|
},
|
|
{
|
|
submissionText: 'Valid answer 2',
|
|
verificationCriteria: 'Must be a valid answer',
|
|
},
|
|
];
|
|
|
|
const results = await aiService.batchVerify(submissions);
|
|
|
|
expect(results).to.be.an('array');
|
|
expect(results).to.have.lengthOf(2);
|
|
results.forEach((result) => {
|
|
expect(result).to.have.property('approved');
|
|
expect(result).to.have.property('score');
|
|
});
|
|
});
|
|
});
|
|
});
|