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;
}
String dateTimeStringForAllDayEvent(DateTime startDate, DateTime endDate) {
final timeZoneOffset = DateTime.now().timeZoneOffset.inHours;
final timeZoneOffsetAsString = timeZoneOffset >= 0 ? '+$timeZoneOffset' : '$timeZoneOffset';
final dateStart = formatDate(AppUtils.getCurrentDateLocale(), startDate);
String dateTimeStringForAllDayEvent({
required DateTime startDate,
required DateTime endDate,
required date_format.DateLocale dateLocale,
required String timeZone
}) {
final dateStart = formatDate(dateLocale, startDate);
final endDateToDisplay = endDate.subtract(const Duration(days: 1));
final dateEnd = formatDate(AppUtils.getCurrentDateLocale(), endDateToDisplay);
final dateEnd = formatDate(dateLocale, endDateToDisplay);
if (DateUtils.isSameDay(startDate, endDateToDisplay)) {
return '$dateStart (GMT$timeZoneOffsetAsString)';
return '$dateStart ($timeZone)';
} 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) {
return dateTimeStringForAllDayEvent(startUtcDate!.value, endUtcDate!.value);
return dateTimeStringForAllDayEvent(
startDate: startUtcDate!.value,
endDate: endUtcDate!.value,
dateLocale: dateLocale,
timeZone: timeZone,
);
}
if (localStartDate != null && localEndDate != null) {
final timeStart = formatDateTime(AppUtils.getCurrentDateLocale(), localStartDate!);
final timeStart = formatDateTime(dateLocale, localStartDate!);
final timeEnd = DateUtils.isSameDay(localStartDate, localEndDate)
? formatTime(AppUtils.getCurrentDateLocale(), localEndDate!)
: formatDateTime(AppUtils.getCurrentDateLocale(), localEndDate!);
? formatTime(dateLocale, localEndDate!)
: formatDateTime(dateLocale, localEndDate!);
return '$timeStart - $timeEnd';
} else if (localStartDate != null) {
return formatDateTime(AppUtils.getCurrentDateLocale(), localStartDate!);
return formatDateTime(dateLocale, localStartDate!);
} else if (localEndDate != null) {
return formatDateTime(AppUtils.getCurrentDateLocale(), localEndDate!);
return formatDateTime(dateLocale, localEndDate!);
} else {
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_time_detail_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 {
@@ -77,11 +78,7 @@ class CalendarEventDetailWidget extends StatelessWidget {
onMailtoDelegateAction: onMailtoDelegateAction,
)
),
if (calendarEvent.dateTimeEventAsString.isNotEmpty)
Padding(
padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding),
child: EventTimeWidgetWidget(timeEvent: calendarEvent.dateTimeEventAsString),
),
_buildEventTimeWidget(),
if (calendarEvent.videoConferences.isNotEmpty)
Padding(
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/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/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/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_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/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
class CalendarEventInformationWidget extends StatelessWidget {
@@ -94,11 +95,7 @@ class CalendarEventInformationWidget extends StatelessWidget {
const SizedBox(height: CalendarEventInformationWidgetStyles.space),
if (calendarEvent.title?.isNotEmpty == true)
EventTitleWidget(title: calendarEvent.title!),
if (calendarEvent.dateTimeEventAsString.isNotEmpty)
Padding(
padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding),
child: EventTimeInformationWidget(timeEvent: calendarEvent.dateTimeEventAsString),
),
_buildEventTimeInformationWidget(),
if (calendarEvent.location?.isNotEmpty == true)
Padding(
padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding),
@@ -168,11 +165,7 @@ class CalendarEventInformationWidget extends StatelessWidget {
const SizedBox(height: CalendarEventInformationWidgetStyles.space),
if (calendarEvent.title?.isNotEmpty == true)
EventTitleWidget(title: calendarEvent.title!),
if (calendarEvent.dateTimeEventAsString.isNotEmpty)
Padding(
padding: const EdgeInsets.only(top: CalendarEventInformationWidgetStyles.fieldTopPadding),
child: EventTimeInformationWidget(timeEvent: calendarEvent.dateTimeEventAsString),
),
_buildEventTimeInformationWidget(),
if (calendarEvent.location?.isNotEmpty == true)
Padding(
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();
}
}
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:jmap_dart_client/jmap/core/utc_date.dart';
import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart';
@@ -18,7 +19,10 @@ void main() {
endUtcDate: UTCDate(endDate),
);
final formattedDateString = calendarEvent.dateTimeEventAsString;
final formattedDateString = calendarEvent.getDateTimeEvent(
timeZone: 'GMT+0',
dateLocale: const EnglishDateLocale()
);
expect(formattedDateString, expectedFormattedDateString);
});
@@ -36,7 +40,10 @@ void main() {
endUtcDate: UTCDate(endDate),
);
final formattedDateString = calendarEvent.dateTimeEventAsString;
final formattedDateString = calendarEvent.getDateTimeEvent(
timeZone: 'GMT+0',
dateLocale: const EnglishDateLocale()
);
expect(formattedDateString, expectedFormattedDateString);
});