TF-3088 Fix the ending date of custom date range isn't included in the search
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
|
||||
import 'package:core/presentation/utils/app_toast.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter_date_range_picker/material_date_range_picker_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -64,8 +65,20 @@ mixin DateRangePickerMixin {
|
||||
AppLocalizations.of(context).toastMessageErrorWhenSelectDateIsInValid);
|
||||
return;
|
||||
}
|
||||
|
||||
log('DateRangePickerMixin::_handleSelectDateRangeResult:BEFORE:: StartDate = $startDate | EndDate = $endDate');
|
||||
final tupleDate = validateDateRange(startDate: startDate, endDate: endDate);
|
||||
log('DateRangePickerMixin::_handleSelectDateRangeResult:AFTER:: StartDate = ${tupleDate.startDate} | EndDate = ${tupleDate.endDate}');
|
||||
popBack();
|
||||
onCallbackAction?.call(startDate, endDate);
|
||||
onCallbackAction?.call(tupleDate.startDate, tupleDate.endDate);
|
||||
}
|
||||
|
||||
({DateTime? startDate, DateTime? endDate}) validateDateRange({
|
||||
required DateTime? startDate,
|
||||
required DateTime? endDate
|
||||
}) {
|
||||
final newStartDate = startDate?.copyWith(hour: 0, minute: 0);
|
||||
final newEndDate = endDate?.copyWith(hour: 23, minute: 59);
|
||||
log('DateRangePickerMixin::validateDateRange: newStartDate = $newStartDate | newEndDate = $newEndDate');
|
||||
return (startDate: newStartDate, endDate: newEndDate);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/date_range_picker_mixin.dart';
|
||||
|
||||
class DateRangePickerMixinTest with DateRangePickerMixin {}
|
||||
|
||||
void main() {
|
||||
final dateRangePickerMixinTest = DateRangePickerMixinTest();
|
||||
|
||||
group('DateRangePickerMixin::validateDateRange::', () {
|
||||
test('should set startDate to midnight and endDate to 23:59', () {
|
||||
// Arrange
|
||||
final DateTime startDate = DateTime(2024, 8, 30, 12, 30);
|
||||
final DateTime endDate = DateTime(2024, 8, 31, 15, 45);
|
||||
|
||||
// Act
|
||||
final result = dateRangePickerMixinTest.validateDateRange(startDate: startDate, endDate: endDate);
|
||||
|
||||
// Assert
|
||||
expect(result.startDate, DateTime(2024, 8, 30, 0, 0));
|
||||
expect(result.endDate, DateTime(2024, 8, 31, 23, 59));
|
||||
});
|
||||
|
||||
test('should return null startDate and endDate if null input', () {
|
||||
// Act
|
||||
final result = dateRangePickerMixinTest.validateDateRange(startDate: null, endDate: null);
|
||||
|
||||
// Assert
|
||||
expect(result.startDate, isNull);
|
||||
expect(result.endDate, isNull);
|
||||
});
|
||||
|
||||
test('should set startDate to midnight and keep endDate null if only startDate is provided', () {
|
||||
// Arrange
|
||||
final DateTime startDate = DateTime(2024, 8, 30, 12, 30);
|
||||
|
||||
// Act
|
||||
final result = dateRangePickerMixinTest.validateDateRange(startDate: startDate, endDate: null);
|
||||
|
||||
// Assert
|
||||
expect(result.startDate, DateTime(2024, 8, 30, 0, 0));
|
||||
expect(result.endDate, isNull);
|
||||
});
|
||||
|
||||
test('should set endDate to 23:59 and keep startDate null if only endDate is provided', () {
|
||||
// Arrange
|
||||
final DateTime endDate = DateTime(2024, 8, 31, 15, 45);
|
||||
|
||||
// Act
|
||||
final result = dateRangePickerMixinTest.validateDateRange(startDate: null, endDate: endDate);
|
||||
|
||||
// Assert
|
||||
expect(result.startDate, isNull);
|
||||
expect(result.endDate, DateTime(2024, 8, 31, 23, 59));
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user