diff --git a/core/modules/migrate/src/Exception/RequirementsException.php b/core/modules/migrate/src/Exception/RequirementsException.php index 12b5de100d506752bd064f5a86d6a42318d41f24..5843de2c6a0465a20028702ed6d96e78e658607c 100644 --- a/core/modules/migrate/src/Exception/RequirementsException.php +++ b/core/modules/migrate/src/Exception/RequirementsException.php @@ -60,6 +60,10 @@ public function getRequirements() { public function getRequirementsString() { $output = ''; foreach ($this->requirements as $requirement_type => $requirements) { + if (!is_array($requirements)) { + $requirements = array($requirements); + } + foreach ($requirements as $value) { $output .= "$requirement_type: $value. "; } diff --git a/core/modules/migrate/tests/src/Unit/Exception/RequirementsExceptionTest.php b/core/modules/migrate/tests/src/Unit/Exception/RequirementsExceptionTest.php new file mode 100644 index 0000000000000000000000000000000000000000..05e81e1dd7af822fbec8ea156ae1675229e10375 --- /dev/null +++ b/core/modules/migrate/tests/src/Unit/Exception/RequirementsExceptionTest.php @@ -0,0 +1,55 @@ +<?php + +/** + * @file + * Contains \Drupal\Tests\migrate\Unit\Exception\RequirementsExceptionTest. + */ + +namespace Drupal\Tests\migrate\Unit\Exception; + +use Drupal\migrate\Exception\RequirementsException; +use Drupal\Tests\UnitTestCase; + +/** + * @coversDefaultClass \Drupal\migrate\Exception\RequirementsException + * @group migration + */ +class RequirementsExceptionTest extends UnitTestCase { + + protected $missingRequirements = ['random_jackson_pivot', '51_Eridani_b']; + + /** + * @covers ::getRequirements + */ + public function testGetRequirements() { + $exception = new RequirementsException('Missing requirements ', ['requirements' => $this->missingRequirements]); + $this->assertArrayEquals(['requirements' => $this->missingRequirements], $exception->getRequirements()); + } + + /** + * @covers ::getRequirementsString + * @dataProvider getRequirementsProvider + */ + public function testGetExceptionString($expected, $message, $requirements) { + $exception = new RequirementsException($message, $requirements); + $this->assertEquals($expected, $exception->getRequirementsString()); + } + + /** + * Provides a list of requirements to test. + */ + public function getRequirementsProvider() { + return array( + array( + 'requirements: random_jackson_pivot.', + 'Single Requirement', + array('requirements' => $this->missingRequirements[0]), + ), + array( + 'requirements: random_jackson_pivot. requirements: 51_Eridani_b.', + 'Multiple Requirements', + array('requirements' => $this->missingRequirements), + ), + ); + } +}