Skip to content
Snippets Groups Projects
Verified Commit 39b27921 authored by Théodore Biadala's avatar Théodore Biadala
Browse files

Issue #3462700 by niklan, richardgaunt, smustgrave, pdureau: Update...

Issue #3462700 by niklan, richardgaunt, smustgrave, pdureau: Update ComponentValidator to always include the component ID
parent 9b3b1c6b
No related branches found
No related tags found
3 merge requests!11197Issue #3506427 by eduardo morales alberti: Remove responsive_image.ajax from hook,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!617Issue #3043725: Provide a Entity Handler for user cancelation
Pipeline #403803 passed with warnings
Pipeline: drupal

#403825

    Pipeline: drupal

    #403817

      Pipeline: drupal

      #403808

        ......@@ -138,7 +138,7 @@ public function validateDefinition(array $definition, bool $enforce_schemas): bo
        ...$message_parts,
        ...$missing_class_errors,
        ];
        $message = implode("/n", $message_parts);
        $message = implode("\n", $message_parts);
        // Throw the exception with the error message.
        throw new InvalidComponentException($message);
        }
        ......@@ -208,7 +208,7 @@ function (array $error) use ($context): bool {
        return TRUE;
        }
        $message_parts = array_map(
        static function (array $error): string {
        static function (array $error) use ($component_id, $context): string {
        // We check the error message instead of values and definitions here
        // because it's hard to access both given the possible complexity of a
        // schema. Since this is a small non critical DX improvement error
        ......@@ -217,11 +217,17 @@ static function (array $error): string {
        $error['message'] .= '. This may be because the property is empty instead of having data present. If possible fix the source data, use the |default() twig filter, or update the schema to allow multiple types.';
        }
        return sprintf("[%s] %s", $error['property'], $error['message']);
        // If the property value has been set, print it out for easier
        // debugging.
        if (isset($context[$error['property']]) && \is_scalar($context[$error['property']])) {
        $error['message'] .= \sprintf('. The provided value is: "%s"', $context[$error['property']]);
        }
        return sprintf('[%s/%s] %s.', $component_id, $error['property'], $error['message']);
        },
        $errors
        );
        $message = implode("/n", $message_parts);
        $message = implode("\n", $message_parts);
        throw new InvalidComponentException($message);
        }
        ......@@ -276,7 +282,7 @@ private function validateClassProps(array $props_schema, array $props_raw, strin
        }
        $props_schema = $this->nullifyClassPropsSchema($props_schema, $classes_per_prop);
        if (!empty($error_messages)) {
        $message = implode("/n", $error_messages);
        $message = implode("\n", $error_messages);
        throw new InvalidComponentException($message);
        }
        return [$props_schema, $props_raw];
        ......
        ......@@ -159,13 +159,14 @@ public static function dataProviderValidatePropsValid(): array {
        *
        * @throws \Drupal\Core\Render\Component\Exception\InvalidComponentException
        */
        public function testValidatePropsInvalid(array $context, string $component_id, array $definition): void {
        public function testValidatePropsInvalid(array $context, string $component_id, array $definition, string $expected_exception_message): void {
        $component = new Component(
        ['app_root' => '/fake/path/root'],
        'sdc_test:' . $component_id,
        $definition
        );
        $this->expectException(InvalidComponentException::class);
        $this->expectExceptionMessage($expected_exception_message);
        $component_validator = new ComponentValidator();
        $component_validator->setValidator();
        $component_validator->validateProps($context, $component);
        ......@@ -175,7 +176,7 @@ public function testValidatePropsInvalid(array $context, string $component_id, a
        * Data provider with invalid component props.
        *
        * @return array
        * The data.
        * Returns the generator with the invalid properties.
        */
        public static function dataProviderValidatePropsInvalid(): array {
        return [
        ......@@ -187,6 +188,7 @@ public static function dataProviderValidatePropsInvalid(): array {
        ],
        'my-cta',
        static::loadComponentDefinitionFromFs('my-cta'),
        '[sdc_test:my-cta/text] The property text is required.',
        ],
        'attributes with invalid object class' => [
        [
        ......@@ -197,11 +199,13 @@ public static function dataProviderValidatePropsInvalid(): array {
        ],
        'my-cta',
        static::loadComponentDefinitionFromFs('my-cta'),
        'Data provided to prop "attributes" for component "sdc_test:my-cta" is not a valid instance of "Drupal\Core\Template\Attribute"',
        ],
        'ctaTarget violates the allowed properties in the enum' => [
        ['ctaTarget' => 'foo'],
        'my-banner',
        static::loadComponentDefinitionFromFs('my-banner'),
        '[sdc_test:my-banner/ctaTarget] Does not have a value in the enumeration ["","_blank"]. The provided value is: "foo".',
        ],
        ];
        }
        ......
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Finish editing this message first!
        Please register or to comment