#!/usr/bin/perl

=encoding UTF-8

=cut

use FindBin qw($Bin);

use lib "$Bin/../lib";
use lib "$Bin/../t/lib";
use lib "$Bin";

use Test::Partner2::Simple::API;

use qbit;

use Getopt::Long;
use Pod::Usage;
use Utils::Safe qw(confirm_connect_on_production);

my $help           = FALSE;
my $self_update    = FALSE;
my $view_answer    = FALSE;
my $test_name      = FALSE;

my $save_databases = FALSE;
my $lang;

GetOptions(
    "help|h|?"       => \$help,
    "self_update|su" => \$self_update,
    "view_answer"    => \$view_answer,
    "test_name:s"    => \$test_name,
    "save_databases" => \$save_databases,
    "lang=s"         => \$lang,
);

$test_name = fix_utf($test_name);

my $file = shift(@ARGV);

pod2usage(2) if $help;
pod2usage(1) unless defined($file);

$ENV{'SELF_UPDATE'}      //= $self_update;
$ENV{'VIEW_ANSWER'}      //= $view_answer;
$ENV{'TEST_NAME'}        //= $test_name;
$ENV{'SAVE_DATABASES'}   //= $save_databases;
$ENV{'MOCK_LANG_DETECT'} //= $lang;

confirm_connect_on_production();
test($file);

__END__

=head1 NAME

run_test - run test

=head1 SYNOPSIS

run_test filename [options]

 Options:
   --help            brief help message (alias: -h -?)
   --self_update     update test response (alias: -su)
   --view_answer     print response to console
   --test_name       filter tests by name
   --save_databases  save changes to mocked_database_restapi
   --lang            set lang for all requests

=head1 OPTIONS

=over 8

=item B<--help>

Print a brief help message and exits.

=item B<--self_update>

Run and update test response.
ENV: SELF_UPDATE

=item B<--view_answer> (ENV: VIEW_ANSWER)

Run and print response to console.

=item B<--name> (ENV: TEST_NAME_FILTER)

Filter tests by name.

=item B<--save_databases> (ENV: SAVE_DATABASES)

Run and save changes to mocked_database_restapi.

=item B<--lang> (ENV: MOCK_LANG_DETECT)

Set lang for all requests. Example: --lang=en

=back

=head1 DESCRIPTION

B<run_test> run test from the given input file.

=cut
