Browse Source

Add buildValidator event hook to Table.

While I don't think this will be frequently used, it does round out the
method listener options at the Table class. I've included some more
tests as well.

Refs #9099
Mark Story 9 years ago
parent
commit
c678bff7cc
2 changed files with 15 additions and 1 deletions
  1. 2 0
      src/ORM/Table.php
  2. 13 1
      tests/TestCase/ORM/TableTest.php

+ 2 - 0
src/ORM/Table.php

@@ -2252,6 +2252,7 @@ class Table implements RepositoryInterface, EventListenerInterface, EventDispatc
      * The conventional method map is:
      *
      * - Model.beforeMarshal => beforeMarshal
+     * - Model.buildValidator => buildValidator
      * - Model.beforeFind => beforeFind
      * - Model.beforeSave => beforeSave
      * - Model.afterSave => afterSave
@@ -2268,6 +2269,7 @@ class Table implements RepositoryInterface, EventListenerInterface, EventDispatc
     {
         $eventMap = [
             'Model.beforeMarshal' => 'beforeMarshal',
+            'Model.buildValidator' => 'buildValidator',
             'Model.beforeFind' => 'beforeFind',
             'Model.beforeSave' => 'beforeSave',
             'Model.afterSave' => 'afterSave',

+ 13 - 1
tests/TestCase/ORM/TableTest.php

@@ -1673,15 +1673,27 @@ class TableTest extends TestCase
     public function testImplementedEvents()
     {
         $table = $this->getMockBuilder('Cake\ORM\Table')
-            ->setMethods(['beforeFind', 'beforeSave', 'afterSave', 'beforeDelete', 'afterDelete'])
+            ->setMethods([
+                'buildValidator',
+                'beforeMarshal',
+                'beforeFind',
+                'beforeSave',
+                'afterSave',
+                'beforeDelete',
+                'afterDelete',
+                'afterRules'
+            ])
             ->getMock();
         $result = $table->implementedEvents();
         $expected = [
+            'Model.beforeMarshal' => 'beforeMarshal',
+            'Model.buildValidator' => 'buildValidator',
             'Model.beforeFind' => 'beforeFind',
             'Model.beforeSave' => 'beforeSave',
             'Model.afterSave' => 'afterSave',
             'Model.beforeDelete' => 'beforeDelete',
             'Model.afterDelete' => 'afterDelete',
+            'Model.afterRules' => 'afterRules',
         ];
         $this->assertEquals($expected, $result, 'Events do not match.');
     }