33import static org .junit .jupiter .api .Assertions .assertEquals ;
44
55import java .text .SimpleDateFormat ;
6+ import java .time .LocalDate ;
7+ import java .time .LocalDateTime ;
68import java .util .Date ;
79import java .util .Set ;
810
@@ -18,9 +20,9 @@ class DateMapperTest extends AbstractUnitTest {
1820 private DatePatchMapper victim ;
1921
2022 @ Test
21- void getSupportedTypes_containsDateClass () {
23+ void getSupportedTypes_containsDateClasses () {
2224 // PREPARE
23- Set <Class <?>> expected = Set .of (Date .class );
25+ Set <Class <?>> expected = Set .of (Date .class , LocalDate . class , LocalDateTime . class );
2426
2527 // EXECUTE
2628 Set <Class <?>> actual = victim .getSupportedTypes ();
@@ -109,4 +111,62 @@ void map_randomString_throwsIllegalArgumentException() {
109111 // EXECUTE & CHECK
110112 assertEquals (DataPatchFailureCause .INVALID_VALUE_TYPE , victim .map ("notADate" , Date .class ).getDataPatchFailureCause ());
111113 }
114+
115+ // --- LocalDate ---
116+
117+ @ Test
118+ void map_localDate_validDate () {
119+ // EXECUTE & CHECK
120+ assertEquals (LocalDate .of (2024 , 6 , 15 ), victim .map ("2024-06-15" , LocalDate .class ).getData ());
121+ }
122+
123+ @ Test
124+ void map_localDate_fromDateTimeString_returnsDatePart () {
125+ // EXECUTE & CHECK
126+ assertEquals (LocalDate .of (2024 , 6 , 15 ), victim .map ("2024-06-15T14:30:00" , LocalDate .class ).getData ());
127+ }
128+
129+ @ Test
130+ void map_localDate_invalidFormat () {
131+ // EXECUTE & CHECK
132+ assertEquals (DataPatchFailureCause .INVALID_VALUE_TYPE , victim .map ("15/06/2024" , LocalDate .class ).getDataPatchFailureCause ());
133+ }
134+
135+ @ Test
136+ void map_localDate_invalidDay () {
137+ // EXECUTE & CHECK
138+ assertEquals (DataPatchFailureCause .INVALID_VALUE_TYPE , victim .map ("2024-02-30" , LocalDate .class ).getDataPatchFailureCause ());
139+ }
140+
141+ // --- LocalDateTime ---
142+
143+ @ Test
144+ void map_localDateTime_validDateTime () {
145+ // EXECUTE & CHECK
146+ assertEquals (LocalDateTime .of (2024 , 6 , 15 , 14 , 30 , 0 ), victim .map ("2024-06-15T14:30:00" , LocalDateTime .class ).getData ());
147+ }
148+
149+ @ Test
150+ void map_localDateTime_validDateTimeWithoutSeconds () {
151+ // EXECUTE & CHECK
152+ assertEquals (LocalDateTime .of (2024 , 6 , 15 , 14 , 30 , 0 ), victim .map ("2024-06-15T14:30" , LocalDateTime .class ).getData ());
153+ }
154+
155+ @ Test
156+ void map_localDateTime_fromDateOnlyString_returnsMidnight () {
157+ // EXECUTE & CHECK
158+ assertEquals (LocalDateTime .of (2024 , 6 , 15 , 0 , 0 , 0 ), victim .map ("2024-06-15" , LocalDateTime .class ).getData ());
159+ }
160+
161+ @ Test
162+ void map_localDateTime_invalidFormat () {
163+ // EXECUTE & CHECK
164+ assertEquals (DataPatchFailureCause .INVALID_VALUE_TYPE , victim .map ("15/06/2024" , LocalDateTime .class ).getDataPatchFailureCause ());
165+ }
166+
167+ @ Test
168+ void map_localDateTime_invalidDay () {
169+ // EXECUTE & CHECK
170+ assertEquals (DataPatchFailureCause .INVALID_VALUE_TYPE , victim .map ("2024-02-30T10:00:00" , LocalDateTime .class ).getDataPatchFailureCause ());
171+ }
112172}
0 commit comments