Skip to content

Commit 8f37c18

Browse files
fix android tests
1 parent d529e50 commit 8f37c18

8 files changed

Lines changed: 150 additions & 17 deletions

File tree

android/src/test/kotlin/sncf/connect/tech/eventide/EventTests.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,10 @@ class EventTests {
704704
mockWritableCalendar()
705705

706706
every { contentResolver.update(eventContentUri, any(), any(), any()) } returns 1
707+
708+
mockRetrieveEvents(contentResolver, eventContentUri)
709+
mockRetrieveAttendees(contentResolver, attendeesContentUri)
710+
mockRetrieveReminders(contentResolver, remindersContentUri)
707711

708712
var result: Result<Event>? = null
709713
val latch = CountDownLatch(1)
@@ -739,6 +743,10 @@ class EventTests {
739743
every { contentResolver.update(eventContentUri, any(), any(), any()) } returns 1
740744
every { contentResolver.delete(remindersContentUri, any(), any()) } returns 1
741745
every { contentResolver.insert(remindersContentUri, any()) } returns mockk()
746+
747+
mockRetrieveEvents(contentResolver, eventContentUri)
748+
mockRetrieveAttendees(contentResolver, attendeesContentUri)
749+
mockRetrieveReminders(contentResolver, remindersContentUri)
742750

743751
var result: Result<Event>? = null
744752
val latch = CountDownLatch(1)

android/src/test/kotlin/sncf/connect/tech/eventide/Mocks.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,22 @@ class Mocks {
1919
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events._ID) } returns 0
2020
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.TITLE) } returns 1
2121
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.DESCRIPTION) } returns 2
22-
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.CALENDAR_ID) } returns 3
22+
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.EVENT_LOCATION) } returns 3
2323
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.DTSTART) } returns 4
2424
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.DTEND) } returns 5
25-
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.ALL_DAY) } returns 6
25+
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.EVENT_TIMEZONE) } returns 6
26+
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.CALENDAR_ID) } returns 7
27+
every { eventCursor.getColumnIndexOrThrow(CalendarContract.Events.ALL_DAY) } returns 8
2628

2729
// Mock values for each column
2830
every { eventCursor.getString(0) } returns "eventId"
2931
every { eventCursor.getString(1) } returns "eventTitle"
3032
every { eventCursor.getString(2) } returns "eventDescription"
31-
every { eventCursor.getString(3) } returns "calendarId"
33+
every { eventCursor.getString(3) } returns "location"
34+
every { eventCursor.getString(7) } returns "calendarId"
3235
every { eventCursor.getLong(4) } returns 1L
3336
every { eventCursor.getLong(5) } returns 1L
34-
every { eventCursor.getInt(6) } returns 0
37+
every { eventCursor.getInt(8) } returns 0
3538
}
3639

3740
fun mockRetrieveAttendees(contentResolver: ContentResolver, attendeesContentUri: Uri) {

example/more-complex/full-permission/lib/calendar/logic/calendar_cubit.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,8 @@ final class CalendarCubit extends Cubit<CalendarState> {
205205
title: title,
206206
description: description,
207207
isAllDay: isAllDay,
208-
startDate: startDate.millisecondsSinceEpoch,
209-
endDate: endDate.millisecondsSinceEpoch,
208+
startDate: startDate,
209+
endDate: endDate,
210210
);
211211

212212
final updatedCalendars = Map<ETCalendar, List<ETEvent>>.from(

example/more-complex/full-permission/lib/event_details/logic/event_details_cubit.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ final class EventDetailsCubit extends Cubit<Value<ETEvent>> {
6262
title: title,
6363
description: description,
6464
isAllDay: isAllDay,
65-
startDate: startDate.millisecondsSinceEpoch,
66-
endDate: endDate.millisecondsSinceEpoch,
65+
startDate: startDate,
66+
endDate: endDate,
6767
);
6868
}).forEach(emit);
6969
}

lib/src/eventide.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -303,26 +303,26 @@ class Eventide extends EventidePlatform {
303303
ETEvent event, {
304304
String? calendarId,
305305
String? title,
306-
int? startDate,
307-
int? endDate,
306+
DateTime? startDate,
307+
DateTime? endDate,
308308
bool? isAllDay,
309309
String? description,
310310
String? url,
311311
String? location,
312-
List<int>? reminders,
312+
Iterable<Duration>? reminders,
313313
}) async {
314314
try {
315315
final updatedEvent = await _calendarApi.updateEvent(
316316
eventId: event.id,
317317
calendarId: calendarId ?? event.calendarId,
318318
title: title ?? event.title,
319-
startDate: startDate ?? event.startDate.toUtc().millisecondsSinceEpoch,
320-
endDate: endDate ?? event.endDate.toUtc().millisecondsSinceEpoch,
319+
startDate: (startDate ?? event.startDate).toUtc().millisecondsSinceEpoch,
320+
endDate: (endDate ?? event.endDate).toUtc().millisecondsSinceEpoch,
321321
isAllDay: isAllDay ?? event.isAllDay,
322322
description: description ?? event.description,
323323
url: url ?? event.url,
324324
location: location ?? event.location,
325-
reminders: reminders ?? event.reminders.map((e) => e.toNativeDuration()).toList(),
325+
reminders: (reminders ?? event.reminders).map((e) => e.toNativeDuration()).toList(),
326326
);
327327
return updatedEvent.toETEvent();
328328
} on PlatformException catch (e) {

lib/src/eventide_platform_interface.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ abstract class EventidePlatform extends PlatformInterface {
7171
ETEvent event, {
7272
String? calendarId,
7373
String? title,
74-
int? startDate,
75-
int? endDate,
74+
DateTime? startDate,
75+
DateTime? endDate,
7676
bool? isAllDay,
7777
String? description,
7878
String? url,
7979
String? location,
80-
List<int>? reminders,
80+
Iterable<Duration>? reminders,
8181
});
8282

8383
Future<void> deleteEvent({required String eventId});

test/calendar_test.dart

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,70 @@ void main() {
114114
verify(() => mockCalendarApi.retrieveCalendars(onlyWritableCalendars: true, account: null)).called(1);
115115
});
116116

117+
test('updateCalendar calls the API and returns an ETCalendar', () async {
118+
// Given
119+
final calendar = Calendar(
120+
id: '987654321',
121+
title: 'Updated Calendar',
122+
color: Colors.green.toValue(),
123+
isWritable: true,
124+
account: Account(id: "1", name: 'Test Account', type: 'Test Type'),
125+
);
126+
when(
127+
() => mockCalendarApi.updateCalendar(
128+
calendarId: any(named: 'calendarId'),
129+
title: any(named: 'title'),
130+
color: any(named: 'color'),
131+
),
132+
).thenAnswer((_) async => calendar);
133+
134+
// When
135+
await eventide.updateCalendar(calendar.toETCalendar(), title: 'Updated Calendar', color: Colors.green);
136+
137+
// Then
138+
verify(
139+
() => mockCalendarApi.updateCalendar(
140+
calendarId: '987654321',
141+
title: 'Updated Calendar',
142+
color: Colors.green.toValue(),
143+
),
144+
).called(1);
145+
});
146+
147+
test('updateCalendar throws an exception when API fails', () async {
148+
// Given
149+
when(
150+
() => mockCalendarApi.updateCalendar(
151+
calendarId: any(named: 'calendarId'),
152+
title: any(named: 'title'),
153+
color: any(named: 'color'),
154+
),
155+
).thenThrow(ETGenericException(message: 'API Error'));
156+
157+
// When
158+
Future<void> call() => eventide.updateCalendar(
159+
ETCalendar(
160+
id: '987654321',
161+
title: 'Updated Calendar',
162+
color: Colors.green,
163+
isWritable: true,
164+
account: ETAccount(id: "1", name: 'Test Account', type: 'Test Type'),
165+
),
166+
title: 'Updated Calendar',
167+
color: Colors.green,
168+
);
169+
170+
// Then
171+
expect(call, throwsException);
172+
verify(
173+
() => mockCalendarApi.updateCalendar(
174+
calendarId: '987654321',
175+
title: 'Updated Calendar',
176+
color: Colors.green.toValue(),
177+
),
178+
).called(1);
179+
});
180+
117181
test('deleteCalendar calls the API', () async {
118182
// Given
119183
when(() => mockCalendarApi.deleteCalendar(calendarId: any(named: 'calendarId'))).thenAnswer((_) async => {});

test/event_test.dart

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,64 @@ void main() {
786786
expect(etEvents.length, 1);
787787
expect(etEvents.first.id, '1');
788788
});
789+
790+
test('updateEvent with new start and end dates should update the event correctly', () async {
791+
// Given
792+
final originalEvent = Event(
793+
id: '1',
794+
title: 'Test Event',
795+
isAllDay: false,
796+
startDate: DateTime.now().millisecondsSinceEpoch,
797+
endDate: DateTime.now().add(Duration(days: 1)).millisecondsSinceEpoch,
798+
calendarId: '19',
799+
description: 'Test Description',
800+
url: 'http://test.com',
801+
reminders: [10, 20],
802+
attendees: [],
803+
);
804+
805+
final updatedStartDate = DateTime.now().add(Duration(days: 2));
806+
final updatedEndDate = DateTime.now().add(Duration(days: 3));
807+
808+
when(
809+
() => mockCalendarApi.updateEvent(
810+
eventId: any(named: 'eventId'),
811+
title: any(named: 'title'),
812+
isAllDay: any(named: 'isAllDay'),
813+
startDate: any(named: 'startDate'),
814+
endDate: any(named: 'endDate'),
815+
calendarId: any(named: 'calendarId'),
816+
description: any(named: 'description'),
817+
url: any(named: 'url'),
818+
location: any(named: 'location'),
819+
reminders: any(named: 'reminders'),
820+
),
821+
).thenAnswer((_) async => originalEvent);
822+
823+
// When
824+
await eventide.updateEvent(
825+
originalEvent.toETEvent(),
826+
title: 'Updated test Event',
827+
startDate: updatedStartDate,
828+
endDate: updatedEndDate,
829+
);
830+
831+
// Then
832+
verify(
833+
() => mockCalendarApi.updateEvent(
834+
eventId: '1',
835+
title: 'Updated test Event',
836+
isAllDay: originalEvent.isAllDay,
837+
startDate: updatedStartDate.millisecondsSinceEpoch,
838+
endDate: updatedEndDate.millisecondsSinceEpoch,
839+
calendarId: '19',
840+
description: originalEvent.description,
841+
url: originalEvent.url,
842+
location: originalEvent.location,
843+
reminders: originalEvent.reminders,
844+
),
845+
).called(1);
846+
});
789847
});
790848

791849
group('ETEventCopy tests', () {

0 commit comments

Comments
 (0)