use lib qw(lib t/lib);
use Test::More;
use Net::Braintree;
use Net::Braintree::TestHelper;

subtest "validate params" => sub {
  should_throw("ArgumentError", sub { Net::Braintree::CreditCard->create({check_it => "out"}) }) ;
};

subtest "builds attributes from build args" => sub {
  my $cc = Net::Braintree::CreditCard->new(bin => "123456", last_4 => "7890");

  is $cc->bin, "123456";
  is $cc->last_4, "7890";
};

subtest "instance methods" => sub {
  my $cc = Net::Braintree::CreditCard->new(bin => "123456", last_4 => "7890", default => "0");
  is $cc->masked_number, "123456******7890";
  not_ok $cc->is_default;

  $default = Net::Braintree::CreditCard->new(default => 1);
  ok $default->is_default;
};

subtest "throws error if find is passed a blank/empty string" => sub {
  should_throw("NotFoundError", sub { Net::Braintree::CreditCard->find("") });
  should_throw("NotFoundError", sub { Net::Braintree::CreditCard->find("  ") });
};

done_testing();
