public function testSearch()
 {
     $entity = new Search();
     $entity->setIndex('test-index');
     $entity->setQuery('test-query');
     $expected = (new Search())->setIndex('test-index')->setQuery('test-query')->setResult(array('test-response', 'test-data'));
     $this->assertEquals($expected, $this->service->search($entity));
 }
 public function testValidationFailure()
 {
     $data = array('index' => '', 'query' => '');
     $this->assertInstanceOf('Application\\Model\\Entity\\Search', $this->entity->exchangeArray($data));
     $this->assertFalse($this->entity->isValid());
     $this->assertNotEmpty($this->entity->getErrorMessages());
     $this->assertEquals(2, count($this->entity->getErrorMessages()['errors']));
 }
 public function indexAction()
 {
     $form = new SearchForm();
     $searchEntity = new Search();
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setInputFilter($searchEntity->getInputFilter());
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $searchEntity->exchangeArray($form->getData());
             try {
                 $searchEntity = $this->getServiceLocator()->get('application.service.elasticsearch')->search($searchEntity);
             } catch (\Exception $e) {
                 $this->getServiceLocator()->get('log.app')->emerg($e->getMessage());
                 $searchEntity->setResult(array('Error' => $e->getMessage()));
             }
         }
     }
     return new ViewModel(array('form' => $form, 'searchEntity' => $searchEntity));
 }
 /**
  * @param SearchEntity $searchEntity
  * @return SearchEntity
  */
 public function search(SearchEntity $searchEntity)
 {
     $searchEntity->setResult($this->getServiceManager()->get('elasticsearch')->search(array('index' => $searchEntity->getIndex(), 'body' => $searchEntity->getQuery())));
     return $searchEntity;
 }