#!/usr/bin/perl use Test::WWW::Mechanize::CGIApp; use strict; use warnings; use DateTime; use POSIX; use Test::More tests => 80; # use Test::More 'no_plan'; BEGIN { require 't/test-lib.pl'; use DateTime; DateTime->DefaultLocale('en_GB'); } my @data_fields = ( qw/GREEN Alan 01.Feb.1940 1011/, '111 111 1111', 'BMAT, PB' ); my $mech = get_mech(); my $dbh; eval { $dbh = get_dbh() or die 'no database handle recieved from get_dbh'; }; warn $@ if $@; #drop_and_recreate('requests'); do_login(); # load main summary page for record #1: $mech->get_ok('/search'); # print_and_exit(); { $mech->content_contains( '» Record Search', 'OK: initial summary page loaded', ); # submit empty form: $mech->submit_form(); # print_and_exit(); $mech->has_tag_like( p => get_messages('search')->{empty_submission}, 'OK: expected empty form submission message' ); # print_and_exit(); } # search on lab_number: { $mech->submit_form( fields => { lab_number => 1, } ); # print_and_exit(); do_patient_fields('lab_number'); } # search on last_name: $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { last_name => lc $data_fields[0], } ); # print_and_exit(); do_patient_fields('last name'); } # search on first_name: $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { first_name => $data_fields[1], } ); # print_and_exit(); do_patient_fields('first name'); } # search on nhs_number: $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { nhs_number => $data_fields[4], } ); # print_and_exit(); do_patient_fields('nhs number'); } # search on dob: $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { day => 1, month => 2, year => 1940, } ); # print_and_exit(); do_patient_fields('dob'); } # search on unit_number: $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { unit_number => $data_fields[3], } ); # print_and_exit(); do_patient_fields('unit number'); } # search on location (id): $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { referral_source_id => 2, } ); # print_and_exit(); do_patient_fields('referral source'); } # search on referrer: $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { referrer_name => 'Black', } ); # print_and_exit(); do_patient_fields('referrer name'); } # search on specimen: $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { specimen_code => 'BMAT', # can't do multi-specimen search } ); # print_and_exit(); do_patient_fields('specimen code'); } # search on trial: $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); { $mech->submit_form( fields => { trial_id => 1, } ); # print_and_exit(); do_patient_fields('clinical trial'); } # test sort_by/sort_order: SKIP: { skip('TODO: how to test display order',1); $mech->follow_link( text => 'Search', n => 1 ); # print_and_exit(); # search on last_name: $mech->submit_form( fields => { last_name => 'green', } ); # print_and_exit(); } do_logout(); sub do_patient_fields { my $search_field = shift; my $i = 0; my $yr = DateTime->now->strftime('%y'); my $output = "OK: data field [%s] for search on $search_field"; foreach (@data_fields) { $mech->has_tag_like( td => qr($_), sprintf $output, ++$i, ); } $mech->has_tag_like( a => qr(\w1/$yr), sprintf $output, ++$i, ); }