- Added TripInvitationRepository for managing trip invitations. - Created TripInvitation model with serialization methods. - Implemented notification payload parser for handling FCM notifications. - Enhanced NotificationService to manage trip invitations and related actions. - Updated UserRepository to include user search functionality. - Modified AuthRepository to store multiple FCM tokens. - Added tests for trip invitation logic and notification payload parsing. - Updated pubspec.yaml and pubspec.lock for dependency management.
50 lines
1.4 KiB
Dart
50 lines
1.4 KiB
Dart
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:travel_mate/models/trip_invitation.dart';
|
|
|
|
void main() {
|
|
group('TripInvitation', () {
|
|
test('toMap serializes required fields', () {
|
|
final invitation = TripInvitation(
|
|
id: 'id_1',
|
|
tripId: 'trip_1',
|
|
tripTitle: 'Weekend Rome',
|
|
inviterId: 'user_a',
|
|
inviterName: 'Alice',
|
|
inviteeId: 'user_b',
|
|
inviteeEmail: 'bob@example.com',
|
|
createdAt: DateTime(2026, 3, 3),
|
|
);
|
|
|
|
final map = invitation.toMap();
|
|
|
|
expect(map['tripId'], 'trip_1');
|
|
expect(map['status'], 'pending');
|
|
expect(map['respondedAt'], isNull);
|
|
expect(map['createdAt'], isA<Timestamp>());
|
|
});
|
|
|
|
test('copyWith updates selected values', () {
|
|
final invitation = TripInvitation(
|
|
id: 'id_1',
|
|
tripId: 'trip_1',
|
|
tripTitle: 'Trip',
|
|
inviterId: 'user_a',
|
|
inviterName: 'Alice',
|
|
inviteeId: 'user_b',
|
|
inviteeEmail: 'bob@example.com',
|
|
createdAt: DateTime(2026, 3, 3),
|
|
);
|
|
|
|
final updated = invitation.copyWith(
|
|
status: 'accepted',
|
|
respondedAt: DateTime(2026, 3, 4),
|
|
);
|
|
|
|
expect(updated.status, 'accepted');
|
|
expect(updated.respondedAt, DateTime(2026, 3, 4));
|
|
expect(updated.tripId, invitation.tripId);
|
|
});
|
|
});
|
|
}
|