TF-4146 Should handle time for email view

This commit is contained in:
dab246
2025-11-13 00:21:19 +07:00
committed by Dat H. Pham
parent ee23058514
commit 620d155dc3
2 changed files with 87 additions and 2 deletions
@@ -51,9 +51,9 @@ extension DateTimeNullableExtension on DateTime? {
String toPatternForEmailView() {
if (this?.isThisYear() == true) {
return 'dd MMM, HH:mm a';
return 'dd MMM, hh:mm a';
} else {
return 'dd MMM yyyy, HH:mm a';
return 'dd MMM yyyy, hh:mm a';
}
}
@@ -0,0 +1,85 @@
import 'package:core/domain/extensions/datetime_extension.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:intl/intl.dart';
void main() {
group('DateTimeExtension → toPatternForEmailView', () {
test('should return pattern without year when date is in current year', () {
// Arrange
final now = DateTime.now();
final date = DateTime(now.year, 5, 10, 17, 30);
// Act
final pattern = date.toPatternForEmailView();
final formatted = DateFormat(pattern, 'en_US').format(date);
// Assert
expect(pattern, 'dd MMM, hh:mm a');
expect(
formatted.contains('${date.year}'),
isFalse,
reason: 'Should not include year when in the current year',
);
});
test('should return pattern with year when date is not in current year',
() {
// Arrange
final now = DateTime.now();
final date = DateTime(now.year - 1, 12, 25, 8, 45);
// Act
final pattern = date.toPatternForEmailView();
final formatted = DateFormat(pattern, 'en_US').format(date);
// Assert
expect(pattern, 'dd MMM yyyy, hh:mm a');
expect(
formatted.contains('${date.year}'),
isTrue,
reason: 'Should include year when not in current year',
);
});
test('should return pattern with year when date is null', () {
// Arrange
DateTime? date;
// Act & Assert
expect(
date.toPatternForEmailView(),
'dd MMM yyyy, hh:mm a',
reason: 'Null date should return default pattern with year',
);
});
test('should correctly display 12-hour format with AM/PM (no 24h time)',
() {
// Arrange
final now = DateTime.now();
final date = DateTime(now.year, 11, 13, 17, 0); // 17:00 = 5:00 PM
// Act
final pattern = date.toPatternForEmailView();
final formatted = DateFormat(pattern, 'en_US').format(date);
// Assert
expect(pattern, 'dd MMM, hh:mm a');
expect(
formatted.contains('17:'),
isFalse,
reason: 'Should not show 24-hour format like 17:00',
);
expect(
formatted.toLowerCase().contains('pm'),
isTrue,
reason: 'Should contain AM/PM indicator',
);
expect(
formatted.contains('05:'),
isTrue,
reason: 'Should display 12-hour format (05:00 PM)',
);
});
});
}