mirror of
https://github.com/foss42/apidash.git
synced 2025-12-01 18:28:25 +08:00
67 lines
2.0 KiB
Dart
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'));
|
|
});
|
|
});
|
|
}
|