feat: 增强日历功能并集成 AgentScope 代理服务
This commit is contained in:
@@ -22,6 +22,7 @@ void main() {
|
||||
'color': '#4F46E5',
|
||||
'location': '会议室A',
|
||||
'notes': '带电脑',
|
||||
'reminder_minutes': 15,
|
||||
'attachments': [
|
||||
{
|
||||
'name': '议程文档',
|
||||
@@ -52,6 +53,7 @@ void main() {
|
||||
expect(result, hasLength(1));
|
||||
expect(result.first.metadata?.attachments, hasLength(1));
|
||||
expect(result.first.metadata?.raw['new_field'], 'future');
|
||||
expect(result.first.metadata?.reminderMinutes, 15);
|
||||
expect(result.first.startAt.isUtc, isFalse);
|
||||
});
|
||||
|
||||
@@ -60,6 +62,7 @@ void main() {
|
||||
client.registerHandler('/api/v1/schedule-items', 'POST', (request) {
|
||||
final body = request.data as Map<String, dynamic>;
|
||||
expect(body['metadata']['version'], 1);
|
||||
expect(body['metadata']['reminder_minutes'], 15);
|
||||
expect(body['metadata']['attachments'], isA<List<dynamic>>());
|
||||
return {
|
||||
'id': 'evt_2',
|
||||
@@ -83,6 +86,7 @@ void main() {
|
||||
location: '线上',
|
||||
notes: '准备 demo',
|
||||
attachments: [Attachment(name: 'PRD', type: 'document')],
|
||||
reminderMinutes: 15,
|
||||
version: 1,
|
||||
),
|
||||
),
|
||||
@@ -100,6 +104,7 @@ void main() {
|
||||
final body = request.data as Map<String, dynamic>;
|
||||
final metadata = body['metadata'] as Map<String, dynamic>;
|
||||
expect(metadata.containsKey('new_field'), isFalse);
|
||||
expect(metadata['reminder_minutes'], 30);
|
||||
return {
|
||||
'id': 'evt_3',
|
||||
...body,
|
||||
@@ -121,6 +126,7 @@ void main() {
|
||||
'notes': '更新周报',
|
||||
'attachments': const [],
|
||||
'version': 1,
|
||||
'reminder_minutes': 30,
|
||||
'new_field': 'future',
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:social_app/core/di/injection.dart';
|
||||
import 'package:social_app/features/calendar/data/models/schedule_item_model.dart';
|
||||
import 'package:social_app/features/calendar/data/services/mock_calendar_service.dart';
|
||||
import 'package:social_app/features/calendar/ui/screens/calendar_event_detail_screen.dart';
|
||||
|
||||
class _FakeCalendarService extends CalendarService {
|
||||
final ScheduleItemModel? event;
|
||||
|
||||
_FakeCalendarService({required this.event}) : super(apiClient: null);
|
||||
|
||||
@override
|
||||
Future<ScheduleItemModel?> getEventById(String id) async {
|
||||
return event;
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
final getIt = GetIt.instance;
|
||||
|
||||
setUp(() async {
|
||||
await getIt.reset();
|
||||
});
|
||||
|
||||
testWidgets('详情页显示结构化提醒时间并不显示metadata原样区块', (tester) async {
|
||||
sl.registerSingleton<CalendarService>(
|
||||
_FakeCalendarService(
|
||||
event: ScheduleItemModel(
|
||||
id: 'evt_1',
|
||||
title: '评审会',
|
||||
startAt: DateTime(2026, 3, 11, 15, 0),
|
||||
endAt: DateTime(2026, 3, 11, 16, 0),
|
||||
metadata: ScheduleMetadata(
|
||||
color: '#4F46E5',
|
||||
location: '会议室A',
|
||||
reminderMinutes: 15,
|
||||
version: 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
const MaterialApp(home: CalendarEventDetailScreen(eventId: 'evt_1')),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.text('提醒时间'), findsOneWidget);
|
||||
expect(find.text('开始前15分钟'), findsOneWidget);
|
||||
expect(find.text('metadata'), findsNothing);
|
||||
});
|
||||
|
||||
testWidgets('提醒分钟为空时显示无', (tester) async {
|
||||
sl.registerSingleton<CalendarService>(
|
||||
_FakeCalendarService(
|
||||
event: ScheduleItemModel(
|
||||
id: 'evt_2',
|
||||
title: '同步会',
|
||||
startAt: DateTime(2026, 3, 12, 10, 0),
|
||||
metadata: ScheduleMetadata(version: 1),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
const MaterialApp(home: CalendarEventDetailScreen(eventId: 'evt_2')),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.text('提醒时间'), findsOneWidget);
|
||||
expect(find.text('无'), findsOneWidget);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user