diff --git a/.gitignore b/.gitignore index 9f604ac0..f312b22f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,4 @@ Build/.phpunit.cache var/ vendor/ -phpunit.coverage.xml -phpunit.report.xml +coverage_result/ diff --git a/Build/UnitTests.xml b/Build/UnitTests.xml deleted file mode 100644 index e4d37172..00000000 --- a/Build/UnitTests.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - ../Tests/Unit/ - - - - - ../Classes/ - - - diff --git a/Build/FunctionalTests.xml b/Build/phpunit.xml.dist similarity index 85% rename from Build/FunctionalTests.xml rename to Build/phpunit.xml.dist index 48bfce61..36e947ad 100644 --- a/Build/FunctionalTests.xml +++ b/Build/phpunit.xml.dist @@ -2,9 +2,12 @@ - + ../Tests/Functional/ + + ../Tests/Unit/ + diff --git a/Classes/Domain/Model/EventDate.php b/Classes/Domain/Model/EventDate.php index 1cb6bc36..e0673647 100644 --- a/Classes/Domain/Model/EventDate.php +++ b/Classes/Domain/Model/EventDate.php @@ -403,10 +403,7 @@ public function isAvailable(): bool if (!$this->isHandleSeats()) { return true; } - if ($this->getSeatsAvailable()) { - return true; - } - return false; + return $this->getSeatsAvailable() > 0; } } diff --git a/Tests/Unit/Domain/Model/EventDateTest.php b/Tests/Unit/Domain/Model/EventDateTest.php index 76e78605..3a95d764 100644 --- a/Tests/Unit/Domain/Model/EventDateTest.php +++ b/Tests/Unit/Domain/Model/EventDateTest.php @@ -117,4 +117,282 @@ public function setLecturerSetsLecturer(): void $this->eventDate->getLecturer() ); } + + #[Test] + public function isBookableReturnsInitialValueForBookable(): void + { + self::assertFalse( + $this->eventDate->isBookable() + ); + } + + #[Test] + public function setBookableSetsBookable(): void + { + $this->eventDate->setBookable(true); + + self::assertTrue( + $this->eventDate->isBookable() + ); + } + + #[Test] + public function isPriceCategorizedReturnsInitialValueForPriceCategorized(): void + { + self::assertFalse( + $this->eventDate->isPriceCategorized() + ); + } + + #[Test] + public function setPriceCategorizedSetsPriceCategorized(): void + { + $this->eventDate->setPriceCategorized(true); + + self::assertTrue( + $this->eventDate->isPriceCategorized() + ); + } + + #[Test] + public function isHandleSeatsReturnsInitialValueForHandleSeats(): void + { + self::assertFalse( + $this->eventDate->isHandleSeats() + ); + } + + #[Test] + public function setHandleSeatsSetsHandleSeats(): void + { + $this->eventDate->setHandleSeats(true); + + self::assertTrue( + $this->eventDate->isHandleSeats() + ); + } + + #[Test] + public function isHandleSeatsInPriceCategoryReturnsInitialValueForHandleSeatsInPriceCategory(): void + { + self::assertFalse( + $this->eventDate->isHandleSeatsInPriceCategory() + ); + } + + #[Test] + public function setHandleSeatsInPriceCategorySetsHandleSeatsInPriceCategory(): void + { + $this->eventDate->setHandleSeatsInPriceCategory(true); + + self::assertTrue( + $this->eventDate->isHandleSeatsInPriceCategory() + ); + } + + #[Test] + public function getSeatsNumberReturnsZeroIfHandleSeatsIsFalse() + { + self::assertSame( + 0, + $this->eventDate->getSeatsNumber() + ); + + $this->eventDate->setSeatsNumber(15); + + self::assertSame( + 0, + $this->eventDate->getSeatsNumber() + ); + } + + #[Test] + public function getSeatsNumberReturnsInitialValueForSeatsNumberIfHandleSeatsIsTrue() + { + $this->eventDate->setHandleSeats(true); + + self::assertSame( + 0, + $this->eventDate->getSeatsNumber() + ); + } + + #[Test] + public function setSeatsNumberSetsSeatsNumber() + { + $this->eventDate->setSeatsNumber(15); + + self::assertSame( + 0, + $this->eventDate->getSeatsNumber() + ); + + $this->eventDate->setHandleSeats(true); + + self::assertSame( + 15, + $this->eventDate->getSeatsNumber() + ); + } + + #[Test] + public function getSeatsTakenReturnsZeroIfHandleSeatsIsFalse() + { + self::assertSame( + 0, + $this->eventDate->getSeatsTaken() + ); + + $this->eventDate->setSeatsTaken(15); + + self::assertSame( + 0, + $this->eventDate->getSeatsTaken() + ); + } + + #[Test] + public function getSeatsTakenReturnsInitialValueForSeatsTakenIfHandleSeatsIsTrue() + { + $this->eventDate->setHandleSeats(true); + + self::assertSame( + 0, + $this->eventDate->getSeatsTaken() + ); + } + + #[Test] + public function setSeatsTakenSetsSeatsTaken() + { + $this->eventDate->setSeatsTaken(15); + + self::assertSame( + 0, + $this->eventDate->getSeatsTaken() + ); + + $this->eventDate->setHandleSeats(true); + + self::assertSame( + 15, + $this->eventDate->getSeatsTaken() + ); + } + + #[Test] + public function getSeatsAvailableReturnsZeroIfHandleSeatsIsFalse() + { + self::assertSame( + 0, + $this->eventDate->getSeatsAvailable() + ); + + $this->eventDate->setSeatsNumber(15); + + self::assertSame( + 0, + $this->eventDate->getSeatsAvailable() + ); + } + + #[Test] + public function getSeatsAvailableReturnsDifferenceOfInitialValueForSeatsNumberAndSeatsTakenIfHandleSeatsIsTrue() + { + $this->eventDate->setHandleSeats(true); + + self::assertSame( + 0, + $this->eventDate->getSeatsAvailable() + ); + } + + #[Test] + public function getSeatsAvailableDifferenceOfValueForSeatsNumberAndSeatsTakenIfHandleSeatsIsTrue() + { + $this->eventDate->setSeatsNumber(30); + $this->eventDate->setSeatsTaken(13); + + self::assertSame( + 0, + $this->eventDate->getSeatsAvailable() + ); + + $this->eventDate->setHandleSeats(true); + + self::assertSame( + 17, + $this->eventDate->getSeatsAvailable() + ); + } + + #[TEST] + public function isAvailableReturnsFalseIfBookableIsFalse() + { + $this->eventDate->setHandleSeats(true); + $this->eventDate->setSeatsNumber(20); + $this->eventDate->setBookable(false); + + self::assertFalse( + $this->eventDate->isAvailable() + ); + + $this->eventDate->setBookable(true); + + self::assertTrue( + $this->eventDate->isAvailable() + ); + } + + #[TEST] + public function isAvailableReturnsTrueIfIsBookableAndHandleSeatsIsFalse() + { + $this->eventDate->setBookable(true); + $this->eventDate->setHandleSeats(false); + self::assertTrue( + $this->eventDate->isAvailable() + ); + + $this->eventDate->setHandleSeats(true); + self::assertFalse( + $this->eventDate->isAvailable() + ); + } + + #[TEST] + public function isAvailableReturnsTrueIfIsBookableAndHandleSeatsIsTrueAndNumberOfSeatsIsGreaterThanZero() + { + $this->eventDate->setBookable(true); + $this->eventDate->setHandleSeats(true); + $this->eventDate->setSeatsNumber(2); + self::assertTrue( + $this->eventDate->isAvailable() + ); + + $this->eventDate->setSeatsTaken(1); + self::assertTrue( + $this->eventDate->isAvailable() + ); + + $this->eventDate->setSeatsTaken(2); + self::assertFalse( + $this->eventDate->isAvailable() + ); + } + + #[TEST] + public function isAvailableReturnsFalseIfIsBookableAndHandleSeatsIsTrueAndNumberOfSeatsIsLowerOrEqualToZero() + { + $this->eventDate->setBookable(true); + $this->eventDate->setHandleSeats(true); + $this->eventDate->setSeatsNumber(0); + self::assertFalse( + $this->eventDate->isAvailable() + ); + + $this->eventDate->setSeatsTaken(1); + self::assertFalse( + $this->eventDate->isAvailable() + ); + } } diff --git a/shell.nix b/shell.nix index 04c06ea0..ee36123b 100644 --- a/shell.nix +++ b/shell.nix @@ -90,7 +90,7 @@ let ]; text = '' project-install - ./vendor/bin/phpunit -c Build/UnitTests.xml + ./vendor/bin/phpunit -c Build/phpunit.xml.dist --testsuite unit --display-warnings --display-deprecations --display-errors ''; }; @@ -102,7 +102,19 @@ let ]; text = '' project-install - ./vendor/bin/phpunit -c Build/FunctionalTests.xml + ./vendor/bin/phpunit -c Build/phpunit.xml.dist --testsuite functional --display-warnings --display-deprecations --display-errors + ''; + }; + + projectTestWithCoverage = pkgs.writeShellApplication { + name = "project-test-with-coverage"; + runtimeInputs = [ + php + projectInstall + ]; + text = '' + project-install + XDEBUG_MODE=coverage ./vendor/bin/phpunit -c Build/phpunit.xml.dist --coverage-html=coverage_result ''; }; @@ -145,6 +157,7 @@ in pkgs.mkShellNoCC { projectPhpstan projectTestUnit projectTestFunctional + projectTestWithCoverage projectTestAcceptance ];