The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings;
use File::Spec ();
use JSON 2 ();
use Metabase::User::Profile ();
use Metabase::User::Secret ();

use Test::More 0.88; END { done_testing }

require_ok('Metabase::Client::Simple');

$Metabase::Client::Simple::VERSION ||= "0.123456"; # for prove in repo dir

my $ver = Metabase::Client::Simple->VERSION;

my $id_file = File::Spec->catfile(qw/t data id.json/);
my $guts = do { local (@ARGV,$/) = $id_file; <> };
my $id_pair = JSON->new->decode( $guts );

my $profile = Metabase::User::Profile->from_struct( $id_pair->[0] );
my $secret  = Metabase::User::Secret->from_struct( $id_pair->[1] );

my $args = {
  profile => $profile,
  secret  => $secret,
  uri     => 'http://metabase.example.com/',
};

my $client = new_ok( 'Metabase::Client::Simple', [ $args ] );

is( $client->_ua->agent, "Metabase::Client::Simple/$ver " . $client->_ua->_agent,
  "UA agent string set correctly"
);

#--------------------------------------------------------------------------#
# No trailing slash
#--------------------------------------------------------------------------#

$args->{uri} = 'http://metabase.example.com',
$client = new_ok( 'Metabase::Client::Simple', [ $args ] );
is( $client->uri, 'http://metabase.example.com/', "Trailing slash added" );

#--------------------------------------------------------------------------#-
# Bad scheme
#--------------------------------------------------------------------------#

$args->{uri} = 'fake://metabase.example.com/';
eval { Metabase::Client::Simple->new( $args ) };
like( $@, qr/Scheme 'fake' is not supported by your LWP::UserAgent/,
  "Bad scheme causes new() to die"
);