#!/usr/bin/perl
use Test::WWW::Mechanize::CGIApp;
use strict;
use warnings;
use Test::More tests => 19;
# use Test::More 'no_plan';
=begin: tests:
=cut
BEGIN {
require 't/test-lib.pl';
}
my $mech = get_mech();
my $dbh;
eval {
$dbh = get_dbh() or die 'no database handle recieved from get_dbh';
};
warn $@ if $@;
do_login();
my $dbix = get_dbix();
{ # register lab_test # 44:
my %args = (
id => 44, # to match config file
test_name => 'rq_cml',
field_label => 'CML RQ',
lab_section_id => 3,
test_type => 'panel',
has_results => 'no',
);
$dbix->insert( 'lab_tests', \%args );
}
{ # register lab_test # 263:
my %args = (
id => 263, # to match config file
test_name => 'rna_extraction',
field_label => 'RNA extraction',
lab_section_id => 3,
test_type => 'test',
has_results => 'no',
);
$dbix->insert( 'lab_tests', \%args );
}
{ # lab_test_sample_type:
my $sample_type_ids = $dbix->select('lab_section_sample_type',
['sample_type_id'], { lab_section_id => 3 } )->flat; # warn Dumper $sample_type_ids;
for my $id (44,263) {
$dbix->insert('lab_test_sample_type',
{ lab_test_id => $id, sample_type_id => $_ }) for @$sample_type_ids;
}
}
{ # screen:
my %args = (
description => 'Follow-up CML (PB)',
category_id => 1,
active => 'yes',
);
$dbix->insert( 'screens', \%args );
}
{ # screen_lab_tests:
for (44, 263) {
my %args = (
screen_id => 3,
lab_test_id => $_,
);
$dbix->insert( 'screen_lab_test', \%args );
}
}
{ # diagnosis:
my %args = (
name => 'Chronic myeloid leukaemia - major molecular response',
diagnostic_category_id => 1,
icdo3 => '9875/3',
active => 'yes',
);
$dbix->insert( 'diagnoses', \%args );
}
{ # change specimen type to PB for requests 1 & 2 to allow auto-report:
$dbix->delete('request_specimen', { specimen_id => 4} ); # delete BMAT
$dbix->update('request_specimen', { specimen_id => 1 }, { specimen_id => 2 });
}
{ # change year of requests 1 & 2 to match xl data file:
$dbix->update('requests', { year => 2012 });
}
# screen requests 1 & 2 the quick way:
$mech->get_ok('/screen/do_initial_screen/1?screen_id=3;option_id=1');
$mech->get_ok('/screen/do_initial_screen/2?screen_id=3;option_id=1');
$mech->get_ok( '/data-import/bcr_abl' );
$mech->submit_form(
fields => { source => './t/bcr-abl.xls' }
); # print_and_exit();
{ # warn $mech->content(); exit;
$mech->content_contains(
'1/12::1::45035::9::0.012', 'OK: calculated result [1] found', # adjusted for IS
) or diag('Will fail here if there is no molecular_section_name key in config/settings/leeds.txt');
$mech->content_contains(
'2/12::2::42064::0::0', 'OK: calculated result [2] found',
); # print_and_exit();
}
{ # submit both results:
$mech->form_name('bcr_abl');
$mech->tick('result', '1/12::1::45035::9::0.012', 1); # adjusted for IS
$mech->tick('result', '2/12::2::42064::0::0', 1);
$mech->submit(); # print_and_exit();
}
{
$mech->has_tag_like(
td => 'BCR-ABL transcription number = 9',
'OK: calculated result found',
);
$mech->has_tag_like(
td => 'BCR-ABL transcription number = 0',
'OK: calculated result found',
);
}
{ # get history:
$mech->get_ok('/history/=/1'); # print_and_exit();
$mech->has_tag_like(
td => 'new Molecular result summary',
'OK: expected history found',
);
$mech->has_tag_like(
td => 'set CML RQ status to complete',
'OK: expected history found',
);
$mech->has_tag_like(
td => 'reported',
'OK: expected history found',
); # print_and_exit();
$mech->get_ok('/history/=/2'); # print_and_exit();
$mech->has_tag_like(
td => 'new Molecular result summary',
'OK: expected history found',
);
$mech->has_tag_like(
td => 'set CML RQ status to complete',
'OK: expected history found',
);
$mech->has_tag_like(
td => 'reported',
'OK: expected history found',
);
}