Files
alda-2025-appointmentplanner/assignment/src/test/java/appointmentplanner/LocalDayPlanTest.java
2025-10-23 21:20:12 +02:00

62 lines
2.1 KiB
Java

package appointmentplanner;
import static org.assertj.core.api.Assertions.assertThat;
import java.time.Duration;
import java.time.Instant;
import java.util.List;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import appointmentplanner.api.LocalDay;
import appointmentplanner.api.LocalDayPlan;
import appointmentplanner.api.TimeSlot;
public class LocalDayPlanTest {
private static Stream<Arguments> provideLocalDPDataset() {
return Stream.of(
Arguments.of(new LocalDay(), Instant.parse("2023-01-01T08:30:00Z"), Instant.parse("2023-01-01T17:30:00Z")),
Arguments.of(new LocalDay(), Instant.parse("2023-06-15T09:00:00Z"), Instant.parse("2023-06-15T18:00:00Z")),
Arguments.of(new LocalDay(), Instant.parse("2024-12-31T07:00:00Z"), Instant.parse("2024-12-31T16:00:00Z")));
}
@ParameterizedTest
@MethodSource("provideLocalDPDataset")
void ldpInit_shouldBeSuccessful(LocalDay day, Instant start, Instant end) {
LocalDayPlan plan = new LocalDayPlanImpl(day, start, end);
assertThat(plan).isNotNull();
}
@ParameterizedTest
@MethodSource("provideLocalDPDataset")
void ldpGetters_shouldReturnSetValues(LocalDay day, Instant start, Instant end) {
LocalDayPlan plan = new LocalDayPlanImpl(day, start, end);
assertThat(plan.day()).isEqualTo(day);
assertThat(plan.startOfDay()).isEqualTo(start);
assertThat(plan.endOfDay()).isEqualTo(end);
}
@ParameterizedTest
@MethodSource("provideLocalDPDataset")
void ldpToString_shouldReturnStringContainingLocalDateAndTimeZone(LocalDay day, Instant start, Instant end) {
LocalDayPlan plan = new LocalDayPlanImpl(day, start, end);
assertThat(plan.toString()).contains(day.zone().toString(), day.date().toString());
}
@Test
void ldpFindMatchingFreeSlotsOnEmptyDay() {
LocalDayPlan plan = TestData.emptyWorkingDay();
List<TimeSlot> freeSlots = plan.findGapsFitting(Duration.ofHours(2));
assertThat(freeSlots.size()).isEqualTo(1);
}
}