TF-2502 Write unit test for all day event
This commit is contained in:
@@ -272,21 +272,53 @@ extension CalendarEventExtension on CalendarEvent {
|
||||
);
|
||||
}
|
||||
|
||||
String get dateTimeEventAsString {
|
||||
bool get isAllDayEvent {
|
||||
if (startUtcDate != null && endUtcDate != null) {
|
||||
final startHour = startUtcDate!.value.hour;
|
||||
final startMinute = startUtcDate!.value.minute;
|
||||
final endHour = endUtcDate!.value.hour;
|
||||
final endMinute = endUtcDate!.value.minute;
|
||||
log('CalendarEventExtension::endDate: $endUtcDate');
|
||||
if (startHour == 0 && startMinute == 0 && endHour == 0 && endMinute == 0 && !DateUtils.isSameDay(localStartDate, localEndDate)) {
|
||||
final timeZoneOffset = DateTime.now().timeZoneOffset.inHours;
|
||||
final timeZoneOffsetAsString = timeZoneOffset >= 0 ? '+$timeZoneOffset' : '$timeZoneOffset';
|
||||
final timeStart = formatDate(AppUtils.getCurrentDateLocale(), startUtcDate!.value);
|
||||
final timeEnd = formatDate(AppUtils.getCurrentDateLocale(), endUtcDate!.value);
|
||||
return '$timeStart - $timeEnd (GMT$timeZoneOffsetAsString)';
|
||||
}
|
||||
final startDateValue = startUtcDate!.value;
|
||||
final endDateValue = endUtcDate!.value;
|
||||
|
||||
final eventDurationInHours = startDateValue.difference(endDateValue).inHours;
|
||||
|
||||
final startHour = startDateValue.hour;
|
||||
final startMinute = startDateValue.minute;
|
||||
final startSecond = startDateValue.second;
|
||||
|
||||
final endHour = endDateValue.hour;
|
||||
final endMinute = endDateValue.minute;
|
||||
final endSecond = endDateValue.second;
|
||||
|
||||
return startHour == 0
|
||||
&& startMinute == 0
|
||||
&& startSecond == 0
|
||||
&& endHour == 0
|
||||
&& endMinute == 0
|
||||
&& endSecond == 0
|
||||
&& eventDurationInHours % 24 == 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
String dateTimeStringForAllDayEvent(DateTime startDate, DateTime endDate) {
|
||||
final timeZoneOffset = DateTime.now().timeZoneOffset.inHours;
|
||||
final timeZoneOffsetAsString = timeZoneOffset >= 0 ? '+$timeZoneOffset' : '$timeZoneOffset';
|
||||
|
||||
final dateStart = formatDate(AppUtils.getCurrentDateLocale(), startDate);
|
||||
|
||||
final endDateToDisplay = endDate.subtract(const Duration(days: 1));
|
||||
final dateEnd = formatDate(AppUtils.getCurrentDateLocale(), endDateToDisplay);
|
||||
|
||||
if (DateUtils.isSameDay(startDate, endDateToDisplay)) {
|
||||
return '$dateStart (GMT$timeZoneOffsetAsString)';
|
||||
} else {
|
||||
return '$dateStart - $dateEnd (GMT$timeZoneOffsetAsString)';
|
||||
}
|
||||
}
|
||||
|
||||
String get dateTimeEventAsString {
|
||||
if (isAllDayEvent) {
|
||||
return dateTimeStringForAllDayEvent(startUtcDate!.value, endUtcDate!.value);
|
||||
}
|
||||
|
||||
if (localStartDate != null && localEndDate != null) {
|
||||
final timeStart = formatDateTime(localStartDate!);
|
||||
final timeEnd = DateUtils.isSameDay(localStartDate, localEndDate)
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart';
|
||||
|
||||
void main() {
|
||||
group('calendar event extension test', () {
|
||||
test('dateTimeEventAsString should return string with format start date - end date (timezone offset) and date formatted as DD, MM dd, YYYY for all-day event for many days', () {
|
||||
const expectedFormattedDateString = 'Sunday, October 10, 2021 - Sunday, October 24, 2021 (GMT+0)';
|
||||
|
||||
final startDate = DateTime(2021, 10, 10, 00, 00, 00, 00, 00);
|
||||
final endDate = DateTime(2021, 10, 25, 00, 00, 00, 00, 00);
|
||||
|
||||
final calendarEvent = CalendarEvent(
|
||||
startDate: startDate,
|
||||
endDate: endDate,
|
||||
startUtcDate: UTCDate(startDate),
|
||||
endUtcDate: UTCDate(endDate),
|
||||
);
|
||||
|
||||
final formattedDateString = calendarEvent.dateTimeEventAsString;
|
||||
|
||||
expect(formattedDateString, expectedFormattedDateString);
|
||||
});
|
||||
|
||||
test('dateTimeEventAsString should return string with format date (timezone offset) and date formatted as DD, MM dd, YYYY for all-day event for one day', () {
|
||||
const expectedFormattedDateString = 'Sunday, October 10, 2021 (GMT+0)';
|
||||
|
||||
final startDate = DateTime(2021, 10, 10, 00, 00, 00, 00, 00);
|
||||
final endDate = DateTime(2021, 10, 11, 00, 00, 00, 00, 00);
|
||||
|
||||
final calendarEvent = CalendarEvent(
|
||||
startDate: startDate,
|
||||
endDate: endDate,
|
||||
startUtcDate: UTCDate(startDate),
|
||||
endUtcDate: UTCDate(endDate),
|
||||
);
|
||||
|
||||
final formattedDateString = calendarEvent.dateTimeEventAsString;
|
||||
|
||||
expect(formattedDateString, expectedFormattedDateString);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user