#!/usr/bin/perl use Test::WWW::Mechanize::CGIApp; # use HTML::TreeBuilder; use Data::Dumper; use strict; use warnings; use Test::More tests => 85; # use Test::More 'no_plan'; =begin: tests: 1) add new parent_organisations - test all required fields 2) edit new parent_organisations - parent_code & description 3) add new hospital source - test all required fields 4) submit complete data 5) edit new hospital display_name 6) edit new hospital org_code to unique value 7) submit new hospital - duplicate org_code 8) correct org_code to unique & resubmit 9) add new practice - test all required fields 10) submit complete data =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/referral_sources parent_organisations/ ) { drop_and_recreate($_); } # new parent_organisation for hospital: $mech->get_ok('/config/parent-organisations'); # print_and_exit(); { my %new_organisation = ( parent_code => 'ABC', description => 'NEWTON NHS TRUST', referral_type => 'hospital', ); # test each required field: test_missing_required(\%new_organisation); # submit complete form: $mech->form_name('parent-organisations'); $mech->submit_form(fields => \%new_organisation); # print_and_exit(); # no errors: lacks_dfv_errors(); # check record create success: $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record created', ); # print_and_exit(); ### check source found: retrieve_all_records('parent_organisation_search','description'); # print_and_exit(); foreach (keys %new_organisation) { $mech->content_contains( qq!value="$new_organisation{$_}"!, 'OK: new source value detected', ); } # print_and_exit(); } # new parent_organisation for practice: $mech->get_ok('/config/parent-organisations'); # print_and_exit(); { my %new_organisation = ( parent_code => 'B12344', description => 'OLD SURGERY, NT1 1TN', referral_type => 'practice', ); $mech->submit_form(fields => \%new_organisation); # print_and_exit(); lacks_dfv_errors(); $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record created', ); # print_and_exit(); ### check source found: retrieve_all_records('parent_organisation_search','description'); # print_and_exit(); foreach (keys %new_organisation) { $mech->content_contains( qq!value="$new_organisation{$_}"!, 'OK: new source value detected', ); } # print_and_exit(); } # edit new practice parent_organisation: $mech->get_ok('/config/parent-organisations/edit/2'); # print_and_exit(); { my $new_value = 'B12345'; $mech->field(parent_code => $new_value); $mech->submit_form(); # print_and_exit(); lacks_dfv_errors(); # edit success detected: $mech->content_contains( get_messages('action')->{edit_success}, 'OK: new value detected' ); retrieve_all_records('parent_organisation_search','description'); # print_and_exit(); # new value is detected: $mech->content_contains( $new_value, 'OK: new value detected' ); # old value not detected: $mech->content_lacks( 'B12344', 'OK: old value not detected' ); # print_and_exit(); } # edit new hospital parent_organisation: $mech->get_ok('/config/parent-organisations/edit/1'); # print_and_exit(); { my $new_value = 'NEWTOWN NHS TRUST'; $mech->field(description => $new_value); $mech->submit_form(); # print_and_exit(); lacks_dfv_errors(); # edit success detected: $mech->content_contains( get_messages('action')->{edit_success}, 'OK: new value detected' ); retrieve_all_records('parent_organisation_search','description'); # print_and_exit(); # new value is detected: $mech->content_contains( $new_value, 'OK: new value detected' ); # old value not detected: $mech->content_lacks( 'NEWTON NHS TRUST', 'OK: old value not detected' ); # print_and_exit(); } SKIP: { skip('TODO: test creation of duplicate parent_code & description fields',1); } $mech->get_ok('/config/referral-sources'); # print_and_exit(); ### check title: $mech->content_contains( 'Admin » Referral Sources', 'title matches', ); # print_and_exit(); # add new hospital source: { my %new_hospital = ( referral_type => 'hospital', organisation_code => 'ABC01', display_name => 'Newtown General Infirmary', is_active => 'yes', parent_organisation_id => 1, ); # test each required field: test_missing_required(\%new_hospital); # submit complete form: $mech->form_name('referral_source'); $mech->submit_form(fields => \%new_hospital); # print_and_exit(); # no errors: lacks_dfv_errors(); # check record create success: $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record created', ); # print_and_exit(); ### check source found: retrieve_all_records('find_referral_source','display_name'); # print_and_exit(); foreach (qw/organisation_code display_name/) { $mech->content_contains( qq!value="$new_hospital{$_}"!, 'OK: new source value detected', ); } # print_and_exit(); } # edit new hospital display_name: $mech->get_ok('/config/referral-sources/edit/1'); # print_and_exit(); { $mech->content_contains( 'Edit Referral Source Details', 'OK: edit page loaded', ); # print_and_exit(); # trivial name change: my $new = 'Newtown Northern'; $mech->field('display_name' => $new); $mech->submit_form; # print_and_exit(); # check no dfv error: lacks_dfv_errors(); # edit success detected: $mech->content_contains( get_messages('action')->{edit_success}, 'OK: new value detected' ); retrieve_all_records('find_referral_source','display_name'); # print_and_exit(); $mech->content_contains( $new, 'OK: new display name detected', ); # print_and_exit(); $mech->content_lacks( 'Newtown General Infirmary', 'OK: old value not detected', ); # print_and_exit(); } # edit new hospital org_code: $mech->get_ok('/config/referral-sources/edit/1'); # print_and_exit(); { my $new = 'ABC02'; $mech->field('organisation_code' => $new); $mech->submit_form(); # print_and_exit(); # no errors: lacks_dfv_errors(); # edit success detected: $mech->content_contains( get_messages('action')->{edit_success}, 'OK: new value detected' ); retrieve_all_records('find_referral_source','display_name'); # print_and_exit(); $mech->content_contains( $new, 'OK: new organisation_code name detected', ); # print_and_exit(); $mech->content_lacks( 'ABC01', 'OK: old value not detected', ); # print_and_exit(); } # duplicate org_code: $mech->get_ok('/config/referral-sources'); # print_and_exit(); { my $new_source_name = 'Newtown General Infirmary'; my %source = ( organisation_code => 'ABC02', # duplicate display_name => $new_source_name, referral_type => 'hospital', is_active => 'yes', parent_organisation_id => 1, ); $mech->submit_form(fields => \%source); # print_and_exit(); # check we have dfv error: has_dfv_errors(); # correct org_code to unique: $mech->field(organisation_code => 'ABC03'); $mech->submit_form(); # print_and_exit(); lacks_dfv_errors(); # check record create success: $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record created', ); # print_and_exit(); # retrieve all records: retrieve_all_records('find_referral_source','display_name'); # print_and_exit(); # check both hospitals detected: foreach ( $new_source_name, 'Newtown Northern' ) { $mech->content_contains( $_, 'OK: location name detected', ); } # print_and_exit(); } # add new practice: { $mech->get_ok('/config/referral-sources'); # print_and_exit(); my %new_practice = ( referral_type => 'practice', organisation_code => 'B54321', practice_name => 'New Surgery', practice_address => 'New Road, Newtown', practice_zip => 'NT1 1TN', is_active => 'yes', ); # test each required field: test_missing_required(\%new_practice); # submit complete form: $mech->submit_form(fields => \%new_practice); # print_and_exit(); # check we not not have dfv error: lacks_dfv_errors(); # check record create success: $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record created', ); # print_and_exit(); # retrieve all records: retrieve_all_records('find_referral_source','display_name'); # print_and_exit(); ### check practice details found: foreach (qw/organisation_code practice_name practice_address practice_zip/) { $mech->content_contains( $new_practice{$_}, 'OK: new source value detected', ); } # print_content(); } # do_logout(); logout link not available for admin function