54 lines
1.9 KiB
Dart
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);
|
|
});
|
|
}
|