/** * It should persist data from extensions. */ public function testPersistExtensionsData() { $document = new TestExtensionDocument(['ext_1' => ['foo' => 'bar']]); $this->persistEvent->getDocument()->willReturn($document); $this->inspector->getWebspace($document)->willReturn('sulu_io'); $this->inspector->getLocale($document)->shouldBeCalled()->willReturn('de'); $this->namespaceRegistry->getPrefix('extension_localized')->willReturn('ext_prefix'); $this->extensionManager->getExtensions('foobar')->willReturn(['ext_1' => $this->extension->reveal()]); $this->extension->getName()->willReturn('ext_1'); $this->extension->setLanguageCode('de', 'ext_prefix', '')->shouldBeCalled(); $this->extension->save($this->node->reveal(), ['foo' => 'bar'], 'sulu_io', 'de')->shouldBeCalled(); $this->subscriber->handlePersist($this->persistEvent->reveal()); }
/** * Returns data for extension and property name. */ private function getExtensionData(NodeInterface $node, ExtensionInterface $extension, $propertyName, $webspaceKey, $locale) { // extension data: load ones if (!$this->extensionDataCache->contains($extension->getName())) { $this->extensionDataCache->save($extension->getName(), $this->loadExtensionData($node, $extension, $webspaceKey, $locale)); } // get extension data from cache $data = $this->extensionDataCache->fetch($extension->getName()); // if property exists set it to target (with default value '') return isset($data[$propertyName]) ? $data[$propertyName] : null; }