Source
<?php
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
require_once dirname(__FILE__).'/../../include/CBehavior.php';
/**
* Behavior for filter related tests.
*/
class CTableBehavior extends CBehavior {
/**
* Table column names.
*
* @var array
*/
protected $column_names = null;
/**
* Set names of columns.
*
* @param array $names column names
*/
public function setColumnNames($names) {
$this->column_names = $names;
}
/**
* Perform data array normalization.
*
* @param array $data
*
* @return array
*/
protected function normalizeData($data) {
foreach ($data as &$values) {
foreach ($values as &$value) {
if (!is_array($value)) {
$value = ['text' => $value];
}
}
unset($value);
}
unset($values);
return $data;
}
public function getTable($selector = null) {
if ($selector === null) {
$selector = 'class:list-table';
}
$table = $this->test->query($selector)->asTable()->one();
if ($this->column_names !== null) {
$table->setColumnNames($this->column_names);
}
return $table;
}
/**
* Check if values in table rows match data from data provider.
*
* @param array $data data array to be match with result in table
* @param string $selector table selector
*/
public function assertTableData($data = [], $selector = null) {
$rows = $this->getTable($selector)->getRows();
if (!$data) {
// Check that table contain one row with text "No data found."
$this->test->assertEquals(['No data found'], $rows->asText());
return;
}
$this->test->assertEquals(count($data), $rows->count(), 'Rows count does not match results count in data provider.');
$this->test->assertEquals(array_keys($data), array_keys($rows->asArray()),
'Row indices don\'t not match indices in data provider.'