Files
social-app/apps/test/features/chat/ui_schema_renderer_test.dart
T

75 lines
2.0 KiB
Dart
Raw Normal View History

2026-02-28 13:49:51 +08:00
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:social_app/features/chat/ui/widgets/ui_schema_renderer.dart';
void main() {
group('UiSchemaRenderer', () {
testWidgets('renders stack title and badge', (tester) async {
final schema = {
'version': '2.0',
'locale': 'zh-CN',
'status': 'success',
'theme': 'default',
'root': {
'type': 'stack',
'direction': 'vertical',
'appearance': 'card',
'children': [
{'type': 'text', 'role': 'title', 'content': '日程已创建'},
{'type': 'badge', 'label': 'SUCCESS', 'status': 'success'},
],
},
};
await tester.pumpWidget(
MaterialApp(
home: Scaffold(body: UiSchemaRenderer.renderSchema(schema)),
),
);
expect(find.text('日程已创建'), findsOneWidget);
expect(find.text('SUCCESS'), findsOneWidget);
});
testWidgets('renders kv node values', (tester) async {
final schema = {
'version': '2.0',
'root': {
'type': 'stack',
'direction': 'vertical',
'appearance': 'card',
'children': [
{
'type': 'kv',
'items': [
{'key': 'title', 'label': '标题', 'value': '评审会'},
],
},
],
},
};
2026-02-28 13:49:51 +08:00
await tester.pumpWidget(
MaterialApp(
home: Scaffold(body: UiSchemaRenderer.renderSchema(schema)),
),
2026-02-28 13:49:51 +08:00
);
expect(find.text('标题'), findsOneWidget);
expect(find.text('评审会'), findsOneWidget);
2026-02-28 13:49:51 +08:00
});
testWidgets('renders fallback for invalid schema', (tester) async {
2026-02-28 13:49:51 +08:00
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
body: UiSchemaRenderer.renderSchema({'version': '2.0'}),
),
),
2026-02-28 13:49:51 +08:00
);
expect(find.textContaining('无效 UI Schema'), findsOneWidget);
2026-02-28 13:49:51 +08:00
});
});
}