diff --git a/tests/jsonapi/ConsultationHelper.php b/tests/jsonapi/ConsultationHelper.php index 0fdd40b1b63d7db81801866ae658568b7777f1a4..10d505022214442ae0150a31bf57aa40028e4e0d 100644 --- a/tests/jsonapi/ConsultationHelper.php +++ b/tests/jsonapi/ConsultationHelper.php @@ -41,17 +41,32 @@ trait ConsultationHelper return User::find($credentials['id']); } - protected function createBlockWithSlotsForRange(Range $range, array $additional_data = []): ConsultationBlock + protected function createBlockWithSlotsForRange(Range $range, bool $lock_blocks = false): ConsultationBlock { - $hour = date('H'); - $begin = strtotime("today {$hour}:00:00"); - $end = strtotime('+2 hours', $begin); + // Generate start and end time. Assures that the day is not a holiday. + $now = time(); + do { + $begin = strtotime('next monday 8:00:00', $now); + $end = strtotime('+2 hours', $begin); + + $now = strtotime('+1 week', $now); + + $temp = holiday($begin); + } while (is_array($temp) && $temp['col'] === 3); + + // Lock blocks? + $additional_data = []; + if ($lock_blocks) { + $additional_data['lock_time'] = ceil(($begin - time()) / 3600); + } + + // Generate blocks $blocks = ConsultationBlock::generateBlocks( $range, $begin, $end, - date('w'), + date('w', $begin), 1 ); $blocks = iterator_to_array($blocks); diff --git a/tests/jsonapi/ConsultationsBookingCreateBySlotIndexTest.php b/tests/jsonapi/ConsultationsBookingCreateBySlotIndexTest.php index 56ef1838ca79f04e53303bca6667003096fcda59..590343ddd5904af4604ac848a5d8b6b13fa24c90 100644 --- a/tests/jsonapi/ConsultationsBookingCreateBySlotIndexTest.php +++ b/tests/jsonapi/ConsultationsBookingCreateBySlotIndexTest.php @@ -27,12 +27,12 @@ class ConsultationsBookingCreateBySlotIndexTest extends Codeception\Test\Unit ); } - public function testAutorMayCreateNotCreateBookingDueToLock(): void + public function testAutorMayNotCreateBookingDueToLock(): void { $credentials = $this->tester->getCredentialsForTestDozent(); $range = User::find($credentials['id']); - $block = $this->createBlockWithSlotsForRange($range, ['lock_time' => 2]); + $block = $this->createBlockWithSlotsForRange($range, true); $slot = $this->getSlotFromBlock($block); $response = $this->createBooking( diff --git a/tests/jsonapi/ConsultationsBookingCreateTest.php b/tests/jsonapi/ConsultationsBookingCreateTest.php index 54ad2b4865bd6985dd3647a108959436deafa71e..d0af9dad82341e45d709c11d691f4a23626dad9a 100644 --- a/tests/jsonapi/ConsultationsBookingCreateTest.php +++ b/tests/jsonapi/ConsultationsBookingCreateTest.php @@ -28,12 +28,12 @@ class ConsultationsBookingCreateTest extends Codeception\Test\Unit ); } - public function testAutorMayCreateNotCreateBookingDueToLock(): void + public function testAutorMayNotCreateBookingDueToLock(): void { $credentials = $this->tester->getCredentialsForTestDozent(); $range = User::find($credentials['id']); - $block = $this->createBlockWithSlotsForRange($range, ['lock_time' => 2]); + $block = $this->createBlockWithSlotsForRange($range, true); $slot = $this->getSlotFromBlock($block); $response = $this->createBooking(