/**
  * testFilterResolving
  * 
  * -> relations should not be resolved here!
  */
 public function testFilterResolving()
 {
     $contact1 = Addressbook_Controller_Contact::getInstance()->create(new Addressbook_Model_Contact(array('n_family' => 'test heini')));
     $contactWithRelations = array('n_family' => 'test typ', 'relations' => array(array('own_model' => 'Addressbook_Model_Contact', 'own_backend' => 'Sql', 'own_id' => 0, 'own_degree' => Tinebase_Model_Relation::DEGREE_SIBLING, 'type' => '', 'related_backend' => 'Sql', 'related_id' => $contact1->getId(), 'related_model' => 'Addressbook_Model_Contact', 'remark' => NULL)));
     $contact2 = Addressbook_Controller_Contact::getInstance()->create(new Addressbook_Model_Contact($contactWithRelations));
     $exampleFilterData = self::getPersistentFilterData();
     $exampleFilterData['filters'] = array(array('field' => 'foreignRecord', 'operator' => 'AND', 'value' => array('appName' => 'Addressbook', 'modelName' => 'Contact', 'linkType' => 'relation', 'filters' => array(array('field' => ':id', 'operator' => 'equals', 'value' => $contact2->getId())))));
     $savedFilterData = $this->_uit->savePersistentFilter($exampleFilterData);
     $filterData = array(array('field' => 'model', 'operator' => 'equals', 'value' => 'Tasks_Model_TaskFilter'), array('field' => 'id', 'operator' => 'equals', 'value' => $savedFilterData['id']));
     $searchResult = $this->_uit->searchPersistentFilter($filterData, NULL);
     $this->assertEquals(1, $searchResult['totalcount']);
     $this->assertTrue(isset($searchResult['results'][0]['filters'][0]['value']['filters'][0]['value']));
     $filterContact = $searchResult['results'][0]['filters'][0]['value']['filters'][0]['value'];
     $this->assertTrue(!isset($filterContact['relations']), 'relations should not be resolved:' . print_r($filterContact, true));
 }
 /**
  * testCheckSameFilterNameInDifferentApplications
  */
 public function testCheckSameFilterNameInDifferentApplications()
 {
     $savedFilter1 = $this->testSaveFilter();
     $filterData2 = self::getPersistentFilterData();
     $filterData2['application_id'] = Tinebase_Application::getInstance()->getApplicationByName('Addressbook')->getId();
     $filterData2['model'] = 'Addressbook_Model_ContactFilter';
     $filterData2['filters'] = array(array('field' => 'query', 'operator' => 'contains', 'value' => 'test'));
     $savedFilter2 = $this->_uit->savePersistentFilter($filterData2);
     foreach (array('model', 'filters', 'application_id') as $fieldToTest) {
         $this->assertNotEquals($savedFilter1[$fieldToTest], $savedFilter2[$fieldToTest]);
     }
     $this->assertEquals($savedFilter1['name'], $savedFilter2['name']);
     $filter1 = Tinebase_PersistentFilter::getFilterById($savedFilter1['id']);
     $filter2 = Tinebase_PersistentFilter::getFilterById($savedFilter2['id']);
     $this->assertEquals($savedFilter1['model'], get_class($filter1));
     $this->assertEquals($savedFilter2['model'], get_class($filter2));
 }
Beispiel #3
0
 /**
  * try to search timesheets with saved persistent filter id
  *
  * @todo move this test to tinebase json tests?
  */
 public function testSearchTimesheetsWithPersistentFilter()
 {
     $persistentFiltersJson = new Tinebase_Frontend_Json_PersistentFilter();
     $tsFilter = $this->_getTimesheetFilter();
     // create
     $filterName = Tinebase_Record_Abstract::generateUID();
     $persistentFiltersJson->savePersistentFilter(array('application_id' => Tinebase_Application::getInstance()->getApplicationById('Timetracker')->getId(), 'filters' => $tsFilter, 'name' => $filterName, 'model' => 'Timetracker_Model_TimesheetFilter'));
     $timesheet = $this->_getTimesheet();
     $timesheetData = $this->_json->saveTimesheet($timesheet->toArray());
     // search persistent filter
     $persistentFilters = $persistentFiltersJson->searchPersistentFilter($this->_getPersistentFilterFilter($filterName), NULL);
     //check
     $search = $this->_json->searchTimesheets($persistentFilters['results'][0]['id'], $this->_getPaging());
     $this->assertEquals($timesheet->description, $search['results'][0]['description']);
     $this->assertEquals('array', gettype($search['results'][0]['timeaccount_id']), 'timeaccount_id is not resolved');
     $this->assertEquals('array', gettype($search['results'][0]['account_id']), 'account_id is not resolved');
     $this->assertEquals(1, $search['totalcount']);
     $this->assertEquals(30, $search['totalsum']);
     $this->assertEquals($tsFilter, $search['filter'], 'filters do not match');
     // cleanup / delete file
     $persistentFiltersJson->deletePersistentFilters($persistentFilters['results'][0]['id']);
 }