From 544c5eff49f334de4e4c177db5bed8bb3808893e Mon Sep 17 00:00:00 2001 From: mirko-pagliai Date: Mon, 9 Jun 2025 16:59:49 +0200 Subject: [PATCH] Add test for mock model policy resolution and refactor `getRepositoryPolicy` method in OrmResolver --- src/Policy/OrmResolver.php | 5 ++--- tests/TestCase/Policy/OrmResolverTest.php | 8 ++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Policy/OrmResolver.php b/src/Policy/OrmResolver.php index c4be0bf..39a2aaf 100644 --- a/src/Policy/OrmResolver.php +++ b/src/Policy/OrmResolver.php @@ -121,11 +121,10 @@ protected function getEntityPolicy(EntityInterface $entity): mixed */ protected function getRepositoryPolicy(RepositoryInterface $table): mixed { - $class = get_class($table); $tableNamespace = '\Model\Table\\'; + $class = get_class($table); + $name = $table->getAlias() . 'Table'; $namespace = str_replace('\\', '/', substr($class, 0, (int)strpos($class, $tableNamespace))); - /** @psalm-suppress PossiblyFalseOperand */ - $name = substr($class, strpos($class, $tableNamespace) + strlen($tableNamespace)); return $this->findPolicy($class, $name, $namespace); } diff --git a/tests/TestCase/Policy/OrmResolverTest.php b/tests/TestCase/Policy/OrmResolverTest.php index 89056a1..10da5e7 100644 --- a/tests/TestCase/Policy/OrmResolverTest.php +++ b/tests/TestCase/Policy/OrmResolverTest.php @@ -115,6 +115,14 @@ public function testGetPolicyQueryForDefinedTable() $this->assertInstanceOf(ArticlesTablePolicy::class, $policy); } + public function testGetPolicyMockModel() + { + $articles = $this->getMockForModel('Articles'); + $resolver = new OrmResolver('TestApp'); + $policy = $resolver->getPolicy($articles->find()); + $this->assertInstanceOf(ArticlesTablePolicy::class, $policy); + } + public function testGetPolicyUnknownTable() { $this->expectException(MissingPolicyException::class);