diff --git a/library/Class/CodifThesaurus.php b/library/Class/CodifThesaurus.php index 62f47cbe199208800c8087f0a8e27e1f3db8f8dd..d0dcb9fed4854d6fc3824fafe28fd856a3e06700 100644 --- a/library/Class/CodifThesaurus.php +++ b/library/Class/CodifThesaurus.php @@ -225,12 +225,13 @@ class CodifThesaurusLoader extends Storm_Model_Loader { public function findParent($id_thesaurus) { - $parent_str = substr($id_thesaurus, 0, strlen($id_thesaurus) - (4 - strlen($id_thesaurus) % 4)); + $parent_str = substr($id_thesaurus, + 0, + strlen($id_thesaurus) - Class_CodifThesaurus::ID_KEY_LENGTH); if (!$parent_str) return null; - $parent = Class_CodifThesaurus::findFirstBy(['where' => 'id_thesaurus like "'.$parent_str.'%" and LENGTH(id_thesaurus)<'.strlen($id_thesaurus), - 'order' => 'id_thesaurus desc']); + $parent = Class_CodifThesaurus::findFirstBy(['id_thesaurus' => $parent_str]); if (!$parent) return $this->findParent($parent_str); @@ -887,8 +888,8 @@ class Class_CodifThesaurus extends Storm_Model_Abstract { public function getParentId() { - return $this->getParent() - ? $this->getParent()->getId() + return ($parent = $this->getParent()) + ? $parent->getId() : null; } diff --git a/tests/library/Class/CodifThesaurusTest.php b/tests/library/Class/CodifThesaurusTest.php index 41bb52071ffb6c30cba64a3681e4fb1005820831..94c67c3e83d16dfb9f45775d58fdab6aca44f2fa 100644 --- a/tests/library/Class/CodifThesaurusTest.php +++ b/tests/library/Class/CodifThesaurusTest.php @@ -87,19 +87,25 @@ class CodifThesaurusCommonTest extends ModelTestCase { /** @test */ public function libelleHierarchiqueForCultureShouldBeConfGesticulee() { - $this->onLoaderOfModel('Class_CodifThesaurus') - ->whenCalled('findParent') - ->with('THEM000100503000') - ->answers(Class_CodifThesaurus::newInstanceWithId(70,['id_thesaurus'=>'THEM00010050'])->setLibelle('Spectacles')) + $this->fixture(Class_CodifThesaurus::class, + ['id' => 20, + 'id_thesaurus'=>'THEM0001', + 'libelle' => 'Culture']); + + $this->fixture(Class_CodifThesaurus::class, + ['id' => 70, + 'id_thesaurus'=>'THEM00010050', + 'libelle' => 'Spectacles']); - ->whenCalled('findParent') - ->with('THEM00010050') - ->answers(Class_CodifThesaurus::newInstanceWithId(20,['id_thesaurus'=>'THEM0001'])->setLibelle('Culture')); + $gesticule = $this->fixture(Class_CodifThesaurus::class, + ['id' => 10, + 'id_thesaurus'=>'THEM0001005066663000', + 'libelle' => 'Conférences Gesticulées']); $this->assertEquals('Culture : Spectacles : Conférences Gesticulées', - Class_CodifThesaurus::getLibelleHierarchique(Class_CodifThesaurus::newInstanceWithId(10,['id_thesaurus'=>'THEM000100503000'])->setLibelle('Conférences Gesticulées'))); + Class_CodifThesaurus::getLibelleHierarchique($gesticule)); }