#!/usr/bin/perl
use Test::WWW::Mechanize::CGIApp;
use Test::Builder::Tester;
use Data::Dumper;
use strict;
use warnings;
use constant TESTS => 18;
use Test::More tests => TESTS;
# use Test::More 'no_plan';
=begin: tests:
=cut
BEGIN {
require 't/test-lib.pl';
}
my $mech = get_mech();
do_login();
my $dbh;
eval {
$dbh = get_dbh() or die 'no database handle received from get_dbh';
};
my $dbix = get_dbix();
{ # manually request test with associated linked lab-test:
# 3 new lab tests:
$dbix->insert('lab_tests', {
field_label => 'Test-1', lab_section_id => 1, test_type => 'test',
has_results => 'no', is_active => 'yes', test_name => 'test_1',
});
my $new = get_last_insert_id('lab_tests');
_do_lab_test_sample_type($new);
$dbix->insert('lab_tests', {
field_label => 'Linked-1', lab_section_id => 1, test_type => 'test',
has_results => 'no', is_active => 'yes', test_name => 'linked_1',
});
_do_linked_lab_test($new);
$dbix->insert('lab_tests', {
field_label => 'Linked-2', lab_section_id => 1, test_type => 'test',
has_results => 'no', is_active => 'yes', test_name => 'linked_2',
});
_do_linked_lab_test($new);
}
# screen request #1:
$mech->get_ok('/screen/do_initial_screen/1?screen_id=2;option_id=1'); # print_and_exit();
{
$mech->has_tag_like(
dt => qr(requested lab-tests),
'OK: screen success',
); # print_and_exit();
# check have requested test:
$mech->has_tag_like(
span => qr(PNH),
'OK: new requested test'
); # print_and_exit();
$mech->has_tag_like(
span => qr(\[pending\]),
'OK: new requested test'
); # print_and_exit();
# does not have linked tests:
for ('Linked-1','Linked-2') {
test_out( 'not ok 1 - foo' );
test_fail( +1 );
$mech->has_tag_like( span => qr($_), 'foo' );
test_test( "OK: no pending $_ lab-test" ); # print_and_exit();
}
}
# manually request Test-1 which auto-links Linked-1 & Linked-2:
$mech->get_ok('/result/=/1'); # print_and_exit();
{
$mech->form_name('flow_requests');
$mech->tick('test_id', 10, 1);
$mech->submit(); # print_and_exit();
# check have requested test:
for ('Test-1', 'Linked-1', 'Linked-2') {
$mech->has_tag_like(
span => qr($_),
"OK: new requested test $_"
); # print_and_exit();
}
}
$mech->get_ok('/history/=/1'); # print_and_exit();
{
my $i = 1;
$mech->has_tag_like(
td => qr(requested Test-1),
"OK: expected history found [$i]"
); # print_and_exit();
$i++;
for ('Linked-1', 'Linked-2') {
$mech->has_tag_like(
td => qr(requested linked test $_),
"OK: expected history found [$i]"
); # print_and_exit();
$i++;
}
}
sub _do_linked_lab_test {
my $id = shift;
my $new = get_last_insert_id('lab_tests');
$dbix->insert( 'linked_lab_test',
{ parent_test_id => $id, linked_test_id => $new });
_do_lab_test_sample_type($new);
}
sub _do_lab_test_sample_type {
my $id = shift;
$dbix->insert( 'lab_test_sample_type',
{ lab_test_id => $id, sample_type_id => 1 });
}