From e563816cb38b9806aa8aae2c0e72074e629cd49b Mon Sep 17 00:00:00 2001 From: myrmidex Date: Sat, 27 Jun 2026 12:33:30 +0200 Subject: [PATCH] 61 - Remove unused distribution_mode field from Scenario --- migrations/Version20260627065959.php | 29 ++++++++++ src/Entity/Scenario.php | 16 ------ src/Enum/DistributionMode.php | 9 ---- tests/Entity/ScenarioPersistenceTest.php | 53 ------------------- tests/Enum/RemainingEnumsTest.php | 4 -- .../Service/Allocation/AllocateIncomeTest.php | 6 +-- tests/Service/Allocation/ResultTest.php | 4 +- 7 files changed, 32 insertions(+), 89 deletions(-) create mode 100644 migrations/Version20260627065959.php delete mode 100644 src/Enum/DistributionMode.php diff --git a/migrations/Version20260627065959.php b/migrations/Version20260627065959.php new file mode 100644 index 0000000..5ee0f52 --- /dev/null +++ b/migrations/Version20260627065959.php @@ -0,0 +1,29 @@ +addSql('ALTER TABLE scenario DROP distribution_mode'); + } + + public function down(Schema $schema): void + { + // Assumes an empty table (the column was always empty/unused); the + // NOT NULL re-add would fail on any pre-existing populated rows. + $this->addSql('ALTER TABLE scenario ADD distribution_mode VARCHAR(255) NOT NULL'); + } +} diff --git a/src/Entity/Scenario.php b/src/Entity/Scenario.php index adc33bc..cb7d2d0 100644 --- a/src/Entity/Scenario.php +++ b/src/Entity/Scenario.php @@ -6,7 +6,6 @@ use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Post; -use App\Enum\DistributionMode; use App\Repository\ScenarioRepository; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; @@ -33,9 +32,6 @@ class Scenario #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] private User $owner; - #[ORM\Column(enumType: DistributionMode::class)] - private DistributionMode $distributionMode = DistributionMode::EVEN; - #[ORM\Column(length: 255)] #[Assert\NotBlank] private string $name; @@ -58,11 +54,6 @@ class Scenario return $this->owner; } - public function getDistributionMode(): DistributionMode - { - return $this->distributionMode; - } - public function getName(): string { return $this->name; @@ -80,13 +71,6 @@ class Scenario return $this; } - public function setDistributionMode(DistributionMode $distributionMode): static - { - $this->distributionMode = $distributionMode; - - return $this; - } - public function setName(string $name): static { $this->name = $name; diff --git a/src/Enum/DistributionMode.php b/src/Enum/DistributionMode.php deleted file mode 100644 index b418f7e..0000000 --- a/src/Enum/DistributionMode.php +++ /dev/null @@ -1,9 +0,0 @@ -getName()); } - public function testDistributionModeDefaultsToEvenWhenNotExplicitlySet(): void - { - $scenario = new Scenario(); - $scenario->setName('Default Mode Scenario'); - $scenario->setOwner($this->persistOwner()); - - $this->em->persist($scenario); - $this->em->flush(); - - $id = $scenario->getId(); - - $this->em->clear(); - - $reloaded = $this->em->find(Scenario::class, $id); - - self::assertNotNull($reloaded); - self::assertSame( - DistributionMode::EVEN, - $reloaded->getDistributionMode(), - 'distribution_mode must default to EVEN when not explicitly set.', - ); - } - - public function testItRoundTripsAnExplicitlySetPriorityDistributionMode(): void - { - $scenario = new Scenario(); - $scenario->setName('Priority Mode Scenario'); - $scenario->setDistributionMode(DistributionMode::PRIORITY); - $scenario->setOwner($this->persistOwner()); - - $this->em->persist($scenario); - $this->em->flush(); - - $id = $scenario->getId(); - - $this->em->clear(); - - $reloaded = $this->em->find(Scenario::class, $id); - - self::assertNotNull($reloaded); - self::assertInstanceOf( - DistributionMode::class, - $reloaded->getDistributionMode(), - 'distribution_mode must hydrate as a DistributionMode enum instance, not a raw string.', - ); - self::assertSame( - DistributionMode::PRIORITY, - $reloaded->getDistributionMode(), - 'An explicitly set PRIORITY distribution_mode must survive a flush + clear + reload round-trip.', - ); - } - public function testDescriptionRoundTripsWhenSet(): void { $scenario = new Scenario(); diff --git a/tests/Enum/RemainingEnumsTest.php b/tests/Enum/RemainingEnumsTest.php index 4dbcfa5..fc10c27 100644 --- a/tests/Enum/RemainingEnumsTest.php +++ b/tests/Enum/RemainingEnumsTest.php @@ -3,7 +3,6 @@ namespace App\Tests\Enum; use App\Enum\BucketAllocationType; -use App\Enum\DistributionMode; use App\Enum\StreamFrequency; use App\Enum\StreamType; use PHPUnit\Framework\TestCase; @@ -22,9 +21,6 @@ final class RemainingEnumsTest extends TestCase $this->assertSame('income', StreamType::INCOME->value); $this->assertSame('expense', StreamType::EXPENSE->value); - - $this->assertSame('even', DistributionMode::EVEN->value); - $this->assertSame('priority', DistributionMode::PRIORITY->value); } public function testBucketAllocationTypeBackingValues(): void diff --git a/tests/Service/Allocation/AllocateIncomeTest.php b/tests/Service/Allocation/AllocateIncomeTest.php index b6df273..333359b 100644 --- a/tests/Service/Allocation/AllocateIncomeTest.php +++ b/tests/Service/Allocation/AllocateIncomeTest.php @@ -6,7 +6,6 @@ use App\Entity\Bucket; use App\Entity\Scenario; use App\Enum\BucketAllocationType; use App\Enum\BucketType; -use App\Enum\DistributionMode; use App\Service\Allocation\AllocateIncome; use App\Service\Allocation\Result; use Doctrine\Common\Collections\ArrayCollection; @@ -14,7 +13,7 @@ use PHPUnit\Framework\TestCase; /** * Tests for the redesigned allocation engine — single strategy, no distribution - * modes. `preview()` no longer accepts a `DistributionMode` parameter at all — + * modes. `preview()` does not accept any distribution-mode parameter — * Model C's even-split-on-tie behaviour is intrinsic to the engine, not a mode. * * THE MODEL (type-phased macro-order, priority tiers within each phase): @@ -476,8 +475,7 @@ final class AllocateIncomeTest extends TestCase private function makeScenario(): Scenario { return (new Scenario()) - ->setName('Household Budget') - ->setDistributionMode(DistributionMode::PRIORITY); + ->setName('Household Budget'); } private function makeFixedLimitBucket( diff --git a/tests/Service/Allocation/ResultTest.php b/tests/Service/Allocation/ResultTest.php index 450e650..ba24bdd 100644 --- a/tests/Service/Allocation/ResultTest.php +++ b/tests/Service/Allocation/ResultTest.php @@ -6,7 +6,6 @@ use App\Entity\Bucket; use App\Entity\Scenario; use App\Enum\BucketAllocationType; use App\Enum\BucketType; -use App\Enum\DistributionMode; use App\Service\Allocation\Result; use PHPUnit\Framework\TestCase; @@ -78,8 +77,7 @@ final class ResultTest extends TestCase private function makeScenario(): Scenario { return (new Scenario()) - ->setName('Household Budget') - ->setDistributionMode(DistributionMode::PRIORITY); + ->setName('Household Budget'); } private function makeBucket(Scenario $scenario, int $priority, string $name): Bucket