Files
rely/test/features/share_intake/share_payload_parser_test.dart
T
Rijad Zuzo f655adfbea feat: add local-first private AI digest workflow
Migrate app code into canonical feature slices, add phone-only AI digest scheduling and review, wire local notification/background task support, and cover the flow with tests.
2026-05-17 00:17:20 +02:00

68 lines
2.3 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:relationship_saver/features/local/local_models.dart';
import 'package:relationship_saver/features/share_intake/share_payload_parser.dart';
void main() {
test('parses url-only payload', () {
final SharedPayload payload = SharePayloadParser.parse(
rawText: 'https://example.com/date-night',
sourceApp: 'share_sheet',
platform: 'android',
);
expect(payload.payloadType, SharedPayloadType.url);
expect(payload.url, 'https://example.com/date-night');
expect(payload.rawText, isEmpty);
});
test('parses text plus url payload', () {
final SharedPayload payload = SharePayloadParser.parse(
rawText: 'Could be a good anniversary place https://example.com',
sourceApp: 'share_sheet',
platform: 'android',
);
expect(payload.payloadType, SharedPayloadType.textWithUrl);
expect(payload.url, 'https://example.com');
expect(payload.rawText, 'Could be a good anniversary place');
});
test('preserves WhatsApp sender extraction when pattern matches', () {
final SharedPayload payload = SharePayloadParser.parse(
rawText: 'Ava Hart: loves cozy Italian restaurants',
sourceApp: 'whatsapp',
platform: 'ios',
);
expect(payload.sourceDisplayName, 'Ava Hart');
expect(payload.sourceUserId, 'wa:ava hart');
expect(payload.rawText, 'loves cozy Italian restaurants');
});
test('uses explicit signal source app hint and extracts sender', () {
final SharedPayload payload = SharePayloadParser.parse(
rawText: 'Marek: this concert looks promising',
sourceApp: 'signal',
platform: 'android',
);
expect(payload.sourceApp, 'signal');
expect(payload.sourceDisplayName, 'Marek');
expect(payload.sourceUserId, 'signal:marek');
expect(payload.rawText, 'this concert looks promising');
});
test('normalizes notes hint without trying to invent sender metadata', () {
final SharedPayload payload = SharePayloadParser.parse(
rawText: 'Dinner idea from Notes https://example.com',
sourceApp: 'notes',
platform: 'ios',
);
expect(payload.sourceApp, 'notes');
expect(payload.sourceDisplayName, isNull);
expect(payload.payloadType, SharedPayloadType.textWithUrl);
expect(payload.rawText, 'Dinner idea from Notes');
});
}