/** * Start preview session. * * @param ConnectionInterface $conn * @param MessageHandlerContext $context * @param array $msg * * @return array * * @throws MissingParameterException */ private function start(ConnectionInterface $conn, MessageHandlerContext $context, $msg) { // locale if (!array_key_exists('locale', $msg)) { throw new MissingParameterException('locale'); } $locale = $msg['locale']; $context->set('locale', $locale); // webspace key if (!array_key_exists('webspaceKey', $msg)) { throw new MissingParameterException('webspaceKey'); } $webspaceKey = $msg['webspaceKey']; $context->set('webspaceKey', $webspaceKey); // user id if (!array_key_exists('user', $msg)) { throw new MissingParameterException('user'); } $user = $msg['user']; $context->set('user', $user); // content uuid if (!array_key_exists('content', $msg)) { throw new MissingParameterException('content'); } $contentUuid = $msg['content']; $context->set('content', $contentUuid); // init message vars $template = array_key_exists('template', $msg) ? $msg['template'] : null; $data = array_key_exists('data', $msg) ? $msg['data'] : null; // start preview $this->preview->start($user, $contentUuid, $webspaceKey, $locale, $data, $template); return ['command' => 'start', 'content' => $contentUuid, 'msg' => 'OK']; }
public function testRealScenario() { $data = $this->prepareData(); // start preview from FORM $content = $this->preview->start(1, $data[0]->getUuid(), 'sulu_io', 'en'); $this->assertEquals('Test1', $content->getPropertyValue('title')); $this->assertEquals('Lorem Ipsum dolorem apsum', $content->getPropertyValue('article')); // render PREVIEW $response = $this->preview->render(1, $data[0]->getUuid(), 'sulu_io', 'en'); $expected = $this->render('Test1', 'Lorem Ipsum dolorem apsum', [['title' => 'Block-Title-1', 'article' => ['Block-Article-1-1', 'Block-Article-1-2']], ['title' => 'Block-Title-2', 'article' => ['Block-Article-2-1', 'Block-Article-2-2']]]); $this->assertEquals($expected, $response); // change a property in FORM $content = $this->preview->updateProperty(1, $data[0]->getUuid(), 'sulu_io', 'en', 'title', 'New Title'); $this->assertEquals('New Title', $content->getPropertyValue('title')); $this->assertEquals('Lorem Ipsum dolorem apsum', $content->getPropertyValue('article')); $content = $this->preview->updateProperty(1, $data[0]->getUuid(), 'sulu_io', 'en', 'article', 'asdf'); $this->assertEquals('New Title', $content->getPropertyValue('title')); $this->assertEquals('asdf', $content->getPropertyValue('article')); // update PREVIEW $changes = $this->preview->getChanges(1, $data[0]->getUuid(), 'sulu_io', 'en'); $this->assertEquals(2, sizeof($changes)); $this->assertEquals(['New Title', 'PREF: New Title'], $changes['title']); $this->assertEquals(['asdf'], $changes['article']); // update PREVIEW $changes = $this->preview->getChanges(1, $data[0]->getUuid(), 'sulu_io', 'en'); $this->assertEquals(0, sizeof($changes)); // rerender PREVIEW $response = $this->preview->render(1, $data[0]->getUuid(), 'sulu_io', 'en'); $expected = $this->render('New Title', 'asdf', [['title' => 'Block-Title-1', 'article' => ['Block-Article-1-1', 'Block-Article-1-2']], ['title' => 'Block-Title-2', 'article' => ['Block-Article-2-1', 'Block-Article-2-2']]]); $this->assertEquals($expected, $response); }