feat: Implement trip invitation functionality and notification handling
- 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.
This commit is contained in:
49
test/models/trip_invitation_test.dart
Normal file
49
test/models/trip_invitation_test.dart
Normal file
@@ -0,0 +1,49 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user