use lib 't/lib';
if ($ENV{ZABBIX_SERVER}) {
plan tests => 15;
} else {
plan skip_all => 'Needs an URL in $ENV{ZABBIX_SERVER} to run tests.';
}
use_ok('Zabbix::API::Graph');
my $zabber = Zabbix::API::TestUtils::canonical_login;
ok(my $default = $zabber->fetch('Graph', params => { search => { name => 'CPU Loads' } })->[0],
'... and a graph known to exist can be fetched');
isa_ok($default, 'Zabbix::API::Graph',
'... and that graph');
ok($default->created,
'... and it returns true to existence tests');
my $graph = Zabbix::API::Graph->new(root => $zabber,
data => { name => 'This graph brought to you by Zabbix::API' });
isa_ok($graph, 'Zabbix::API::Graph',
'... and a graph created manually');
is(@{$graph->items}, 0, '... and the graph has no items initially');
my @newitems = map { { item => $_ } } @{$zabber->fetch('Item', params => { search => { key_ => 'vm.memory' },
host => 'Zabbix Server' })};
$graph->items(\@newitems);
is(@{$graph->items}, 5, '... and the graph can set its items');
is((grep { eval { $_->{item}->isa('Zabbix::API::Item') } or diag($@) } @{$graph->items}), 5,
'... and they all are Zabbix::API::Item instances');
lives_ok(sub { $graph->push }, '... and pushing a new graph works');
ok($graph->created, '... and the pushed graph returns true to existence tests');
$graph->data->{width} = 1515;
$graph->push;
is($graph->data->{width}, 1515,
'... and pushing a modified graph updates its data on the server');
my $new_item = Zabbix::API::Item->new(root => $zabber,
data => { key_ => 'system.uptime[minutes]',
description => 'This item brought to you by Zabbix::API',
hostid => $graph->items->[0]->{item}->data->{hostid} });
push @{$graph->items}, ({ item => $new_item });
lives_ok(sub { $graph->push }, '... and pushing a graph with a new item works');
ok($new_item->created, '... and the new item is created on the server');
lives_ok(sub { $graph->delete }, '... and deleting a graph works');
ok(!$graph->created,
'... and deleting a graph removes it from the server');
$new_item->delete;
eval { $zabber->logout };