import 'package:flutter_test/flutter_test.dart'; import 'package:meeyao_qianwen/features/notifications/data/models/notification_payload.dart'; void main() { group('parseNotificationPayload', () { test('parses none action', () { final payload = parseNotificationPayload({'action': 'none'}); expect(payload, isA()); }); test('parses open_route action with all fields', () { final payload = parseNotificationPayload({ 'action': 'open_route', 'route': '/history', 'entityId': 'abc-123', 'tab': 'details', }); expect(payload, isA()); final routePayload = payload as NotificationPayloadRoute; expect(routePayload.route, '/history'); expect(routePayload.entityId, 'abc-123'); expect(routePayload.tab, 'details'); }); test('parses open_route action with minimal fields', () { final payload = parseNotificationPayload({ 'action': 'open_route', 'route': '/settings', }); expect(payload, isA()); final routePayload = payload as NotificationPayloadRoute; expect(routePayload.route, '/settings'); expect(routePayload.entityId, isNull); expect(routePayload.tab, isNull); }); test('parses open_url action', () { final payload = parseNotificationPayload({ 'action': 'open_url', 'url': 'https://example.com', }); expect(payload, isA()); final urlPayload = payload as NotificationPayloadUrl; expect(urlPayload.url, 'https://example.com'); }); test('unknown action defaults to none', () { final payload = parseNotificationPayload({'action': 'unknown'}); expect(payload, isA()); }); test('missing action defaults to none', () { final payload = parseNotificationPayload({}); expect(payload, isA()); }); }); }