Files
2025-08-31 01:41:23 +05:30

67 lines
2.0 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:genai/interface/model_providers/gemini.dart';
import 'package:genai/models/ai_request_model.dart';
import 'package:genai/interface/consts.dart';
void main() {
group('GeminiModel', () {
test('should return default AIRequestModel with Gemini configs', () {
final defaultModel = GeminiModel.instance.defaultAIRequestModel;
expect(defaultModel.modelApiProvider, equals(ModelAPIProvider.gemini));
expect(defaultModel.url, equals(kGeminiUrl));
expect(defaultModel.modelConfigs.length, greaterThan(0));
});
test('should create correct HttpRequestModel for non-streaming', () {
const req = AIRequestModel(
modelApiProvider: ModelAPIProvider.gemini,
url: kGeminiUrl,
model: 'gemini-pro',
apiKey: '123',
userPrompt: 'Hello',
systemPrompt: 'Sys',
stream: false,
);
final httpReq = GeminiModel.instance.createRequest(req)!;
expect(httpReq.url, contains('generateContent'));
expect(httpReq.method.name, equals('post'));
expect(httpReq.authModel?.apikey?.key, equals('123'));
});
test('should create correct HttpRequestModel for streaming', () {
const req = AIRequestModel(
modelApiProvider: ModelAPIProvider.gemini,
url: kGeminiUrl,
model: 'gemini-pro',
apiKey: '123',
userPrompt: 'Hello',
systemPrompt: 'Sys',
stream: true,
);
final httpReq = GeminiModel.instance.createRequest(req)!;
expect(httpReq.url, contains('streamGenerateContent'));
});
test('should format output correctly', () {
final response = {
'candidates': [
{
'content': {
'parts': [
{'text': 'Hello world'},
],
},
},
],
};
final output = GeminiModel.instance.outputFormatter(response);
expect(output, equals('Hello world'));
});
});
}