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
];