70 lines
2.4 KiB
Dart
70 lines
2.4 KiB
Dart
import 'dart:convert';
|
|
import 'package:aioa_mobile/features/assistant/data/leave_progress_repository.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:http/http.dart' as http;
|
|
import 'package:http/testing.dart';
|
|
|
|
void main() {
|
|
test('parses ambiguous own request candidates', () async {
|
|
final repository = LeaveProgressRepository(
|
|
baseUrl: 'https://api.example.test/api/v1',
|
|
client: MockClient((request) async {
|
|
expect(request.url.path, '/api/v1/ai/leave-progress-answers');
|
|
return http.Response(
|
|
jsonEncode({
|
|
'requiresSelection': true,
|
|
'candidates': [
|
|
{
|
|
'id': 'leave-1',
|
|
'type': 'ANNUAL',
|
|
'status': 'PENDING',
|
|
'startsAt': '2026-07-20T01:00:00Z',
|
|
'endsAt': '2026-07-20T09:00:00Z',
|
|
'createdAt': '2026-07-18T01:00:00Z',
|
|
},
|
|
],
|
|
}),
|
|
200,
|
|
headers: {'content-type': 'application/json; charset=utf-8'},
|
|
);
|
|
}),
|
|
);
|
|
final result = await repository.ask('我的年假进度?');
|
|
expect(result.requiresSelection, isTrue);
|
|
expect(result.candidates.single.id, 'leave-1');
|
|
});
|
|
|
|
test('sends selected request id and parses active tasks', () async {
|
|
final repository = LeaveProgressRepository(
|
|
baseUrl: 'https://api.example.test/api/v1',
|
|
client: MockClient((request) async {
|
|
expect(jsonDecode(request.body)['selectedRequestId'], 'leave-1');
|
|
return http.Response(
|
|
jsonEncode({
|
|
'requiresSelection': false,
|
|
'answer': '正在主管审批',
|
|
'request': {
|
|
'id': 'leave-1',
|
|
'type': 'ANNUAL',
|
|
'status': 'PENDING',
|
|
'startsAt': '2026-07-20T01:00:00Z',
|
|
'endsAt': '2026-07-20T09:00:00Z',
|
|
'createdAt': '2026-07-18T01:00:00Z',
|
|
},
|
|
'progress': {
|
|
'activeTaskNames': ['主管审批'],
|
|
'completedTaskNames': [],
|
|
'processEnded': false,
|
|
},
|
|
}),
|
|
200,
|
|
headers: {'content-type': 'application/json; charset=utf-8'},
|
|
);
|
|
}),
|
|
);
|
|
final result = await repository.ask('进度?', selectedRequestId: 'leave-1');
|
|
expect(result.activeTasks, ['主管审批']);
|
|
expect(result.answer, '正在主管审批');
|
|
});
|
|
}
|