Exemplo n.º 1
0
 /**
  * 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'];
 }
Exemplo n.º 2
0
 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);
 }