Fix unit test calendar_event_extension_test file to avoid build failed

This commit is contained in:
dab246
2024-03-11 12:35:10 +07:00
committed by Dat H. Pham
parent 7dbee0b747
commit 5b519aefe9
5 changed files with 76 additions and 34 deletions
@@ -298,37 +298,46 @@ extension CalendarEventExtension on CalendarEvent {
return false; return false;
} }
String dateTimeStringForAllDayEvent(DateTime startDate, DateTime endDate) { String dateTimeStringForAllDayEvent({
final timeZoneOffset = DateTime.now().timeZoneOffset.inHours; required DateTime startDate,
final timeZoneOffsetAsString = timeZoneOffset >= 0 ? '+$timeZoneOffset' : '$timeZoneOffset'; required DateTime endDate,
required date_format.DateLocale dateLocale,
final dateStart = formatDate(AppUtils.getCurrentDateLocale(), startDate); required String timeZone
}) {
final dateStart = formatDate(dateLocale, startDate);
final endDateToDisplay = endDate.subtract(const Duration(days: 1)); final endDateToDisplay = endDate.subtract(const Duration(days: 1));
final dateEnd = formatDate(AppUtils.getCurrentDateLocale(), endDateToDisplay); final dateEnd = formatDate(dateLocale, endDateToDisplay);
if (DateUtils.isSameDay(startDate, endDateToDisplay)) { if (DateUtils.isSameDay(startDate, endDateToDisplay)) {
return '$dateStart (GMT$timeZoneOffsetAsString)'; return '$dateStart ($timeZone)';
} else { } else {
return '$dateStart - $dateEnd (GMT$timeZoneOffsetAsString)'; return '$dateStart - $dateEnd ($timeZone)';
} }
} }
String get dateTimeEventAsString { String getDateTimeEvent({
required date_format.DateLocale dateLocale,
required String timeZone
}) {
if (isAllDayEvent) { if (isAllDayEvent) {
return dateTimeStringForAllDayEvent(startUtcDate!.value, endUtcDate!.value); return dateTimeStringForAllDayEvent(
startDate: startUtcDate!.value,
endDate: endUtcDate!.value,
dateLocale: dateLocale,
timeZone: timeZone,
);
} }
if (localStartDate != null && localEndDate != null) { if (localStartDate != null && localEndDate != null) {
final timeStart = formatDateTime(AppUtils.getCurrentDateLocale(), localStartDate!); final timeStart = formatDateTime(dateLocale, localStartDate!);
final timeEnd = DateUtils.isSameDay(localStartDate, localEndDate) final timeEnd = DateUtils.isSameDay(localStartDate, localEndDate)
? formatTime(AppUtils.getCurrentDateLocale(), localEndDate!) ? formatTime(dateLocale, localEndDate!)
: formatDateTime(AppUtils.getCurrentDateLocale(), localEndDate!); : formatDateTime(dateLocale, localEndDate!);
return '$timeStart - $timeEnd'; return '$timeStart - $timeEnd';
} else if (localStartDate != null) { } else if (localStartDate != null) {
return formatDateTime(AppUtils.getCurrentDateLocale(), localStartDate!); return formatDateTime(dateLocale, localStartDate!);
} else if (localEndDate != null) { } else if (localEndDate != null) {
return formatDateTime(AppUtils.getCurrentDateLocale(), localEndDate!); return formatDateTime(dateLocale, localEndDate!);
} else { } else {
return ''; return '';
} }
@@ -13,6 +13,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_detail_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_detail_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_time_detail_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_time_detail_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_title_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_title_widget.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
class CalendarEventDetailWidget extends StatelessWidget { class CalendarEventDetailWidget extends StatelessWidget {
@@ -77,11 +78,7 @@ class CalendarEventDetailWidget extends StatelessWidget {
onMailtoDelegateAction: onMailtoDelegateAction, onMailtoDelegateAction: onMailtoDelegateAction,
) )
), ),
if (calendarEvent.dateTimeEventAsString.isNotEmpty) _buildEventTimeWidget(),
Padding(
padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding),
child: EventTimeWidgetWidget(timeEvent: calendarEvent.dateTimeEventAsString),
),
if (calendarEvent.videoConferences.isNotEmpty) if (calendarEvent.videoConferences.isNotEmpty)
Padding( Padding(
padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding), padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding),
@@ -110,4 +107,19 @@ class CalendarEventDetailWidget extends StatelessWidget {
), ),
); );
} }
Widget _buildEventTimeWidget() {
final dateTimeEvent = calendarEvent.getDateTimeEvent(
dateLocale: AppUtils.getCurrentDateLocale(),
timeZone: AppUtils.getTimeZone()
);
if (dateTimeEvent.isNotEmpty) {
return Padding(
padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding),
child: EventTimeWidgetWidget(timeEvent: dateTimeEvent),
);
} else {
return const SizedBox.shrink();
}
}
} }
@@ -7,14 +7,15 @@ import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart';
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart'; import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart'; import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart';
import 'package:tmail_ui_user/features/email/presentation/styles/calendar_event_information_widget_styles.dart'; import 'package:tmail_ui_user/features/email/presentation/styles/calendar_event_information_widget_styles.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_date_icon_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_action_button_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_action_button_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_attendee_information_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_attendee_information_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_date_icon_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_detail_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_detail_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_information_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_information_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_time_information_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_time_information_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_title_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_title_widget.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
class CalendarEventInformationWidget extends StatelessWidget { class CalendarEventInformationWidget extends StatelessWidget {
@@ -94,11 +95,7 @@ class CalendarEventInformationWidget extends StatelessWidget {
const SizedBox(height: CalendarEventInformationWidgetStyles.space), const SizedBox(height: CalendarEventInformationWidgetStyles.space),
if (calendarEvent.title?.isNotEmpty == true) if (calendarEvent.title?.isNotEmpty == true)
EventTitleWidget(title: calendarEvent.title!), EventTitleWidget(title: calendarEvent.title!),
if (calendarEvent.dateTimeEventAsString.isNotEmpty) _buildEventTimeInformationWidget(),
Padding(
padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding),
child: EventTimeInformationWidget(timeEvent: calendarEvent.dateTimeEventAsString),
),
if (calendarEvent.location?.isNotEmpty == true) if (calendarEvent.location?.isNotEmpty == true)
Padding( Padding(
padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding), padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding),
@@ -168,11 +165,7 @@ class CalendarEventInformationWidget extends StatelessWidget {
const SizedBox(height: CalendarEventInformationWidgetStyles.space), const SizedBox(height: CalendarEventInformationWidgetStyles.space),
if (calendarEvent.title?.isNotEmpty == true) if (calendarEvent.title?.isNotEmpty == true)
EventTitleWidget(title: calendarEvent.title!), EventTitleWidget(title: calendarEvent.title!),
if (calendarEvent.dateTimeEventAsString.isNotEmpty) _buildEventTimeInformationWidget(),
Padding(
padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding),
child: EventTimeInformationWidget(timeEvent: calendarEvent.dateTimeEventAsString),
),
if (calendarEvent.location?.isNotEmpty == true) if (calendarEvent.location?.isNotEmpty == true)
Padding( Padding(
padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding), padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding),
@@ -202,4 +195,19 @@ class CalendarEventInformationWidget extends StatelessWidget {
), ),
); );
} }
Widget _buildEventTimeInformationWidget() {
final dateTimeEvent = calendarEvent.getDateTimeEvent(
dateLocale: AppUtils.getCurrentDateLocale(),
timeZone: AppUtils.getTimeZone()
);
if (dateTimeEvent.isNotEmpty) {
return Padding(
padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding),
child: EventTimeInformationWidget(timeEvent: dateTimeEvent),
);
} else {
return const SizedBox.shrink();
}
}
} }
+6
View File
@@ -68,4 +68,10 @@ class AppUtils {
return const date_format.EnglishDateLocale(); return const date_format.EnglishDateLocale();
} }
} }
static String getTimeZone() {
final timeZoneOffset = DateTime.now().timeZoneOffset.inHours;
final timeZoneOffsetAsString = timeZoneOffset >= 0 ? '+$timeZoneOffset' : '$timeZoneOffset';
return 'GMT$timeZoneOffsetAsString';
}
} }
@@ -1,3 +1,4 @@
import 'package:date_format/date_format.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:jmap_dart_client/jmap/core/utc_date.dart'; import 'package:jmap_dart_client/jmap/core/utc_date.dart';
import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart'; import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart';
@@ -18,7 +19,10 @@ void main() {
endUtcDate: UTCDate(endDate), endUtcDate: UTCDate(endDate),
); );
final formattedDateString = calendarEvent.dateTimeEventAsString; final formattedDateString = calendarEvent.getDateTimeEvent(
timeZone: 'GMT+0',
dateLocale: const EnglishDateLocale()
);
expect(formattedDateString, expectedFormattedDateString); expect(formattedDateString, expectedFormattedDateString);
}); });
@@ -36,7 +40,10 @@ void main() {
endUtcDate: UTCDate(endDate), endUtcDate: UTCDate(endDate),
); );
final formattedDateString = calendarEvent.dateTimeEventAsString; final formattedDateString = calendarEvent.getDateTimeEvent(
timeZone: 'GMT+0',
dateLocale: const EnglishDateLocale()
);
expect(formattedDateString, expectedFormattedDateString); expect(formattedDateString, expectedFormattedDateString);
}); });