App-Dochazka-REST
view release on metacpan or search on metacpan
my $obj = shift;
my $saved_context = $obj->context;
$obj->reset;
$obj->context( $saved_context );
return;
}
note( $note = 'initialize, connect to database, and set up a testing plan' );
$log->info( "=== $note" );
initialize_regression_test();
note( $note = 'start with a clean slate' );
$log->info( "=== $note" );
$status = delete_all_attendance_data();
BAIL_OUT(0) unless $status->ok;
note( $note = 'tempintvls table should be empty' );
$log->info( "=== $note" );
if ( 0 != noof( $dbix_conn, 'tempintvls') ) {
diag( "tempintvls table is not empty; bailing out!" );
BAIL_OUT(0);
}
note( $note = 'make a testing fillup object' );
$log->info( "=== $note" );
my $fo = bless {}, 'App::Dochazka::REST::Fillup';
note( $note = 'test accessors on empty object' );
$log->info( "=== $note" );
{
no strict 'refs';
map {
is( $fo->$_, undef, "$_ property is undef" );
} keys %App::Dochazka::REST::Fillup::attr;
}
note( $note = 'populate() sets tiid property' );
$log->info( "=== $note" );
$fo->populate();
ok( $fo->tiid > 0 );
note( $note = 'accessors can be used to set values - non-pathological' );
$log->info( "=== $note" );
{
my %attr_test = (
act_obj => App::Dochazka::REST::Model::Activity->spawn,
constructor_status => $CELL->status_ok,
context => {},
date_list => [],
dry_run => 0,
emp_obj => App::Dochazka::REST::Model::Employee->spawn,
intervals => [],
long_desc => '',
remark => '',
tiid => '',
tsrange => {},
tsranges => [],
);
map
{
my $throwaway = $attr_test{ $_ };
$fo->$_( $throwaway );
is( $fo->$_, $throwaway );
} keys %attr_test;
}
note( $note = 'further test inherited accessors pathological' );
$log->info( "=== $note" );
{
my %attr_test = (
act_obj => '',
constructor_status => '',
context => [],
date_list => {},
dry_run => [],
emp_obj => '',
intervals => {},
long_desc => {},
remark => {},
tiid => {},
tsrange => '',
tsranges => '',
);
map
{
my $throwaway = $attr_test{ $_ };
like(
exception { $fo->$_( $throwaway ) },
qr/which is not one of the allowed types:/
);
} keys %attr_test;
}
note( $note = 'further test selected accessors non-pathological' );
$log->info( "=== $note" );
my $context = { 'heaven' => 'angel' };
$fo->context( $context );
is( $fo->context, $context );
my $emp = App::Dochazka::REST::Model::Employee->spawn;
$fo->emp_obj( $emp );
is( $fo->emp_obj, $emp );
my $act = App::Dochazka::REST::Model::Activity->spawn;
$fo->act_obj( $act );
is( $fo->act_obj, $act );
my $dl = [ '2016-01-01', '2016-01-02', '2016-01-03' ];
$fo->date_list( $dl );
is( $fo->date_list, $dl );
$status = $CELL->status_ok( 'DOCHAZKA_ALL_GREEN' );
$fo->constructor_status( $status );
is( $fo->constructor_status, $status );
note( $note = 'further test selected accessors pathological' );
$log->info( "=== $note" );
like(
exception { $fo->constructor_status( App::Dochazka::REST::Model::Activity->spawn ) },
qr/was not a.*it is a/
);
like(
exception { $fo->act_obj( $CELL->status_ok ) },
qr/was not a.*it is a/
);
like(
exception { $fo->emp_obj( $CELL->status_ok ) },
qr/was not a.*it is a/
);
note( $note = "vet empty context" );
$log->info( "=== $note" );
$status = $fo->_vet_context();
ok( $status->not_ok );
note( $note = "populate context attribute" );
$log->info( "=== $note" );
$status = $fo->_vet_context( context => $faux_context );
ok( $status->ok );
note( $note = "context should now be OK" );
$log->info( "=== $note" );
ok( $fo->context );
is( ref( $fo->context ), 'HASH' );
isa_ok( $fo->context->{dbix_conn}, 'DBIx::Connector' );
note( $note = 'quickly test canon_to_ymd' );
( run in 0.543 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )