Files
English/kouyu_english/test/live_endpoint_test.dart
T

56 lines
2.0 KiB
Dart

import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:kouyu_english/core/ai_service.dart';
import 'package:kouyu_english/core/models.dart';
class RealHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context);
}
}
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
HttpOverrides.global = RealHttpOverrides();
const testKey = 'sk-242EMNuXYjxSEktp91E8QqS8ejGs9XImrDddIA5JHXdeCKLSUcB91vrSmhyv45pf';
AiService.instance.setFallbackApiKey(testKey);
test('Live test: /v1/responses endpoint testConnection', () async {
final resResponses = await AiService.instance.testConnection(
provider: AiProviderType.compatible,
endpoint: 'https://codex.slcydia.fun/v1/responses',
model: 'gemini-3.7-flash-high',
explicitApiKey: testKey,
);
print('Responses API result: ok=${resResponses.ok}, msg=${resResponses.message}');
expect(resResponses.ok, isTrue);
});
test('Live test: /v1 (Chat Completions) endpoint testConnection', () async {
final resChat = await AiService.instance.testConnection(
provider: AiProviderType.compatible,
endpoint: 'https://codex.slcydia.fun/v1',
model: 'gemini-3.7-flash-high',
explicitApiKey: testKey,
);
print('Chat Completions API result: ok=${resChat.ok}, msg=${resChat.message}');
expect(resChat.ok, isTrue);
});
test('Live test: /v1/responses dialogueReply', () async {
final reply = await AiService.instance.dialogueReply(
provider: AiProviderType.compatible,
endpoint: 'https://codex.slcydia.fun/v1/responses',
model: 'gemini-3.7-flash-high',
history: [
{'role': 'user', 'content': 'Hello, my name is Alex.'}
],
requiredTask: 'Greet learner and ask what is their name',
);
print('Dialogue reply from /v1/responses: reply="${reply?.reply}", slots=${reply?.slots}, suggestsComplete=${reply?.suggestsComplete}');
expect(reply, isNotNull);
expect(reply!.reply, isNotEmpty);
});
}