require_once dirname(__FILE__).'/../../include/CWebTest.php';
class testWidgets extends CWebTest {
const HOST_ALL_ITEMS = 'Host for all item value types';
const TABLE_SELECTOR = 'xpath://form[@name="itemform"]//table';
const USER_MACRO = '{$USER.MACRO}';
const USER_MACRO_VALUE = 'Macro function Test 12345';
const USER_SECRET_MACRO = '{$SECRET.MACRO}';
const MACRO_CHAR = '{$MACRO.CHAR}';
const MACRO_HTML_ENCODE = '{$MACRO.HTML.ENCODE}';
const MACRO_HTML_ENCODE_VALUE = '<a href="test.url">"test&"</a>';
const MACRO_HTML_DECODE = '{$MACRO.HTML.DECODE}';
const MACRO_HTML_DECODE_VALUE = '<a href="test.url">"test&"</a>';
const MACRO_CHAR_VALUE = '000 ЙщфхжЖŽzŠsšĒĀīī🌴 ₰₰₰';
const MACRO_URL_ENCODE = '{$MACRO.URL.ENCODE}';
const MACRO_URL_ENCODE_VALUE = 'h://test.com/macro?functions=urlencode&urld=a🎸';
const MACRO_URL_DECODE = '{$MACRO.URL.DECODE}';
const MACRO_URL_DECODE_VALUE = 'h%3A%2F%2Ftest.com%2Fmacro%3Ffunctions%3Durlencode%26urld%3Da%F0%9F%8E%B8';
protected static $dashboardid;
const SQL = 'SELECT wf.widgetid, wf.type, wf.name, wf.value_int, wf.value_str, wf.value_groupid, wf.value_hostid,'.
' wf.value_itemid, wf.value_graphid, wf.value_sysmapid, w.widgetid, w.dashboard_pageid, w.type, w.name, w.x, w.y,'.
' ON w.widgetid=wf.widgetid'.
' ORDER BY wf.widgetid, wf.name, wf.value_int, wf.value_str, wf.value_groupid, wf.value_itemid,'.
' wf.value_graphid, wf.value_hostid';
public function checkAvailableItems($url, $widget) {
$this->page->login()->open($url)->waitUntilReady();
$widget_dialog = CDashboardElement::find()->one()->waitUntilReady()->edit()->addWidget();
$widget_form = $widget_dialog->asForm();
$widget_form->fill(['Type' => CFormElement::RELOADABLE_FILL($widget)]);
$select_dialog = $widget_dialog;
$item_types = (in_array($widget, ['Item navigator', 'Item history', 'Honeycomb']))
? ['Binary item', 'Character item', 'Float item', 'Log item', 'Text item', 'Unsigned item', 'Unsigned_dependent item']
: ['Character item', 'Float item', 'Log item', 'Text item', 'Unsigned item', 'Unsigned_dependent item'];
$widget_form->getFieldContainer('Columns')->query('button:Add')->one()->waitUntilClickable()->click();
$column_dialog = COverlayDialogElement::find()->all()->last()->waitUntilReady();
$select_dialog = $column_dialog;
$widget_form->fill(['Time type' => CFormElement::RELOADABLE_FILL('Host time')]);
$this->assertTrue($widget_form->getField('Item')->isVisible());
$item_types = ['Float item', 'Unsigned item', 'Unsigned_dependent item'];