| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- <?php
- declare(strict_types=1);
- /**
- * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
- * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
- *
- * Licensed under The MIT License
- * For full copyright and license information, please see the LICENSE.txt
- * Redistributions of files must retain the above copyright notice.
- *
- * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
- * @link https://cakephp.org CakePHP(tm) Project
- * @since 3.0.0
- * @license https://opensource.org/licenses/mit-license.php MIT License
- */
- namespace Cake\Test\TestCase\ORM;
- use Cake\Core\Exception\CakeException;
- use Cake\ORM\Table;
- use Cake\TestSuite\TestCase;
- use TestApp\Model\Behavior\Test2Behavior;
- use TestApp\Model\Behavior\Test3Behavior;
- use TestApp\Model\Behavior\TestBehavior;
- /**
- * Behavior test case
- */
- class BehaviorTest extends TestCase
- {
- /**
- * Test the side effects of the constructor.
- */
- public function testConstructor(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $config = ['key' => 'value'];
- $behavior = new TestBehavior($table, $config);
- $this->assertEquals($config, $behavior->getConfig());
- }
- /**
- * Test getting table instance.
- */
- public function testGetTable(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new TestBehavior($table);
- $this->assertSame($table, $behavior->table());
- }
- public function testReflectionCache(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test3Behavior($table);
- $expected = [
- 'finders' => [
- 'foo' => 'findFoo',
- ],
- 'methods' => [
- 'doSomething' => 'doSomething',
- 'testReflectionCache' => 'testReflectionCache',
- ],
- ];
- $this->assertEquals($expected, $behavior->testReflectionCache());
- }
- /**
- * Test the default behavior of implementedEvents
- */
- public function testImplementedEvents(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new TestBehavior($table);
- $expected = [
- 'Model.beforeFind' => 'beforeFind',
- 'Model.afterSaveCommit' => 'afterSaveCommit',
- 'Model.buildRules' => 'buildRules',
- 'Model.beforeRules' => 'beforeRules',
- 'Model.afterRules' => 'afterRules',
- 'Model.afterDeleteCommit' => 'afterDeleteCommit',
- ];
- $this->assertEquals($expected, $behavior->implementedEvents());
- }
- /**
- * Test that implementedEvents uses the priority setting.
- */
- public function testImplementedEventsWithPriority(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new TestBehavior($table, ['priority' => 10]);
- $expected = [
- 'Model.beforeFind' => [
- 'priority' => 10,
- 'callable' => 'beforeFind',
- ],
- 'Model.afterSaveCommit' => [
- 'priority' => 10,
- 'callable' => 'afterSaveCommit',
- ],
- 'Model.beforeRules' => [
- 'priority' => 10,
- 'callable' => 'beforeRules',
- ],
- 'Model.afterRules' => [
- 'priority' => 10,
- 'callable' => 'afterRules',
- ],
- 'Model.buildRules' => [
- 'priority' => 10,
- 'callable' => 'buildRules',
- ],
- 'Model.afterDeleteCommit' => [
- 'priority' => 10,
- 'callable' => 'afterDeleteCommit',
- ],
- ];
- $this->assertEquals($expected, $behavior->implementedEvents());
- }
- /**
- * testImplementedMethods
- */
- public function testImplementedMethods(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table);
- $expected = [
- 'doSomething' => 'doSomething',
- ];
- $this->assertEquals($expected, $behavior->implementedMethods());
- }
- /**
- * testImplementedMethodsAliased
- */
- public function testImplementedMethodsAliased(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table, [
- 'implementedMethods' => [
- 'aliased' => 'doSomething',
- ],
- ]);
- $expected = [
- 'aliased' => 'doSomething',
- ];
- $this->assertEquals($expected, $behavior->implementedMethods());
- }
- /**
- * testImplementedMethodsDisabled
- */
- public function testImplementedMethodsDisabled(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table, [
- 'implementedMethods' => [],
- ]);
- $expected = [];
- $this->assertEquals($expected, $behavior->implementedMethods());
- }
- /**
- * testImplementedFinders
- */
- public function testImplementedFinders(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table);
- $expected = [
- 'foo' => 'findFoo',
- ];
- $this->assertEquals($expected, $behavior->implementedFinders());
- }
- /**
- * testImplementedFindersAliased
- */
- public function testImplementedFindersAliased(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table, [
- 'implementedFinders' => [
- 'aliased' => 'findFoo',
- ],
- ]);
- $expected = [
- 'aliased' => 'findFoo',
- ];
- $this->assertEquals($expected, $behavior->implementedFinders());
- }
- /**
- * testImplementedFindersDisabled
- */
- public function testImplementedFindersDisabled(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table, [
- 'implementedFinders' => [],
- ]);
- $this->assertEquals([], $behavior->implementedFinders());
- }
- /**
- * testVerifyConfig
- *
- * Don't expect an exception to be thrown
- */
- public function testVerifyConfig(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table);
- $behavior->verifyConfig();
- $this->assertTrue(true, 'No exception thrown');
- }
- /**
- * testVerifyConfigImplementedFindersOverridden
- *
- * Simply don't expect an exception to be thrown
- */
- public function testVerifyConfigImplementedFindersOverridden(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table, [
- 'implementedFinders' => [
- 'aliased' => 'findFoo',
- ],
- ]);
- $behavior->verifyConfig();
- $this->assertTrue(true, 'No exception thrown');
- }
- /**
- * testVerifyImplementedFindersInvalid
- */
- public function testVerifyImplementedFindersInvalid(): void
- {
- $this->expectException(CakeException::class);
- $this->expectExceptionMessage('The method findNotDefined is not callable on class ' . Test2Behavior::class);
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table, [
- 'implementedFinders' => [
- 'aliased' => 'findNotDefined',
- ],
- ]);
- $behavior->verifyConfig();
- }
- /**
- * testVerifyConfigImplementedMethodsOverridden
- *
- * Don't expect an exception to be thrown
- */
- public function testVerifyConfigImplementedMethodsOverridden(): void
- {
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table);
- $behavior = new Test2Behavior($table, [
- 'implementedMethods' => [
- 'aliased' => 'doSomething',
- ],
- ]);
- $behavior->verifyConfig();
- $this->assertTrue(true, 'No exception thrown');
- }
- /**
- * testVerifyImplementedMethodsInvalid
- */
- public function testVerifyImplementedMethodsInvalid(): void
- {
- $this->expectException(CakeException::class);
- $this->expectExceptionMessage('The method iDoNotExist is not callable on class ' . Test2Behavior::class);
- $table = $this->getMockBuilder(Table::class)->getMock();
- $behavior = new Test2Behavior($table, [
- 'implementedMethods' => [
- 'aliased' => 'iDoNotExist',
- ],
- ]);
- $behavior->verifyConfig();
- }
- }
|