The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use warnings;
use strict;
use utf8;
use Business::CPI::Base::Status;
use Test::Exception;
use Test::More;

my $status;

throws_ok {
    $status = Business::CPI::Base::Status->new();
} qr/missing/i, q{it's missing required attributes};

throws_ok {
    $status = Business::CPI::Base::Status->new(is_success => 0, is_in_progress => 0, is_reverted => 0);
} qr/missing.*gateway_name/i, q{it's missing required gateway_name};

throws_ok {
    $status = Business::CPI::Base::Status->new(is_success => 0, is_in_progress => 0, gateway_name => 'xxx');
} qr/missing.*is_reverted/i, q{it's missing required is_reverted};

throws_ok {
    $status = Business::CPI::Base::Status->new(is_success => 0, is_reverted => 0, gateway_name => 'xxx');
} qr/missing.*is_in_progress/i, q{it's missing required is_in_progress};

throws_ok {
    $status = Business::CPI::Base::Status->new(is_in_progress => 0, is_reverted => 0, gateway_name => 'xxx');
} qr/missing.*is_success/i, q{it's missing required is_success};

lives_ok {
    $status = Business::CPI::Base::Status->new(
        is_success     => 1,
        is_in_progress => 0,
        is_reverted    => 0,
        gateway_name   => 'xxx'
    );
} q{it lives!};

is( $status->is_success,     1,     q{success is 1} );
is( $status->is_in_progress, 0,     q{in_progress is 0} );
is( $status->is_reverted,    0,     q{reverted is 0} );
is( $status->gateway_name,   'xxx', q{gateway_name is xxx} );

done_testing;