From 1db3f3efee58c868781e7cf4b44ec5d7a29ab987 Mon Sep 17 00:00:00 2001
From: tedbow <tedbow@240860.no-reply.drupal.org>
Date: Tue, 6 Sep 2022 12:19:46 +0000
Subject: [PATCH] Issue #3307398 by tedbow, yash.rode:
 PackageManagerKernelTestBase::assertResults() where possible

---
 .../Kernel/ComposerPatchesValidatorTest.php   | 10 ++-------
 .../Kernel/ComposerSettingsValidatorTest.php  | 11 ++--------
 .../src/Kernel/SettingsValidatorTest.php      | 12 ++---------
 .../tests/src/Kernel/StageEventsTest.php      | 21 ++++++-------------
 .../tests/src/Kernel/SymlinkValidatorTest.php | 10 ++-------
 5 files changed, 14 insertions(+), 50 deletions(-)

diff --git a/package_manager/tests/src/Kernel/ComposerPatchesValidatorTest.php b/package_manager/tests/src/Kernel/ComposerPatchesValidatorTest.php
index 2f0fa27e83..5e5e9746f1 100644
--- a/package_manager/tests/src/Kernel/ComposerPatchesValidatorTest.php
+++ b/package_manager/tests/src/Kernel/ComposerPatchesValidatorTest.php
@@ -3,7 +3,7 @@
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Composer\Json\JsonFile;
-use Drupal\package_manager\Exception\StageValidationException;
+use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\ValidationResult;
 
 /**
@@ -35,13 +35,7 @@ class ComposerPatchesValidatorTest extends PackageManagerKernelTestBase {
     $error = ValidationResult::createError([
       'The <code>cweagans/composer-patches</code> plugin is installed, but the <code>composer-exit-on-patch-failure</code> key is not set to <code>true</code> in the <code>extra</code> section of composer.json.',
     ]);
-    try {
-      $this->createStage()->create();
-      $this->fail('Expected a validation error.');
-    }
-    catch (StageValidationException $e) {
-      $this->assertValidationResultsEqual([$error], $e->getResults());
-    }
+    $this->assertResults([$error], PreCreateEvent::class);
   }
 
 }
diff --git a/package_manager/tests/src/Kernel/ComposerSettingsValidatorTest.php b/package_manager/tests/src/Kernel/ComposerSettingsValidatorTest.php
index 5d3a79cf60..14e2361de7 100644
--- a/package_manager/tests/src/Kernel/ComposerSettingsValidatorTest.php
+++ b/package_manager/tests/src/Kernel/ComposerSettingsValidatorTest.php
@@ -3,7 +3,7 @@
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\Component\Serialization\Json;
-use Drupal\package_manager\Exception\StageValidationException;
+use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\ValidationResult;
 
 /**
@@ -62,14 +62,7 @@ class ComposerSettingsValidatorTest extends PackageManagerKernelTestBase {
     $active_dir = $this->container->get('package_manager.path_locator')
       ->getProjectRoot();
     file_put_contents("$active_dir/composer.json", $contents);
-
-    try {
-      $this->createStage()->create();
-      $this->assertSame([], $expected_results);
-    }
-    catch (StageValidationException $e) {
-      $this->assertValidationResultsEqual($expected_results, $e->getResults());
-    }
+    $this->assertResults($expected_results, PreCreateEvent::class);
   }
 
 }
diff --git a/package_manager/tests/src/Kernel/SettingsValidatorTest.php b/package_manager/tests/src/Kernel/SettingsValidatorTest.php
index 7ef365c4ec..6ee4fed0c8 100644
--- a/package_manager/tests/src/Kernel/SettingsValidatorTest.php
+++ b/package_manager/tests/src/Kernel/SettingsValidatorTest.php
@@ -2,7 +2,7 @@
 
 namespace Drupal\Tests\package_manager\Kernel;
 
-use Drupal\package_manager\Exception\StageValidationException;
+use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\ValidationResult;
 
 /**
@@ -39,15 +39,7 @@ class SettingsValidatorTest extends PackageManagerKernelTestBase {
    */
   public function testSettingsValidation(bool $setting, array $expected_results): void {
     $this->setSetting('update_fetch_with_http_fallback', $setting);
-
-    try {
-      $this->createStage()->create();
-      // If there was no exception, ensure we're not expecting any errors.
-      $this->assertSame([], $expected_results);
-    }
-    catch (StageValidationException $e) {
-      $this->assertValidationResultsEqual($expected_results, $e->getResults());
-    }
+    $this->assertResults($expected_results, PreCreateEvent::class);
   }
 
 }
diff --git a/package_manager/tests/src/Kernel/StageEventsTest.php b/package_manager/tests/src/Kernel/StageEventsTest.php
index 27d7a254ba..78c9984417 100644
--- a/package_manager/tests/src/Kernel/StageEventsTest.php
+++ b/package_manager/tests/src/Kernel/StageEventsTest.php
@@ -13,7 +13,7 @@ use Drupal\package_manager\Event\PreDestroyEvent;
 use Drupal\package_manager\Event\PreOperationStageEvent;
 use Drupal\package_manager\Event\PreRequireEvent;
 use Drupal\package_manager\Event\StageEvent;
-use Drupal\package_manager\Exception\StageValidationException;
+use Drupal\package_manager\ValidationResult;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
@@ -136,30 +136,21 @@ class StageEventsTest extends PackageManagerKernelTestBase implements EventSubsc
    * @dataProvider providerValidationResults
    */
   public function testValidationResults(string $event_class): void {
+    $error_messages = ['Burn, baby, burn'];
     // Set up an event listener which will only flag an error for the event
     // class under test.
-    $handler = function (StageEvent $event) use ($event_class): void {
+    $handler = function (StageEvent $event) use ($event_class, $error_messages): void {
       if (get_class($event) === $event_class) {
         if ($event instanceof PreOperationStageEvent) {
-          $event->addError(['Burn, baby, burn']);
+          $event->addError($error_messages);
         }
       }
     };
     $this->container->get('event_dispatcher')
       ->addListener($event_class, $handler);
 
-    try {
-      $this->stage->create();
-      $this->stage->require(['ext-json:*']);
-      $this->stage->apply();
-      $this->stage->postApply();
-      $this->stage->destroy();
-
-      $this->fail('Expected \Drupal\package_manager\Exception\StageValidationException to be thrown.');
-    }
-    catch (StageValidationException $e) {
-      $this->assertCount(1, $e->getResults());
-    }
+    $result = ValidationResult::createError($error_messages);
+    $this->assertResults([$result], $event_class);
   }
 
   /**
diff --git a/package_manager/tests/src/Kernel/SymlinkValidatorTest.php b/package_manager/tests/src/Kernel/SymlinkValidatorTest.php
index 14b7f0592d..afe8343e64 100644
--- a/package_manager/tests/src/Kernel/SymlinkValidatorTest.php
+++ b/package_manager/tests/src/Kernel/SymlinkValidatorTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\Exception\StageValidationException;
 use Drupal\package_manager\ValidationResult;
 use Drupal\package_manager\Validator\SymlinkValidator;
@@ -36,14 +37,7 @@ class SymlinkValidatorTest extends PackageManagerKernelTestBase {
       ->getProjectRoot();
     // @see \Drupal\Tests\package_manager\Kernel\TestSymlinkValidator::isLink()
     touch($active_dir . '/modules/a_link');
-
-    try {
-      $this->createStage()->create();
-      $this->fail('Expected a validation error.');
-    }
-    catch (StageValidationException $e) {
-      $this->assertValidationResultsEqual([$result], $e->getResults());
-    }
+    $this->assertResults([$result], PreCreateEvent::class);
   }
 
   /**
-- 
GitLab