#!/usr/bin/perl
use strict;
use Test::More 'no_plan';
use_ok( 'Brick::General' );
use_ok( 'Brick::Bucket' );
use lib qw( t/lib );
use_ok( 'Mock::Bucket' );
my $bucket = Mock::Bucket->new;
isa_ok( $bucket, 'Mock::Bucket' );
isa_ok( $bucket, Mock::Bucket->bucket_class );
my $sub = $bucket->_is_defined(
{
field => 'one',
}
);
isa_ok( $sub, ref sub {}, "_defined_fields returns a code ref" );
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Field is there, and true
{
my $input = { one => 1 };
my $result = eval { $sub->( $input ) };
ok( defined $result, "Result succeeds for defined field, true" );
diag( "Eval error: $@" ) unless defined $result;
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Field is there, and false
{
my $input = { one => 0 };
my $result = eval { $sub->( $input ) };
ok( defined $result, "Result succeeds for defined field, false" );
diag( "Eval error: $@" ) unless defined $result;
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# An undef field triggers die
{
my $input = { one => undef };
my $result = eval { $sub->( $input ) };
my $at = $@;
print STDERR Data::Dumper->Dump( [$at], [qw(at)] ) if $ENV{DEBUG};
ok( ! defined $result, "Result fails (as expected)" );
isa_ok( $at, ref {}, "death returns a hash ref in \$@" );
ok( exists $at->{handler}, "hash ref has a 'handler' key" );
ok( exists $at->{message}, "hash ref has a 'message' key" );
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #