62 lines
2.1 KiB
Java
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);
|
|
}
|
|
}
|