58 lines
2.0 KiB
Dart
58 lines
2.0 KiB
Dart
|
|
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<NotificationPayloadNone>());
|
||
|
|
});
|
||
|
|
|
||
|
|
test('parses open_route action with all fields', () {
|
||
|
|
final payload = parseNotificationPayload({
|
||
|
|
'action': 'open_route',
|
||
|
|
'route': '/history',
|
||
|
|
'entityId': 'abc-123',
|
||
|
|
'tab': 'details',
|
||
|
|
});
|
||
|
|
expect(payload, isA<NotificationPayloadRoute>());
|
||
|
|
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<NotificationPayloadRoute>());
|
||
|
|
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<NotificationPayloadUrl>());
|
||
|
|
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<NotificationPayloadNone>());
|
||
|
|
});
|
||
|
|
|
||
|
|
test('missing action defaults to none', () {
|
||
|
|
final payload = parseNotificationPayload({});
|
||
|
|
expect(payload, isA<NotificationPayloadNone>());
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|