From 4a71ccf6cdd9d3e8a8bda4f3d2328e689cda7f88 Mon Sep 17 00:00:00 2001
From: "yash.rode" <yash.rode@3685174.no-reply.drupal.org>
Date: Thu, 13 Oct 2022 14:28:47 +0000
Subject: [PATCH] Issue #3314803 by yash.rode: Move
 ReadinessTrait::getOverallSeverity() into ValidationResult

---
 .../src/Form/UpdateReady.php                  |  2 +-
 .../src/Form/UpdaterForm.php                  |  3 ++-
 package_manager/src/ValidationResult.php      | 20 +++++++++++++++++
 .../tests/src/Unit/ValidationResultTest.php   | 21 ++++++++++++++++++
 src/Form/UpdateReady.php                      |  2 +-
 src/Form/UpdaterForm.php                      |  2 +-
 src/Validation/ReadinessTrait.php             | 22 +------------------
 tests/src/Kernel/ReadinessTraitTest.php       | 21 ------------------
 8 files changed, 47 insertions(+), 46 deletions(-)

diff --git a/automatic_updates_extensions/src/Form/UpdateReady.php b/automatic_updates_extensions/src/Form/UpdateReady.php
index 9613500f15..6a5d072c85 100644
--- a/automatic_updates_extensions/src/Form/UpdateReady.php
+++ b/automatic_updates_extensions/src/Form/UpdateReady.php
@@ -179,7 +179,7 @@ final class UpdateReady extends FormBase {
       $this->displayResults($results, $this->messenger(), $this->renderer);
       // If any errors occurred, return the form early so the user cannot
       // continue.
-      if ($this->getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) {
+      if (ValidationResult::getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) {
         return $form;
       }
     }
diff --git a/automatic_updates_extensions/src/Form/UpdaterForm.php b/automatic_updates_extensions/src/Form/UpdaterForm.php
index ffc0f9281f..48d384629c 100644
--- a/automatic_updates_extensions/src/Form/UpdaterForm.php
+++ b/automatic_updates_extensions/src/Form/UpdaterForm.php
@@ -16,6 +16,7 @@ use Drupal\Core\Url;
 use Drupal\package_manager\Exception\ApplyFailedException;
 use Drupal\package_manager\FailureMarker;
 use Drupal\package_manager\ProjectInfo;
+use Drupal\package_manager\ValidationResult;
 use Drupal\system\SystemManager;
 use Drupal\update\UpdateManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -170,7 +171,7 @@ final class UpdaterForm extends FormBase {
       $results = $event->getResults();
     }
     $this->displayResults($results, $this->messenger(), $this->renderer);
-    $security_level = $this->getOverallSeverity($results);
+    $security_level = ValidationResult::getOverallSeverity($results);
 
     if ($update_projects && $security_level !== SystemManager::REQUIREMENT_ERROR) {
       $form['actions'] = $this->actions($form_state);
diff --git a/package_manager/src/ValidationResult.php b/package_manager/src/ValidationResult.php
index f5c9b51c02..b7a5ce8a14 100644
--- a/package_manager/src/ValidationResult.php
+++ b/package_manager/src/ValidationResult.php
@@ -113,4 +113,24 @@ final class ValidationResult {
     return $this->severity;
   }
 
+  /**
+   * Returns the overall severity for a set of validation results.
+   *
+   * @param \Drupal\package_manager\ValidationResult[] $results
+   *   The validation results.
+   *
+   * @return int
+   *   The overall severity of the results. Will be be one of the
+   *   SystemManager::REQUIREMENT_* constants.
+   */
+  public static function getOverallSeverity(array $results): int {
+    foreach ($results as $result) {
+      if ($result->getSeverity() === SystemManager::REQUIREMENT_ERROR) {
+        return SystemManager::REQUIREMENT_ERROR;
+      }
+    }
+    // If there were no errors, then any remaining results must be warnings.
+    return $results ? SystemManager::REQUIREMENT_WARNING : SystemManager::REQUIREMENT_OK;
+  }
+
 }
diff --git a/package_manager/tests/src/Unit/ValidationResultTest.php b/package_manager/tests/src/Unit/ValidationResultTest.php
index 67f08161fb..3ae93eacc8 100644
--- a/package_manager/tests/src/Unit/ValidationResultTest.php
+++ b/package_manager/tests/src/Unit/ValidationResultTest.php
@@ -25,6 +25,27 @@ class ValidationResultTest extends UnitTestCase {
     $this->assertResultValid($result, $messages, $summary, SystemManager::REQUIREMENT_WARNING);
   }
 
+  /**
+   * @covers ::getOverallSeverity
+   */
+  public function testOverallSeverity(): void {
+    // An error and a warning should be counted as an error.
+    $results = [
+      ValidationResult::createError(['Boo!']),
+      ValidationResult::createWarning(['Moo!']),
+    ];
+    $this->assertSame(SystemManager::REQUIREMENT_ERROR, ValidationResult::getOverallSeverity($results));
+
+    // If there are no results, but no errors, the results should be counted as
+    // a warning.
+    array_shift($results);
+    $this->assertSame(SystemManager::REQUIREMENT_WARNING, ValidationResult::getOverallSeverity($results));
+
+    // If there are just plain no results, we should get REQUIREMENT_OK.
+    array_shift($results);
+    $this->assertSame(SystemManager::REQUIREMENT_OK, ValidationResult::getOverallSeverity($results));
+  }
+
   /**
    * @covers ::createError
    *
diff --git a/src/Form/UpdateReady.php b/src/Form/UpdateReady.php
index 2923d72ce1..d8df87994e 100644
--- a/src/Form/UpdateReady.php
+++ b/src/Form/UpdateReady.php
@@ -226,7 +226,7 @@ final class UpdateReady extends FormBase {
       $this->displayResults($results, $this->messenger(), $this->renderer);
       // If any errors occurred, return the form early so the user cannot
       // continue.
-      if ($this->getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) {
+      if (ValidationResult::getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) {
         return $form;
       }
     }
diff --git a/src/Form/UpdaterForm.php b/src/Form/UpdaterForm.php
index 1a07169d11..b169e475a2 100644
--- a/src/Form/UpdaterForm.php
+++ b/src/Form/UpdaterForm.php
@@ -245,7 +245,7 @@ final class UpdaterForm extends FormBase {
         $release_status = $this->t('Available update');
         $type = 'update-recommended';
     }
-    $create_update_buttons = !$stage_exists && $this->getOverallSeverity($results) !== SystemManager::REQUIREMENT_ERROR;
+    $create_update_buttons = !$stage_exists && ValidationResult::getOverallSeverity($results) !== SystemManager::REQUIREMENT_ERROR;
     if ($installed_minor_release) {
       $installed_version = ExtensionVersion::createFromVersionString($project_info->getInstalledVersion());
       $form['installed_minor'] = $this->createReleaseTable(
diff --git a/src/Validation/ReadinessTrait.php b/src/Validation/ReadinessTrait.php
index 53b5842b6d..92d2f4dd0a 100644
--- a/src/Validation/ReadinessTrait.php
+++ b/src/Validation/ReadinessTrait.php
@@ -39,26 +39,6 @@ trait ReadinessTrait {
       $this->t('Your site does not pass some readiness checks for automatic updates. It cannot be automatically updated until further action is performed.');
   }
 
-  /**
-   * Returns the overall severity for a set of validation results.
-   *
-   * @param \Drupal\package_manager\ValidationResult[] $results
-   *   The validation results.
-   *
-   * @return int
-   *   The overall severity of the results. Will be be one of the
-   *   SystemManager::REQUIREMENT_* constants.
-   */
-  protected function getOverallSeverity(array $results): int {
-    foreach ($results as $result) {
-      if ($result->getSeverity() === SystemManager::REQUIREMENT_ERROR) {
-        return SystemManager::REQUIREMENT_ERROR;
-      }
-    }
-    // If there were no errors, then any remaining results must be warnings.
-    return $results ? SystemManager::REQUIREMENT_WARNING : SystemManager::REQUIREMENT_OK;
-  }
-
   /**
    * Adds a set of validation results to the messages.
    *
@@ -70,7 +50,7 @@ trait ReadinessTrait {
    *   The renderer service.
    */
   protected function displayResults(array $results, MessengerInterface $messenger, RendererInterface $renderer): void {
-    $severity = $this->getOverallSeverity($results);
+    $severity = ValidationResult::getOverallSeverity($results);
 
     if ($severity === SystemManager::REQUIREMENT_OK) {
       return;
diff --git a/tests/src/Kernel/ReadinessTraitTest.php b/tests/src/Kernel/ReadinessTraitTest.php
index 6fb6c3423d..ba1937f5d2 100644
--- a/tests/src/Kernel/ReadinessTraitTest.php
+++ b/tests/src/Kernel/ReadinessTraitTest.php
@@ -18,27 +18,6 @@ class ReadinessTraitTest extends AutomaticUpdatesKernelTestBase {
   use ReadinessTrait;
   use StringTranslationTrait;
 
-  /**
-   * @covers ::getOverallSeverity
-   */
-  public function testOverallSeverity(): void {
-    // An error and a warning should be counted as an error.
-    $results = [
-      ValidationResult::createError(['Boo!']),
-      ValidationResult::createWarning(['Moo!']),
-    ];
-    $this->assertSame(SystemManager::REQUIREMENT_ERROR, $this->getOverallSeverity($results));
-
-    // If there are no results, but no errors, the results should be counted as
-    // a warning.
-    array_shift($results);
-    $this->assertSame(SystemManager::REQUIREMENT_WARNING, $this->getOverallSeverity($results));
-
-    // If there are just plain no results, we should get REQUIREMENT_OK.
-    array_shift($results);
-    $this->assertSame(SystemManager::REQUIREMENT_OK, $this->getOverallSeverity($results));
-  }
-
   /**
    * @covers ::displayResults
    */
-- 
GitLab