#!/usr/bin/perl
use Test::WWW::Mechanize::CGIApp;
use strict;
use warnings;
use DateTime;
use POSIX;
use Test::More tests => 20; # use Test::More 'no_plan';
=begin # tests:
1) submit new (valid) test - missing description
2) submit new (valid) test
3) retrieve new test & set inactive
4) submit new test with duplicate sample_code
5) submit new test with invalid sample_code
6) submit new test with valid sample_code
7) retrieve new test and edit 'description' value
=cut
BEGIN {
require 't/test-lib.pl';
use DateTime;
DateTime->DefaultLocale('en_GB');
}
my $mech = get_mech();
my $dbh;
eval {
$dbh = get_dbh() or die 'no database handle recieved from get_dbh';
};
warn $@ if $@;
do_login();
$mech->get_ok('/config/specimens'); # print_and_exit();
$mech->content_contains(
'Admin » Specimens',
'OK: config specimens page loaded',
);
# submit new specimen - missing description:
{
$mech->submit_form(
fields => {
sample_code => 'LA', # not already in test_data.sql
}
); # print_and_exit();
has_missing();
$mech->submit_form(
fields => {
sample_code => 'LA',
description => 'lymph node aspirate',
}
); # print_and_exit();
has_missing();
$mech->submit_form(
fields => {
sample_code => 'LA',
description => 'lymph node aspirate',
sample_type_id => 1,
}
); # print_and_exit();
$mech->content_contains(
q!name="sample_code" value="LA"!,
'OK: sample_code present in form',
);
$mech->content_contains(
q!name="description" value="lymph node aspirate"!,
'OK: description present in form',
);
$mech->content_contains(
q!option value="yes" selected!,
'OK: specimen status default( active)',
); # print_and_exit();
}
# inactivate specimen:
{
$mech->follow_link( text => 'Edit', n => 1 ); # print_and_exit();
$mech->field('active', 'no');
$mech->submit(); # print_and_exit();
$mech->content_contains(
q!option value="no" selected!,
'OK: specimen status changed to inactivate',
); # print_and_exit();
}
# try duplicate code in new record:
{
$mech->get_ok('/config/specimens'); # print_and_exit();
$mech->submit_form(
fields => {
sample_code => 'BMA',
description => 'bone marrow aspirate',
},
); # print_and_exit();
### check duplicate found:
has_duplicate();
}
# try invalid sample_code
$mech->submit_form(
fields => {
sample_code => 'LF/U',
}
); # print_and_exit();
has_dfv_errors();
$mech->content_contains(
dfv_format('single_word'),
'OK: single word required',
); # print_and_exit();
# correct sample_code but incorrect description:
$mech->submit_form(
fields => {
sample_code => 'LFU', # not already in test_data.sql
description => 'lymph node biopsy, fixed', # <= wrong description
sample_type_id => [1, 2],
}
); # print_and_exit();
$mech->content_contains(
q!name="sample_code" value="LFU"!,
'OK: sample_code present in form',
);
$mech->content_contains(
q!name="description" value="lymph node biopsy, fixed"!,
'OK: description present in form',
); # print_and_exit();
# edit mis-spelled description:
$mech->follow_link( text => 'Edit', n => 4 ); # print_and_exit();
$mech->submit_form(
fields => {
description => 'lymph node biopsy, fixed & unfixed',
}
); # print_and_exit();
$mech->content_lacks(
q!name="description" value="lymph node biopsy, fixed"!,
'OK: old specimen description not present in form',
);
$mech->content_contains(
q!name="description" value="lymph node biopsy, fixed & unfixed"!,
'OK: new specimen description present in form',
); # print_and_exit();
# do_logout(); logout link not available for admin function