diff --git a/app/GameMissions/MoonDestructionMission.php b/app/GameMissions/MoonDestructionMission.php index ad0be977c..9e7d32935 100644 --- a/app/GameMissions/MoonDestructionMission.php +++ b/app/GameMissions/MoonDestructionMission.php @@ -3,6 +3,7 @@ namespace OGame\GameMissions; use Illuminate\Support\Facades\DB; +use OGame\Enums\FleetMissionStatus; use OGame\Enums\FleetSpeedType; use OGame\GameMessages\FleetLostContact; use OGame\GameMessages\MoonDestroyed; @@ -34,6 +35,7 @@ class MoonDestructionMission extends GameMission protected static bool $hasReturnMission = true; protected static bool $blockedByServerAttackBlock = true; protected static FleetSpeedType $fleetSpeedType = FleetSpeedType::war; + protected static FleetMissionStatus $friendlyStatus = FleetMissionStatus::Hostile; public function isMissionPossible(PlanetService $planet, Coordinate $targetCoordinate, PlanetType $targetType, UnitCollection $units): MissionPossibleStatus { diff --git a/tests/Feature/FleetMovementTest.php b/tests/Feature/FleetMovementTest.php index a1d4e2ab0..617afae5e 100644 --- a/tests/Feature/FleetMovementTest.php +++ b/tests/Feature/FleetMovementTest.php @@ -334,4 +334,25 @@ public function testFleetMovementShowsFleetSlots(): void // Should show fleet slots info $response->assertSee('Fleets'); } + + /** + * Regression test for #1446: /fleet/movement must not 500 when a moon destruction fleet is active. + */ + public function testFleetMovementShowsMoonDestructionMission(): void + { + $this->missionType = 9; // Moon Destruction + + $this->planetAddUnit('deathstar', 1); + $this->playerSetResearchLevel('computer_technology', 5); + $this->planetAddResources(new Resources(0, 0, 100000, 0)); + + $unitCollection = new UnitCollection(); + $unitCollection->addUnit(ObjectService::getUnitObjectByMachineName('deathstar'), 1); + $this->sendMissionToOtherPlayerMoon($unitCollection, new Resources(0, 0, 0, 0)); + + $response = $this->get('/fleet/movement'); + $response->assertStatus(200); + $response->assertSee('Moon Destruction'); + $response->assertSee('hostile', false); + } } diff --git a/tests/Unit/MoonDestructionMissionTest.php b/tests/Unit/MoonDestructionMissionTest.php index 2285451e9..7c4b4670b 100644 --- a/tests/Unit/MoonDestructionMissionTest.php +++ b/tests/Unit/MoonDestructionMissionTest.php @@ -2,6 +2,7 @@ namespace Tests\Unit; +use OGame\Enums\FleetMissionStatus; use OGame\Factories\PlanetServiceFactory; use OGame\Factories\PlayerServiceFactory; use OGame\GameMissions\MoonDestructionMission; @@ -31,6 +32,11 @@ protected function setUp(): void ); } + public function testFriendlyStatusIsHostile(): void + { + $this->assertSame(FleetMissionStatus::Hostile, MoonDestructionMission::getFriendlyStatus()); + } + /** * @param array $args * @return mixed