#!/usr/bin/perl
use Test::WWW::Mechanize::CGIApp;
# use HTML::TreeBuilder;
use Data::Dumper;
use Data::Printer;
use strict;
use warnings;
use Test::More tests => 39; # use Test::More 'no_plan';
=begin tests:
1)
=cut
BEGIN {
require 't/test-lib.pl';
}
my $mech = get_mech();
do_login();
my $dbh;
eval {
$dbh = get_dbh() or die 'no database handle recieved from get_dbh';
};
warn $@ if $@;
# need to drop & re-create following tables:
foreach ( qw/diagnoses diagnostic_categories/ ) {
drop_and_recreate($_);
}
$mech->get_ok('/config/diagnoses'); # print_and_exit();
$mech->content_contains(
get_messages('admin')->{no_diagnostic_categories},
'error generated due to no diagnostic categories defined',
);
$mech->get_ok('/config/diagnostic-categories'); # print_and_exit();
### check title:
$mech->content_contains(
'Admin » Diagnostic Categories',
'title matches',
); # print_and_exit();
# add 3 terms:
{
my $description = 'B-lymphoproliferative';
$mech->field('description', $description);
$mech->submit_form(); # print_and_exit();
### check section found:
$mech->content_contains(
qq!value="$description"!,
'new entry value correct',
); # print_and_exit();
}
{
my $description = 'Myelodysplastic';
$mech->field('description', $description);
$mech->submit_form(); # print_and_exit();
### check section found:
$mech->content_contains(
qq!value="$description"!,
'new entry value correct',
); # print_and_exit();
}
{
my $description = 'T-lymphoproliferative';
$mech->field('description', $description);
$mech->submit_form(); # print_and_exit();
### check section found:
$mech->content_contains(
qq!value="$description"!,
'new entry value correct',
); # print_and_exit();
}
# edit 2nd entry:
$mech->get_ok('/config/diagnostic-categories/edit/2'); # print_and_exit();
{
my $old_term = 'Myelodysplastic';
my $new_term = 'Myeloproliferative';
$mech->field('description', $new_term);
$mech->field('category_type', 'main');
$mech->submit_form(); # print_and_exit();
lacks_dfv_errors();
### check section found:
$mech->content_contains(
qq!value="$new_term"!,
'new entry value correct',
); # print_and_exit();
### check section found:
$mech->content_lacks(
qq!value="$old_term"!,
'previous entry value not detected',
); # print_and_exit();
}
$mech->get_ok('/config/diagnoses'); # print_and_exit();
### check title:
$mech->content_contains(
'Admin » Diagnoses',
'title matches',
); # print_and_exit();
# add new diagnostic terms:
{ # mis-spell name for later correction:
my $name = 'Mantle cel lymphoma';
my $icdo3 = '9673/3';
my $diagnostic_category_id = 1;
$mech->submit_form(
fields => {
name => $name,
icdo3 => $icdo3,
diagnostic_category_id => $diagnostic_category_id,
new_labtests => 'no',
}
); # print_and_exit();
### check section found:
$mech->content_contains(
qq!name="icdo3" value="$icdo3"!,
'new entry value correct',
); # print_and_exit();
$mech->content_contains(
qq!name="name" value="$name"!,
'new entry value correct',
); # print_and_exit();
$mech->content_contains(
qq!value="B-lymphoproliferative"!,
'new entry value correct',
); # print_and_exit();
}
{
my $name = 'Systemic mastocytosis';
my $icdo3 = '9741/3';
# 'forget' to select diagnostic_category:
$mech->submit_form(
fields => {
new_labtests => 'no',
name => $name,
icdo3 => $icdo3,
# diagnostic_category_id => undef, # can't submit empty value !!
}
); # print_and_exit();
### check form validation failed:
has_dfv_errors();
# select incorrect diagnostic_category:
my $diagnostic_category_id = 3;
$mech->field('diagnostic_category_id', $diagnostic_category_id);
$mech->submit_form(); # print_and_exit();
### check section found:
$mech->content_contains(
qq!name="icdo3" value="$icdo3"!,
'new entry value correct',
); # print_and_exit();
$mech->content_contains(
qq!name="name" value="$name"!,
'new entry value correct',
); # print_and_exit();
# incorrect - mistake in diagnostic category:
$mech->content_lacks(
qq!value="Myeloproliferative"!,
'OK: expected diagnostic category value not present (yet)',
); # print_and_exit();
$mech->content_contains(
qq!value="T-lymphoproliferative"!,
'OK: incorrect diagnostic category value detected',
); # print_and_exit();
}
{
# edit previously incorrect diagnostic category:
$mech->follow_link(text => 'Edit', n => 2 ); # print_and_exit();
$mech->field('diagnostic_category_id', 2);
$mech->submit_form(); # print_and_exit();
# check for corrected mistake in diagnostic category:
$mech->content_contains(
qq!value="Myeloproliferative"!,
'OK: expected diagnostic category value detected',
); # print_and_exit();
$mech->content_lacks(
qq!value="T-lymphoproliferative"!,
'OK: incorrect diagnostic category value missing',
); # print_and_exit();
}
# edit incorrect spelling on name in 1st entry:
{
$mech->follow_link(text => 'Edit', n => 1 ); # print_and_exit();
# check for incorrect diagnosis name:
$mech->content_contains(
qq!value="Mantle cel lymphoma"!,
'OK: incorrect diagnosis name detected',
); # print_and_exit();
$mech->field('name', 'Mantle cell lymphoma');
$mech->submit_form(); # print_and_exit();
# check for corrected diagnosis name:
$mech->content_contains(
qq!value="Mantle cell lymphoma"!,
'OK: correct diagnosis name detected',
); # print_and_exit();
# check for absence of corrected diagnosis name:
$mech->content_lacks(
qq!value="Mantle cel lymphoma"!,
'OK: incorrect diagnosis name missing',
); # print_and_exit();
}
# inactivate 1st entry:
{
# 1st check for absence of inactive record:
$mech->content_lacks(
qq!<option value="no" selected>!,
'OK: inactive record detected',
); # print_and_exit();
$mech->follow_link(text => 'Edit', n => 1 ); # print_and_exit();
# check for correct entry:
$mech->content_contains(
qq!value="Mantle cell lymphoma"!,
'OK: correct entry loaded',
); # print_and_exit();
$mech->field('active', 'No');
$mech->submit_form(); # print_and_exit();
# now check for presence of inactive flag (not specific to this records, but there's only 2):
$mech->content_contains(
qq!<option value="no" selected>!,
'OK: inactive record detected',
); # print_and_exit();
}
# create new diagnostic term using 3rd diagnostic category:
{
$mech->submit_form(
fields => {
new_labtests => 'no',
name => 'Mycosis fungoides',
icdo3 => '9700/3',
diagnostic_category_id => 3,
}
); # print_and_exit();
# just check for all 3 diagnostic terms:
my @terms = ( 'Mycosis fungoides', 'Mantle cell lymphoma', 'Systemic mastocytosis' );
foreach (@terms) {
$mech->content_contains(
qq!value="$_"!,
'OK: diagnostic term detected',
); # print_and_exit();
}
}
#### auto redirect to labtests ##########
# create new diagnostic term without setting new_labtests field:
{
my $diagName ='test term gq 1';
$mech->submit_form(
fields => {
name => $diagName,
icdo3 => '9700/3',
diagnostic_category_id => 3,
new_labtests => undef, # now a required field
}
); # print_and_exit();
### check form validation failed:
has_dfv_errors();
$mech->submit_form(
fields => {
new_labtests => 'yes',
name => $diagName,
icdo3 => '9700/3',
diagnostic_category_id => 3,
}
); # print_and_exit();
### check title:
$mech->content_contains(
'Admin » Diagnosis New Lab Tests',
'title matches - redirect worked',
); # print_and_exit();
$mech->content_contains(
$diagName,
'new diagnostic term found',
); # print_and_exit();
}
# do_logout(); logout link not available for admin function