public function test_get_record_by_id() { $types = array('mysql'); $users = array('root'); foreach ($types as $i => $type) { parent::internal_connect_db($type, $users[$i]); parent::reset_db(__DIR__ . '/../setup/testTable.' . $type . '.sql'); $record = $this->x->get_record_by_id(1); $this->assertTrue(is_array($record)); $this->assertTrue(count($record) > 0); $this->assertEquals(1, $record['test_id']); $this->assertEquals(1, $record['the_number']); $this->assertEquals('first', $record['description']); $this->assertEquals(true, $record['is_active']); $record = $this->x->get_record_by_id(5); $this->assertTrue(is_array($record)); $this->assertEquals(5, $record['test_id']); $this->assertEquals(999, $record['the_number']); //now try to retrieve a record that does not exist. try { $badRecord = $this->x->get_record_by_id(666); $this->assertFalse(count($badRecord), "no exception thrown, and there is data in the returned record....???? " . cs_global::debug_print($badRecord)); } catch (Exception $ex) { $this->assertTrue((bool) preg_match('~returned data did not contain ID~', $ex->getMessage()), "invalid or unexpected exception message: " . $ex->getMessage()); } try { $this->x->get_record_by_id("poop"); } catch (Exception $ex) { $this->assertTrue((bool) preg_match('~record ID must be numeric~', $ex->getMessage()), "unexpected exception message: " . $ex->getMessage()); } } }
public function texst_delete() { $x = new Ability(); $x->characterId = $this->id; $x->create_defaults($this->dbObj); $allRecords = $x->get_all($this->dbObj, $this->id); $this->assertTrue(count($allRecords) > 0); $keys = array_keys($allRecords); $lastRec = count($allRecords); foreach ($allRecords as $ability => $data) { $this->assertEquals($lastRec, count($x->get_all($this->dbObj, $this->id))); $this->assertTrue(is_string($ability), "ID=(" . $ability . ")"); $this->assertTrue(is_array($data)); $this->assertTrue(count($data) > 0); $x->id = $data['character_ability_id']; $this->assertEquals(1, $x->delete($this->dbObj)); $lastRec--; } $this->assertEquals(0, $lastRec); $allAbilities = $x->get_all($this->dbObj, $this->id); $this->assertEquals(0, count($allAbilities), cs_global::debug_print($allAbilities)); $this->assertEquals(array(), $allAbilities); }
public function get_logs_count($criteria, array $pagination = null) { //TODO: allow array for $criteria, so more complex operations can be done $_crit = ""; if (!is_null($criteria) && is_string($criteria) && strlen($criteria) > 0) { $_crit = strtolower($criteria); } $_limit = ""; $_offset = ""; if (is_array($pagination)) { foreach ($pagination as $k => $v) { switch (strtolower($k)) { case "order": break; case "limit": if (is_numeric($v)) { $_limit = " LIMIT " . $v; } elseif (is_null($v)) { $_limit = ""; } else { throw new InvalidArgumentException(__METHOD__ . ": non-numeric argument for limit (" . $v . ")"); } break; case "offset": if (is_numeric($v)) { $_offset = " OFFSET " . $v; } elseif (is_null($v)) { $_offset = ""; } else { throw new InvalidArgumentException(__METHOD__ . ": non-numeric argument for offset (" . $v . ")"); } break; default: throw new InvalidArgumentException(__METHOD__ . ": invalid index '" . $k . "'"); } } } //TODO: handle more complex scenarios, like time periods. $sql = "SELECT \n\t\t\tcount(1) AS count\n\t\t\tFROM " . self::logTable . " AS l \n\t\t\t\tINNER JOIN " . self::eventTable . " AS ev ON (l.event_id=ev.event_id) \n\t\t\t\tINNER JOIN " . self::classTable . " AS cl ON (cl.class_id=ev.class_id) \n\t\t\t\tINNER JOIN " . self::categoryTable . " AS ca ON (ca.category_id=ev.category_id)\n\t\t\t\tINNER JOIN " . self::userTable . " AS u ON (l.uid=u.uid)"; $params = array(); if (strlen($_crit)) { $sql .= " WHERE LOWER(l.details) LIKE :search::text\n\t\t\t\tOR LOWER(cl.class_name) LIKE :search::text\n\t\t\t\tOR LOWER(ca.category_name) LIKE :search::text\n\t\t\t\tOR LOWER(ev.description) LIKE :search::text\n\t\t\t\tOR LOWER(u.username) LIKE :search::text\n\t\t\t\tOR LOWER(u.email) LIKE :search::text"; $params['search'] = "%" . $_crit . "%"; } $sql .= $_limit . $_offset; try { $numrows = $this->db->run_query($sql, $params); $retval = -1; if ($numrows > 0) { $data = $this->db->get_single_record(); $retval = $data['count']; } } catch (Exception $ex) { throw new ErrorException(__METHOD__ . ": failed to retrieve logs, details::: " . $ex->getMessage() . "\n\nSQL::: " . $sql . "\n\nPARAMS::: " . cs_global::debug_print($params)); } return $retval; }