import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:patbond_flutter/core/theme/app_theme.dart'; import 'package:patbond_flutter/core/widgets/comment_tile.dart'; import '../../helpers/community_test_helpers.dart'; void main() { final now = DateTime.parse('2026-09-08T13:00:00.000Z'); Widget wrap(Widget child) => MaterialApp( theme: buildAppTheme(), home: Scaffold(body: Center(child: child)), ); testWidgets('渲染作者名 / 内容 / 相对时间;无 onDelete 不显删除', (tester) async { await tester.pumpWidget( wrap(CommentTile(comment: sampleComment(), now: now)), ); expect(find.text('毛毛的铲屎官'), findsOneWidget); expect(find.text('好可爱!', findRichText: true), findsOneWidget); expect(find.text('2 小时前'), findsOneWidget); expect(find.text('删除'), findsNothing); }); testWidgets('@ 回复以「回复 @昵称:」前缀呈现;降级作者「宠友」占位', (tester) async { await tester.pumpWidget( wrap( CommentTile( comment: sampleComment( author: sampleAuthorJson(nickname: null, avatarUrl: null), replyToUser: sampleAuthorJson(userId: 'u-2', nickname: '豆豆麻麻'), ), now: now, ), ), ); expect(find.text('宠友'), findsOneWidget); expect( find.textContaining('回复 @豆豆麻麻:', findRichText: true), findsOneWidget, ); }); testWidgets('onDelete 提供时显删除入口并回调;deleting 期间转圈锁定', (tester) async { var deleted = 0; await tester.pumpWidget( wrap( CommentTile( comment: sampleComment(), now: now, onDelete: () => deleted++, ), ), ); await tester.tap(find.text('删除')); expect(deleted, 1); await tester.pumpWidget( wrap( CommentTile( comment: sampleComment(), now: now, deleting: true, onDelete: () => deleted++, ), ), ); expect(find.text('删除'), findsNothing); expect(find.byType(CircularProgressIndicator), findsOneWidget); }); }