Browse Source

throw exception if string template value is null

Kevin Pfeifer 3 years ago
parent
commit
8ba3e7cccd
2 changed files with 16 additions and 1 deletions
  1. 2 1
      src/View/StringTemplate.php
  2. 14 0
      tests/TestCase/View/StringTemplateTest.php

+ 2 - 1
src/View/StringTemplate.php

@@ -20,6 +20,7 @@ use Cake\Core\Configure\Engine\PhpConfig;
 use Cake\Core\Exception\CakeException;
 use Cake\Core\InstanceConfigTrait;
 use Cake\Utility\Hash;
+use InvalidArgumentException;
 use RuntimeException;
 
 /**
@@ -178,7 +179,7 @@ class StringTemplate
         foreach ($templates as $name) {
             $template = $this->get($name);
             if ($template === null) {
-                $this->_compiled[$name] = [null, null];
+                throw new InvalidArgumentException("String template '$name' is not valid.");
             }
 
             $template = str_replace('%', '%%', $template);

+ 14 - 0
tests/TestCase/View/StringTemplateTest.php

@@ -19,6 +19,7 @@ namespace Cake\Test\TestCase\View;
 use Cake\Core\Exception\CakeException;
 use Cake\TestSuite\TestCase;
 use Cake\View\StringTemplate;
+use InvalidArgumentException;
 use RuntimeException;
 use stdClass;
 
@@ -69,6 +70,19 @@ class StringTemplateTest extends TestCase
     }
 
     /**
+     * test adding a template config with a null value
+     */
+    public function testAddWithInvalidTemplate(): void
+    {
+        $templates = [
+            'link' => '<a href="{{url}}">{{text}}</a>',
+            'invalid' => null
+        ];
+        $this->expectException(InvalidArgumentException::class);
+        $this->template->add($templates);
+    }
+
+    /**
      * Test remove.
      */
     public function testRemove(): void