feat: complete leave approval MVP
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
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, '正在主管审批');
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user