use strict;
use warnings;

use Test::More 'tests' => 10;

my @args = (
    $^X,
    qw{bin/testrail-report --apiurl http://testrail.local --user "test@fake.fake" --password "fake" --project "CRUSH ALL HUMANS" --run "SEND T-1000 INFILTRATION UNITS BACK IN TIME" --mock t/test_multiple_files.tap}
);
my $out = `@args`;
is( $? >> 8, 0, "Exit code OK reported with multiple files" );
my $matches = () = $out =~ m/Reporting result of case/ig;
is( $matches, 2, "Attempts to upload multiple times" );

@args = (
    $^X,
    qw{bin/testrail-report --apiurl http://testrail.local --user "test@fake.fake" --password "fake" --project "CRUSH ALL HUMANS" --run "SEND T-1000 INFILTRATION UNITS BACK IN TIME" --case-ok --mock t/test_multiple_files.tap}
);
$out = `@args`;
is( $? >> 8, 0, "Exit code OK reported with multiple files (case-ok mode)" );
$matches = () = $out =~ m/Reporting result of case/ig;
is( $matches, 4, "Attempts to upload multiple times (case-ok mode)" );

#Test version, case-ok
@args = (
    $^X,
    qw{bin/testrail-report --apiurl http://testrail.local --user "test@fake.fake" --password "fake" --project "TestProject" --run "TestingSuite" --case-ok --version '1.0.14' --mock t/test_subtest.tap}
);
$out = `@args`;
is( $? >> 8, 0, "Exit code OK reported with subtests (case-ok mode)" );
$matches = () = $out =~ m/Reporting result of case/ig;
is( $matches, 2, "Attempts to upload do not do subtests (case-ok mode)" );

#Test plans/configs
@args = (
    $^X,
    qw{bin/testrail-report --apiurl http://testrail.local --user "test@fake.fake" --password "fake" --project "TestProject" --run "Executing the great plan" --plan "GosPlan" --config "testConfig"  --case-ok --mock t/test_subtest.tap}
);
$out = `@args`;
is( $? >> 8, 0, "Exit code OK reported with plans" );
$matches = () = $out =~ m/Reporting result of case.*OK/ig;
is( $matches, 2, "Attempts to to plans work" );

#Test that spawn works
@args = (
    $^X,
    qw{bin/testrail-report --apiurl http://testrail.local --user "test@fake.fake" --password "fake" --project "TestProject" --run "TestingSuite2" --spawn 9 --case-ok --mock t/test_subtest.tap}
);
$out = `@args`;
is( $? >> 8, 0, "Exit code OK reported with spawn" );
$matches = () = $out =~ m/Reporting result of case.*OK/ig;
is( $matches, 2, "Attempts to spawn work" );
