Exemple #1
0
 /**
  * This test will add all serachoptions in each itemtype and check if the
  * search give a SQL error
  */
 public function testSearchOptions()
 {
     $displaypref = new DisplayPreference();
     // save table glpi_displaypreferences
     $dp = getAllDatasFromTable($displaypref->getTable());
     $itemtypeslist = $this->getClasses('getSearchOptions');
     foreach ($itemtypeslist as $itemtype) {
         $number = 0;
         if (!file_exists('front/' . strtolower($itemtype) . '.php') || substr($itemtype, 0, 4) === "Rule" || substr($itemtype, 0, 6) === "Common" || substr($itemtype, 0, 2) === "DB" || $itemtype == 'SlaLevel' || $itemtype == 'Reservation' || $itemtype == 'Event' || $itemtype == 'KnowbaseItem' || $itemtype == 'NetworkPortMigration') {
             // it's the case where not have search possible in this itemtype
             continue;
         }
         $item = getItemForItemtype($itemtype);
         foreach ($item->getSearchOptions() as $key => $data) {
             if (is_int($key)) {
                 $input = array('itemtype' => $itemtype, 'users_id' => 0, 'num' => $key);
                 $displaypref->add($input);
                 $number++;
             }
         }
         $this->assertEquals($number, countElementsInTable($displaypref->getTable(), "`itemtype`='" . $itemtype . "' AND `users_id`=0"));
         // do a search query
         $search_params = array('is_deleted' => 0, 'start' => 0, 'criteria' => array(), 'metacriteria' => array());
         $data = $this->doSearch($itemtype, $search_params);
         // check for sql error (data key missing or empty)
         $this->assertArrayHasKey('data', $data, $data['last_errors']);
         $this->assertNotCount(0, $data['data'], $data['last_errors']);
     }
     // restore displaypreference table
     foreach (getAllDatasFromTable($displaypref->getTable()) as $line) {
         $displaypref->delete($line, true);
     }
     $this->assertEquals(0, countElementsInTable($displaypref->getTable()));
     foreach ($dp as $input) {
         $displaypref->add($input);
     }
 }