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'); }); }