diff --git a/phpcs.xml b/phpcs.xml index d1748477..501f6cfd 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -1,6 +1,5 @@ - src/ diff --git a/src/View/Helper/BakeHelper.php b/src/View/Helper/BakeHelper.php index 41b48a9e..81813818 100644 --- a/src/View/Helper/BakeHelper.php +++ b/src/View/Helper/BakeHelper.php @@ -304,7 +304,7 @@ public function columnData(string $field, TableSchema $schema): ?array public function enumSupportsLabel(string $field, TableSchema $schema): bool { $typeName = $schema->getColumnType($field); - if (!str_starts_with($typeName, 'enum-')) { + if (!$typeName || !str_starts_with($typeName, 'enum-')) { return false; } $type = TypeFactory::build($typeName); diff --git a/tests/TestCase/View/Helper/BakeHelperTest.php b/tests/TestCase/View/Helper/BakeHelperTest.php index a0bafee6..9fb54c5b 100644 --- a/tests/TestCase/View/Helper/BakeHelperTest.php +++ b/tests/TestCase/View/Helper/BakeHelperTest.php @@ -16,8 +16,10 @@ */ namespace Bake\Test\TestCase\View\Helper; +use Bake\Test\App\Model\Enum\BakeUserStatus; use Bake\View\BakeView; use Bake\View\Helper\BakeHelper; +use Cake\Database\Type\EnumType; use Cake\Http\Response; use Cake\Http\ServerRequest as Request; use Cake\TestSuite\TestCase; @@ -40,6 +42,7 @@ class BakeHelperTest extends TestCase 'plugin.Bake.BakeComments', 'plugin.Bake.BakeArticlesBakeTags', 'plugin.Bake.BakeTags', + 'plugin.Bake.Users', ]; /** @@ -89,12 +92,12 @@ public function testAliasExtractorFilteredHasMany() 'className' => '\Bake\Test\App\Model\Table\ArticlesTable', ]); $this->BakeHelper = $this->getMockBuilder('Bake\View\Helper\BakeHelper') - ->disableOriginalConstructor() - ->onlyMethods(['_filterHasManyAssociationsAliases']) - ->getMock(); + ->disableOriginalConstructor() + ->onlyMethods(['_filterHasManyAssociationsAliases']) + ->getMock(); $this->BakeHelper->expects($this->once()) - ->method('_filterHasManyAssociationsAliases') - ->with($table, ['ArticlesTags']); + ->method('_filterHasManyAssociationsAliases') + ->with($table, ['ArticlesTags']); $result = $this->BakeHelper->aliasExtractor($table, 'HasMany'); $this->assertEmpty($result); } @@ -107,7 +110,7 @@ public function testAliasExtractorFilteredHasMany() public function testAliasExtractorBelongsTo() { $table = $this->getTableLocator()->get('Articles', [ - 'className' => '\Bake\Test\App\Model\Table\ArticlesTable', + 'className' => '\Bake\Test\App\Model\Table\ArticlesTable', ]); $result = $this->BakeHelper->aliasExtractor($table, 'BelongsTo'); $expected = ['authors']; @@ -122,7 +125,7 @@ public function testAliasExtractorBelongsTo() public function testAliasExtractorBelongsToMany() { $table = $this->getTableLocator()->get('Articles', [ - 'className' => '\Bake\Test\App\Model\Table\ArticlesTable', + 'className' => '\Bake\Test\App\Model\Table\ArticlesTable', ]); $result = $this->BakeHelper->aliasExtractor($table, 'BelongsToMany'); $expected = ['tags']; @@ -185,4 +188,15 @@ public function testHasPlugin(): void $this->assertTrue($this->BakeHelper->hasPlugin('Bake')); $this->assertFalse($this->BakeHelper->hasPlugin('DebugKit')); } + + public function testEnumSupportsLabel(): void + { + $table = $this->fetchTable('BakeUsers'); + $schema = $table->getSchema(); + $schema->setColumnType('status', EnumType::from(BakeUserStatus::class)); + + $this->assertTrue($this->BakeHelper->enumSupportsLabel('status', $schema)); + $this->assertFalse($this->BakeHelper->enumSupportsLabel('username', $schema)); + $this->assertFalse($this->BakeHelper->enumSupportsLabel('does_not_exist', $schema)); + } }