import 'package:flutter_test/flutter_test.dart'; import 'package:marianum_mobile/share_intent/pending_share.dart'; PendingShare _share({ List filePaths = const [], String? text, DateTime? receivedAt, }) => PendingShare( filePaths: filePaths, text: text, receivedAt: receivedAt ?? DateTime(2026, 1, 1), ); void main() { group('PendingShare.contentEquals', () { test('equal payloads compare equal regardless of receivedAt', () { final a = _share( filePaths: ['/tmp/a.jpg', '/tmp/b.jpg'], text: 'hi', receivedAt: DateTime(2026, 1, 1), ); final b = _share( filePaths: ['/tmp/a.jpg', '/tmp/b.jpg'], text: 'hi', receivedAt: DateTime(2026, 1, 1, 0, 0, 1), ); expect(a.contentEquals(b), isTrue); expect(b.contentEquals(a), isTrue); }); test('differing text is not equal', () { final a = _share(filePaths: ['/tmp/a.jpg'], text: 'hi'); final b = _share(filePaths: ['/tmp/a.jpg'], text: 'ho'); expect(a.contentEquals(b), isFalse); }); test('null text vs text is not equal', () { final a = _share(filePaths: ['/tmp/a.jpg']); final b = _share(filePaths: ['/tmp/a.jpg'], text: 'hi'); expect(a.contentEquals(b), isFalse); }); test('differing file lists are not equal', () { final a = _share(filePaths: ['/tmp/a.jpg']); final b = _share(filePaths: ['/tmp/b.jpg']); final c = _share(filePaths: ['/tmp/a.jpg', '/tmp/b.jpg']); expect(a.contentEquals(b), isFalse); expect(a.contentEquals(c), isFalse); }); test('file order matters', () { final a = _share(filePaths: ['/tmp/a.jpg', '/tmp/b.jpg']); final b = _share(filePaths: ['/tmp/b.jpg', '/tmp/a.jpg']); expect(a.contentEquals(b), isFalse); }); test('empty shares compare equal', () { expect(_share().contentEquals(_share()), isTrue); }); test('relocated share still equals its raw delivery', () { final raw = _share(filePaths: ['/cache/a.jpg']); final claimed = PendingShare( filePaths: ['/cache/share_intent/1/a.jpg'], text: null, receivedAt: DateTime(2026, 1, 1), sourcePaths: raw.filePaths, ); expect(claimed.contentEquals(raw), isTrue); expect(raw.contentEquals(claimed), isTrue); }); }); }