use strict; use warnings; use FindBin; use lib "$FindBin::Bin/lib"; use TestRail::API; use Test::LWP::UserAgent::TestRailMock; use Test::More tests => 2; use Test::Fatal; use Test::Deep; use Scalar::Util (); use Capture::Tiny qw{capture}; my $apiurl = $ENV{'TESTRAIL_API_URL'}; my $login = $ENV{'TESTRAIL_USER'}; my $pw = $ENV{'TESTRAIL_PASSWORD'}; #Mock if nothing is provided my $is_mock = (!$apiurl && !$login && !$pw); ($apiurl,$login,$pw) = ('http://testrail.local','teodesian@cpan.org','fake') if $is_mock; my $tr = new TestRail::API($apiurl,$login,$pw,undef,1); #Mock if necesary $tr->{'debug'} = 0; $tr->{'browser'} = $Test::LWP::UserAgent::TestRailMock::mockObject if $is_mock; #This is a mock-only test. my $project = $tr->getProjectByName('zippy'); my $suite = $tr->getTestSuiteByName($project->{'id'},'Master'); my $section = $tr->getSectionByName($project->{'id'},$suite->{'id'},'Recursing section'); my $children = $tr->getChildSections($project->{'id'},$section); my @expected = qw{child grandchild great-grandchild}; my @actual = map {$_->{'name'} } @$children; cmp_bag(\@actual,\@expected,"Got child suites recursively"); cmp_bag($tr->getChildSections($project->{'id'},{ 'suite_id' => 999999999999999, 'id' => 9999999999999999 }),[],"Nothing returned when bogus section passed"); 1;