RSS Git Download  Clone
Raw Blame History
use Test::More;

use Reporter::Class;

require_ok( 'Reporter::Test' ); # Data::Printer, Mooo, etc

use Reporter::Test;
my $t = Reporter::Test->new;
use Data::Printer; # ddp %ENV;
my $invalid_lab_number = { lab_number => 200,     };
my $valid_lab_number   = { lab_number => '200/15' };

my %report = (
    status => 'new', specimen_quality => 'poor', diagnosis_id => 1,
);

my $app_validator   = $t->app->validator; # HTML::FormHandler
my $model_validator = $t->app->model->validator; # DFV

{ # invalid lab number (Data::FormValidator):
    my $res = $model_validator->validate( search => $invalid_lab_number ); # p $res;
    is( $res->{failed}, 1, 'OK: lab number validation failed' );
}

{ # valid lab number (Data::FormValidator):
    my $res = $model_validator->validate( search => $valid_lab_number ); # p $res;
    is( $res->{success}, 1, 'OK: lab number validation passed');
}

{ # invalid lab number (HTML::FormHandler):
    my $res = $app_validator->validate( search_form => $invalid_lab_number ); # p $res;
    is( $res->{failed}, 1, 'OK: lab number validation failed' );
}

{ # valid lab number (HTML::FormHandler):
    my $res = $app_validator->validate( search_form => $valid_lab_number ); # p $res;
    is( $res->{success}, 1, 'OK: lab number validation passed' );
}

{ # valid report form (HTML::FormHandler):
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    is( $res->{success}, 1, 'OK: report form validation passed');
}

{ # invalid report form (HTML::FormHandler):
    local $report{diagnosis_id} = undef;
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    is( $res->{failed}, 1, 'OK: report form validation failed');
}

{ # valid report form (Data::FormValidator):
    my $res = $model_validator->validate( report => \%report ); # p $res;
    is( $res->{success}, 1, 'OK: report form validation passed');
}

{ # invalid report form (Data::FormValidator):
    local $report{diagnosis_id} = undef;
    my $res = $model_validator->validate( report => \%report ); # p $res;
    is( $res->{failed}, 1, 'OK: report form validation failed');
}

{ # non-validated params ignored (HTML::FormHandler):
    local $report{dog} = 1;
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    isnt( $res->{valid}->{dog}, 1, 'OK: non-validated param ignored' );
}

{ # non-validated params ignored (Data::FormValidator):
    local $report{cat} = 1;
    my $res = $model_validator->validate( report => \%report ); # p $res;
    isnt( $res->{valid}->{cat}, 1, 'OK: non-validated param ignored' );
}

{ # invalid report form (Data::FormValidator):
    local $report{_require_biopsy_details} = 1;
    my $res = $model_validator->validate( report => \%report ); # p $res;
    is( $res->{failed}, 1, 'OK: report form validation failed');
    
}

{ # invalid report form (HTML::FormHandler):
    local $report{_require_biopsy_details} = 1;
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    is( $res->{failed}, 1, 'OK: report form validation failed');
}

{ # valid report form (Data::FormValidator):
    local $report{_require_biopsy_details} = 1;
    local $report{biopsy_site} = 'biopsy details';
    my $res = $model_validator->validate( report => \%report ); # p $res;
    is( $res->{success}, 1, 'OK: report form validation passed');
}

{ # valid report form (HTML::FormHandler):
    local $report{_require_biopsy_details} = 1;
    local $report{biopsy_site} = 'biopsy details';
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    is( $res->{success}, 1, 'OK: report form validation passed');
}

{ # invalid report form (Data::FormValidator):
    local $report{_require_gross_description} = 1;
    my $res = $model_validator->validate( report => \%report ); # p $res;
    is( $res->{failed}, 1, 'OK: report form validation failed');    
}

{ # invalid report form (HTML::FormHandler):
    local $report{_require_gross_description} = 1;
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    is( $res->{failed}, 1, 'OK: report form validation failed');
}

{ # valid report form (Data::FormValidator):
    local $report{_require_gross_description} = 1;
    local $report{gross_description} = 'gross description';
    my $res = $model_validator->validate( report => \%report ); # p $res;
    is( $res->{success}, 1, 'OK: report form validation passed');
}

{ # valid report form (HTML::FormHandler):
    local $report{_require_gross_description} = 1;
    local $report{gross_description} = 'gross description';
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    is( $res->{success}, 1, 'OK: report form validation passed');
}

{ # optional field (HTML::FormHandler):
    local $report{morphology} = 'morphological description';
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    is( $res->{valid}->{morphology}, $report{morphology}, 'OK: optional field present');
}

{ # optional field (Data::FormValidator):
    local $report{comment} = 'comment text block';
    my $res = $model_validator->validate( report => \%report ); # p $res;
    is( $res->{valid}->{comment}, $report{comment}, 'OK: optional field present');
}

{ # invalid field (HTML::FormHandler):
    local $report{secondary_diagnosis_id} = 'word';
    my $res = $app_validator->validate( report_form => \%report ); # p $res;
    is( $res->{failed}, 1, 'OK: report form validation failed');
}

SKIP:
{ # valid field (Data::FormValidator):
    skip('DFV profile needs constraint_methods',1);
    local $report{secondary_diagnosis_id} = 'word';
    my $res = $model_validator->validate( report => \%report ); # p $res;
    is( $res->{failed}, 1, 'OK: report form validation failed');
}

done_testing(23);