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/presentation/utils/app_toast.dart';
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter_date_range_picker/material_date_range_picker_dialog.dart';
|
import 'package:flutter_date_range_picker/material_date_range_picker_dialog.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -64,8 +65,20 @@ mixin DateRangePickerMixin {
|
|||||||
AppLocalizations.of(context).toastMessageErrorWhenSelectDateIsInValid);
|
AppLocalizations.of(context).toastMessageErrorWhenSelectDateIsInValid);
|
||||||
return;
|
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();
|
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