Files
rely/test/features/ai_digest/calendar_event_launcher_test.dart
2026-05-19 19:17:35 +02:00

54 lines
1.9 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:relationship_saver/features/ai_digest/application/calendar_event_launcher.dart';
import 'package:relationship_saver/features/ai_digest/domain/ai_digest_models.dart';
void main() {
test('builds Google Calendar template URL for event suggestions', () {
final Uri? uri = calendarUriForSuggestion(
AiSuggestionDraft(
id: 'ai-1',
personId: 'p-1',
kind: AiSuggestionKind.eventIdea,
title: 'Coffee festival',
details: 'Visit the tasting session.',
suggestedAt: DateTime(2026, 5, 16),
suggestedFor: DateTime.utc(2026, 5, 20, 18),
eventEndsAt: DateTime.utc(2026, 5, 20, 20),
eventLocation: 'Local roaster hall',
eventUrl: 'https://example.com/events/coffee',
sourceUrls: const <String>['https://example.com/events/coffee'],
confidence: 0.8,
status: AiSuggestionStatus.pending,
sourceRunId: 'run-1',
),
);
expect(uri, isNotNull);
expect(uri!.host, 'calendar.google.com');
expect(uri.queryParameters['action'], 'TEMPLATE');
expect(uri.queryParameters['text'], 'Coffee festival');
expect(uri.queryParameters['dates'], '20260520T180000Z/20260520T200000Z');
expect(uri.queryParameters['location'], 'Local roaster hall');
expect(uri.queryParameters['details'], contains('Visit the tasting'));
expect(uri.queryParameters['details'], contains('https://example.com'));
});
test('does not build a calendar URL without event timing', () {
final Uri? uri = calendarUriForSuggestion(
AiSuggestionDraft(
id: 'ai-2',
personId: 'p-1',
kind: AiSuggestionKind.eventIdea,
title: 'Untimed event',
details: '',
suggestedAt: DateTime(2026, 5, 16),
confidence: 0.6,
status: AiSuggestionStatus.pending,
sourceRunId: 'run-1',
),
);
expect(uri, isNull);
});
}