[PHP-WEBMASTER] [web-downloads] main: Fix tests for series directory condition change

Author: Shivam Mathur (shivammathur)
Date: 2025-11-19T16:07:18+05:30

Commit: Fix tests for series directory condition change · php/web-downloads@97ec769 · GitHub
Raw diff: https://github.com/php/web-downloads/commit/97ec76963b9a29a95618e85f1b53df2d0e794cbf.diff

Fix tests for series directory condition change

Changed paths:
  M tests/Console/Command/SeriesDeleteCommandTest.php
  M tests/Console/Command/SeriesInitCommandTest.php
  M tests/Console/Command/SeriesStabilityCommandTest.php
  M tests/Console/Command/SeriesUpdateCommandTest.php
  M tests/Http/Controllers/SeriesUpdateControllerTest.php

Diff:

diff --git a/tests/Console/Command/SeriesDeleteCommandTest.php b/tests/Console/Command/SeriesDeleteCommandTest.php
index 9929b8b..b3dbd2b 100644
--- a/tests/Console/Command/SeriesDeleteCommandTest.php
+++ b/tests/Console/Command/SeriesDeleteCommandTest.php
@@ -38,15 +38,18 @@ public static function versionProvider(): array
         ];
     }

- public function testReturnsSuccessWhenNoSeriesDir(): void
+ public function testFailsWhenNoSeriesDir(): void
     {
         $command = new SeriesDeleteCommand();
         $command->setOption('base-directory', $this->baseDirectory);
         $command->setOption('builds-directory', $this->buildsDirectory);

+ ob_start();
         $result = $command->handle();
+ $output = trim(ob_get_clean());

- $this->assertSame(0, $result, 'Should return success when there is no builds/series directory.');
+ $this->assertSame(1, $result, 'Should fail when there is no builds/series directory.');
+ $this->assertSame('Series directory does not exist', $output);
     }

     public function testMissingBaseDirectory(): void
diff --git a/tests/Console/Command/SeriesInitCommandTest.php b/tests/Console/Command/SeriesInitCommandTest.php
index ba16752..24b7d59 100644
--- a/tests/Console/Command/SeriesInitCommandTest.php
+++ b/tests/Console/Command/SeriesInitCommandTest.php
@@ -38,15 +38,18 @@ public static function caseProvider(): array
         ];
     }

- public function testReturnsSuccessWhenNoSeriesDir(): void
+ public function testFailsWhenNoSeriesDir(): void
     {
         $command = new SeriesInitCommand();
         $command->setOption('base-directory', $this->baseDirectory);
         $command->setOption('builds-directory', $this->buildsDirectory);

+ ob_start();
         $result = $command->handle();
+ $output = trim(ob_get_clean());

- $this->assertSame(0, $result, 'Should return success when there is no builds/series directory.');
+ $this->assertSame(1, $result, 'Should fail when there is no builds/series directory.');
+ $this->assertSame('Series directory does not exist', $output);
     }

     public function testMissingBaseDirectory(): void
diff --git a/tests/Console/Command/SeriesStabilityCommandTest.php b/tests/Console/Command/SeriesStabilityCommandTest.php
index b3364a0..0203f29 100644
--- a/tests/Console/Command/SeriesStabilityCommandTest.php
+++ b/tests/Console/Command/SeriesStabilityCommandTest.php
@@ -38,15 +38,18 @@ public static function versionProvider(): array
         ];
     }

- public function testReturnsSuccessWhenNoSeriesDir(): void
+ public function testFailsWhenNoSeriesDir(): void
     {
         $command = new SeriesStabilityCommand();
         $command->setOption('base-directory', $this->baseDirectory);
         $command->setOption('builds-directory', $this->buildsDirectory);

+ ob_start();
         $result = $command->handle();
+ $output = trim(ob_get_clean());

- $this->assertSame(0, $result);
+ $this->assertSame(1, $result);
+ $this->assertSame('Series directory does not exist', $output);
     }

     public function testMissingBaseDirectory(): void
diff --git a/tests/Console/Command/SeriesUpdateCommandTest.php b/tests/Console/Command/SeriesUpdateCommandTest.php
index 30bafca..c419fde 100644
--- a/tests/Console/Command/SeriesUpdateCommandTest.php
+++ b/tests/Console/Command/SeriesUpdateCommandTest.php
@@ -55,15 +55,18 @@ public function testMissingBuildsDirectory(): void
         $this->assertSame('Build directory is required', $output);
     }

- public function testReturnsSuccessWhenNoSeriesDirectory(): void
+ public function testFailsWhenNoSeriesDirectory(): void
     {
         $command = new SeriesUpdateCommand();
         $command->setOption('base-directory', $this->baseDirectory);
         $command->setOption('builds-directory', $this->buildsDirectory);

+ ob_start();
         $result = $command->handle();
+ $output = trim(ob_get_clean());

- $this->assertSame(0, $result);
+ $this->assertSame(1, $result);
+ $this->assertSame('Series directory does not exist', $output);
     }

     public function testUpdatesExistingLibraryEntry(): void
diff --git a/tests/Http/Controllers/SeriesUpdateControllerTest.php b/tests/Http/Controllers/SeriesUpdateControllerTest.php
index 56e6672..ff252b7 100644
--- a/tests/Http/Controllers/SeriesUpdateControllerTest.php
+++ b/tests/Http/Controllers/SeriesUpdateControllerTest.php
@@ -75,14 +75,36 @@ public function testEnqueuesDeleteTaskWithoutPackage(): void
         $this->assertSame($payload, $taskData);
     }

- public function testRejectsInvalidPackageName(): void
+ public function testRejectsInvalidLibraryName(): void
+ {
+ $payload = [
+ 'php_version' => '8.0',
+ 'vs_version' => 'vs16',
+ 'stability' => 'stable',
+ 'library' => 'open ssl',
+ 'ref' => '1.2.3',
+ ];
+
+ $inputPath = $this->createInputFile($payload);
+ $controller = new SeriesUpdateController($inputPath);
+
+ ob_start();
+ $controller->handle();
+ $output = ob_get_clean();
+ unlink($inputPath);
+
+ $this->assertStringContainsString('The library field must match the pattern /^[a-zA-Z0-9_-]+$/.', $output);
+ $this->assertEmpty(glob($this->buildsDirectory . '/series/series-update-*.json'));
+ }
+
+ public function testRejectsInvalidRefFormat(): void
     {
         $payload = [
             'php_version' => '8.0',
             'vs_version' => 'vs16',
             'stability' => 'stable',
             'library' => 'openssl',
- // ref missing entirely
+ 'ref' => 'v1/2',
         ];

         $inputPath = $this->createInputFile($payload);
@@ -93,7 +115,7 @@ public function testRejectsInvalidPackageName(): void
         $output = ob_get_clean();
         unlink($inputPath);

- $this->assertStringContainsString('The ref field must be a string.', $output);
+ $this->assertStringContainsString('The ref field must match the pattern /^([a-zA-Z0-9\.-]+)?$/.', $output);
         $this->assertEmpty(glob($this->buildsDirectory . '/series/series-update-*.json'));
     }