diff --git a/src/Model/Component.php b/src/Model/Component.php index 30e301c..366f0ff 100644 --- a/src/Model/Component.php +++ b/src/Model/Component.php @@ -57,7 +57,7 @@ public function createFromHashMigrated(string $hash): ComponentInterface } $model = array_shift($data); - $identifier = json_decode(array_shift($data), true); + $identifier = array_shift($data); $this->setModel($model); $this->setIdentifier($identifier); @@ -145,7 +145,9 @@ public function setIdentifier($identifier) } $this->identifier = $identifier; - $this->identifierMigrated = json_encode($identifier); + + $identifierMigrated = is_array($identifier) ? (string) reset($identifier) : $identifier; + $this->identifierMigrated = $identifierMigrated; if (null !== $this->getModel()) { $this->buildHash(); diff --git a/src/Model/HashTrait.php b/src/Model/HashTrait.php index 2fc9c38..8488a14 100644 --- a/src/Model/HashTrait.php +++ b/src/Model/HashTrait.php @@ -26,8 +26,9 @@ public function buildHash() } elseif (!is_array($identifier)) { throw new \InvalidArgumentException('Identifier must be a scalar or an array'); } + $identifierMigrated = is_array($identifier) ? (string) reset($identifier) : $identifier; - $this->hashMigrated = $model.'##'.json_encode($identifier); + $this->hashMigrated = $model.'##'.$identifierMigrated; } /** diff --git a/tests/units/Spy/Timeline/Model/Component.php b/tests/units/Spy/Timeline/Model/Component.php index 57f6f19..f88655c 100644 --- a/tests/units/Spy/Timeline/Model/Component.php +++ b/tests/units/Spy/Timeline/Model/Component.php @@ -16,15 +16,15 @@ public function testBuildHash() ->and($component->setIdentifier('norris')) ->when($component->buildHash()) // should be already called on setModel or setIdentifier ->string($component->getHash())->isEqualTo('chuck#s:6:"norris";') - ->string($component->getHashMigrated())->isEqualTo('chuck##"norris"') + ->string($component->getHashMigrated())->isEqualTo('chuck##norris') ->and($component->setIdentifier(['norris', 'testa'])) ->when($component->buildHash()) // should be already called on setModel or setIdentifier ->string($component->getHash())->isEqualTo('chuck#a:2:{i:0;s:6:"norris";i:1;s:5:"testa";}') - ->string($component->getHashMigrated())->isEqualTo('chuck##["norris","testa"]') + ->string($component->getHashMigrated())->isEqualTo('chuck##norris') ->and($component->setIdentifier(['norris' => 'foo', 'testa' => 1])) ->when($component->buildHash()) // should be already called on setModel or setIdentifier ->string($component->getHash())->isEqualTo('chuck#a:2:{s:6:"norris";s:3:"foo";s:5:"testa";i:1;}') - ->string($component->getHashMigrated())->isEqualTo('chuck##{"norris":"foo","testa":1}') + ->string($component->getHashMigrated())->isEqualTo('chuck##foo') ; } @@ -46,25 +46,17 @@ public function testCreateFromHash() ->string($component->getModel())->isEqualTo('model') ->string($component->getIdentifier())->isEqualTo('chuck') // ok - ->when($component->createFromHashMigrated('model##"chuck"')) + ->when($component->createFromHashMigrated('model##chuck')) ->string($component->getModel())->isEqualTo('model') ->string($component->getIdentifier())->isEqualTo('chuck') // composite ->when($component->createFromHash('model#a:2:{i:0;s:5:"chuck";i:1;s:5:"testa";}')) ->string($component->getModel())->isEqualTo('model') ->array($component->getIdentifier())->isEqualTo(array('chuck', 'testa')) - // composite - ->when($component->createFromHashMigrated('model##["chuck","testa"]')) - ->string($component->getModel())->isEqualTo('model') - ->array($component->getIdentifier())->isEqualTo(array('chuck', 'testa')) // composite associative ->when($component->createFromHash('chuck#a:2:{s:6:"norris";s:3:"foo";s:5:"testa";i:1;}')) ->string($component->getModel())->isEqualTo('chuck') ->array($component->getIdentifier())->isEqualTo(['norris' => 'foo', 'testa' => 1]) - // composite associative - ->when($component->createFromHashMigrated('model##{"norris":"foo","testa":1}')) - ->string($component->getModel())->isEqualTo('model') - ->array($component->getIdentifier())->isEqualTo(['norris' => 'foo', 'testa' => 1]) ; } @@ -79,6 +71,7 @@ public function testSetModel() ->and($component->setIdentifier('norris')) ->and($component->setModel('chuck')) ->string($component->getHash())->isEqualTo('chuck#s:6:"norris";') + ->string($component->getHashMigrated())->isEqualTo('chuck##norris') ; } @@ -93,6 +86,7 @@ public function testSetIdentifier() ->and($component->setModel('chuck')) ->and($component->setIdentifier('norris')) ->string($component->getHash())->isEqualTo('chuck#s:6:"norris";') + ->string($component->getHashMigrated())->isEqualTo('chuck##norris') ; } }