#!/usr/bin/perl use strict; use Test::More 'no_plan'; use_ok( 'Brick::Dates' ); 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 ); can_ok( $bucket, 'at_most_N_days_between' ); # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Trivial case # Specify start date # Specify end date # Specify number of days { my $sub = $bucket->at_most_N_days_between( { start_date => '20070205', end_date => '20070314', number_of_days => 60, } ); isa_ok( $sub, ref sub {} ); my $result = eval { $sub->( {} ) }; is( $result, 1, "Good date works" ); } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Specify start date # Specify end date field { my $sub = $bucket->at_most_N_days_between( { start_date => '20070101', end_date_field => 'last_date', number_of_days => 10, } ); isa_ok( $sub, ref sub {} ); # should work with near date { my $input = { last_date => 20070108, }; my $result = eval { $sub->( $input ) }; is( $result, 1, "Good date works" ); } # should fail with with far date { my $input = { last_date => 20080105, }; my $result = eval { $sub->( $input ) }; my $at = $@; 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" ); } # should fail with with past date TODO: { local $TODO = "End dates in the past aren't working"; my $input = { last_date => 20060201, }; my $result = eval { $sub->( $input ) }; my $at = $@; =pod 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" ); =cut } } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Specify end date # Specify start date field { my $sub = $bucket->at_most_N_days_between( { end_date => '20070101', start_date_field => 'first_date', number_of_days => 10, } ); isa_ok( $sub, ref sub {} ); # should work with near date { my $input = { first_date => 20061225, }; my $result = $sub->( $input ); } # should fail with with far date { my $input = { first_date => 20061215, }; my $result = eval { $sub->( $input ) }; my $at = $@; 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" ); } } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Specify start date field # Specify end date field { my $sub = $bucket->at_most_N_days_between( { end_date_field => 'last_date', start_date_field => 'first_date', number_of_days => 15, } ); isa_ok( $sub, ref sub {} ); # should work with near dates { my $input = { first_date => 20061225, last_date => 20070101 }; my $result = $sub->( $input ); } # should fail with with far date { my $input = { first_date => 20061201, last_date => 20070101 }; my $result = eval { $sub->( $input ) }; my $at = $@; 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" ); } =pod # should fail with with last date before start date { my $input = { first_date => 20070201, last_date => 20060101 }; my $result = eval { $sub->( $input ) }; my $at = $@; 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" ); } =cut }