diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-14 13:17:47 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-14 13:17:47 +0000 |
commit | 5419d4428c86c488a43124f85e5407d7cbae6541 (patch) | |
tree | 772c4221a20fd7d1b3e7e67c6e21755a50e80fd7 /test/php/library/Director/Form | |
parent | Adding upstream version 1.10.2. (diff) | |
download | icingaweb2-module-director-5419d4428c86c488a43124f85e5407d7cbae6541.tar.xz icingaweb2-module-director-5419d4428c86c488a43124f85e5407d7cbae6541.zip |
Adding upstream version 1.11.1.upstream/1.11.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/php/library/Director/Form')
-rw-r--r-- | test/php/library/Director/Form/IcingaObjectFieldFormTest.php | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/test/php/library/Director/Form/IcingaObjectFieldFormTest.php b/test/php/library/Director/Form/IcingaObjectFieldFormTest.php new file mode 100644 index 0000000..8a5e0cc --- /dev/null +++ b/test/php/library/Director/Form/IcingaObjectFieldFormTest.php @@ -0,0 +1,151 @@ +<?php + +namespace Tests\Icinga\Module\Director\Field; + +use Icinga\Module\Director\Forms\IcingaObjectFieldForm; +use Icinga\Module\Director\Objects\DirectorDatafield; +use Icinga\Module\Director\Objects\IcingaHost; +use Icinga\Module\Director\Test\BaseTestCase; +use Icinga\Module\Director\Objects\IcingaCommand; + +class IcingaObjectFieldFormTest extends BaseTestCase +{ + /** @var string */ + protected const COMMAND_NAME = 'icingaTestCommand'; + + /** @var string */ + protected const DATAFIELD_NAME = 'dataFieldTest'; + + /** @var string */ + protected const HOST_NAME = 'testHost'; + + /** @var ?DirectorDatafield */ + protected $testDatafield = null; + + /** @var ?IcingaCommand */ + protected $testIcingaCommand = null; + + /** @var IcingaHost */ + private $testHost; + + public function setUp(): void + { + parent::setUp(); + if ($this->hasDb()) { + $db = $this->getDb(); + $this->testDatafield = DirectorDatafield::create([ + 'varname' => self::DATAFIELD_NAME, + 'caption' => 'Blah', + 'description' => '', + 'datatype' => 'Icinga\Module\Director\DataType\DataTypeArray', + 'format' => 'json' + ]); + $this->testDatafield->store($db); + + $this->testIcingaCommand = IcingaCommand::create( + [ + 'object_name' => self::COMMAND_NAME, + 'object_type' => 'object' + ], + $db + ); + $this->testIcingaCommand->store($db); + + $this->testHost = IcingaHost::create([ + 'object_name' => self::HOST_NAME, + 'object_type' => 'object', + 'display_name' => 'Whatever' + ], $this->getDb()); + } + } + + public function testFieldSuggestionsWithoutCheckCommand() + { + if ($this->skipForMissingDb()) { + return; + } + + $db = $this->getDb(); + + $icingaHostFieldForm = (new IcingaObjectFieldForm()) + ->setDb($db) + ->setIcingaObject($this->testHost); + + $icingaHostFieldForm->setup(); + /** @var array<string> $suggestions */ + $suggestions = $icingaHostFieldForm->getElement('datafield_id') + ->getAttrib('options'); + + array_shift($suggestions); + + $this->assertEquals( + [ + 'Other available fields' => [ + $this->testDatafield->get('id') => "Blah (dataFieldTest)" + ] + ], + $suggestions + ); + } + + public function testFieldSuggestionsWithCheckCommand() + { + if ($this->skipForMissingDb()) { + return; + } + + $db = $this->getDb(); + + $this->testHost->check_command = self::COMMAND_NAME; + $icingaHostFieldForm = (new IcingaObjectFieldForm()) + ->setDb($db) + ->setIcingaObject($this->testHost); + + $icingaHostFieldForm->setup(); + + /** @var array<string> $suggestions */ + $suggestions = $icingaHostFieldForm->getElement('datafield_id') + ->getAttrib('options'); + + array_shift($suggestions); + $this->assertEquals( + [ + 'Other available fields' => [ + $this->testDatafield->get('id') => "Blah (dataFieldTest)" + ] + ], + $suggestions + ); + } + + public function tearDown(): void + { + if ($this->hasDb()) { + $db = $this->getDb(); + $this->deleteDatafields(); + + if (IcingaHost::exists(self::HOST_NAME, $db)) { + IcingaHost::load(self::HOST_NAME, $db)->delete(); + } + + if (IcingaCommand::exists(self::COMMAND_NAME, $db)) { + IcingaCommand::load(self::COMMAND_NAME, $db)->delete(); + } + } + + parent::tearDown(); + } + + protected function deleteDatafields() + { + $db = $this->getDb(); + $dbAdapter = $db->getDbAdapter(); + + $query = $dbAdapter->select() + ->from('director_datafield') + ->where('varname = ?', self::DATAFIELD_NAME); + foreach (DirectorDatafield::loadAll($db, $query, 'id') as $datafield) { + $datafield->delete(); + } + } +} |