#!/usr/bin/perl
use Test::WWW::Mechanize::CGIApp;
use strict;
use warnings;
use DateTime;
use POSIX;
use Test::More tests => 24;
# 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 $@;
foreach( qw// ) {
drop_and_recreate($_);
}
do_login();
# patient search finds 0 records:
{
$mech->get_ok('/register/patient_search?name=noexist'); # print_and_exit();
has_flash_message('info'); # print_and_exit();
$mech->get('/'); # print_and_exit();
lacks_flash_message('info'); # print_and_exit();
}
# new clinician:
{
$mech->get_ok('/config/clinicians'); # print_and_exit();
my %new = (
prefix => 'C',
national_code => 1234567,
surname => 'brown',
initials_1 => 'a',
initials_2 => 'b',
referral_source_id => 1,
hospital_department_code => 823,
);
#error:
$mech->submit_form(fields => \%new); # print_and_exit();
has_flash_message('warning'); # print_and_exit();
$mech->get('/'); # print_and_exit();
lacks_flash_message('warning'); # print_and_exit();
#error: # TODO - flash working but error message maybe wrong
$new{surname} = 'green'; # unique but duplicate national code
$mech->get('/config/clinicians');
$mech->submit_form(fields => \%new); # print_and_exit();
has_flash_message('warning'); # print_and_exit();
$mech->get('/'); # print_and_exit();
lacks_flash_message('warning'); # print_and_exit();
# success:
$mech->get('/config/clinicians'); # print_and_exit();
$new{national_code} = 2345678; # unique
$mech->submit_form(fields => \%new); # print_and_exit();
has_flash_message('info'); # print_and_exit();
$mech->get('/'); # print_and_exit();
lacks_flash_message('info'); # print_and_exit();
}
# edit clinician:
{
$mech->get('/config/clinicians/edit/1'); # print_and_exit();
$mech->field(active => 'no');
$mech->submit_form();
has_flash_message('info'); # print_and_exit();
$mech->get('/'); # print_and_exit();
lacks_flash_message('info'); # print_and_exit();
}
# change password - mismatch:
{
$mech->get_ok('/user/change_password'); # print_and_exit();
$mech->field(old_password => 'incorrect');
$mech->field(new_password => 'changed');
$mech->field(new_password_confirm => 'changed');
$mech->submit_form(); # print_and_exit();
has_flash_message('error'); # print_and_exit();
$mech->get('/'); # print_and_exit();
lacks_flash_message('error'); # print_and_exit();
}
# change password - success
#### WILL GET LOGGED OUT HERE ####
{
$mech->get_ok('/user/change_password'); # print_and_exit();
$mech->field(old_password => 'adm1n');
$mech->field(new_password => 'changed');
$mech->field(new_password_confirm => 'changed');
$mech->submit_form(); # print_and_exit();
has_flash_message('info'); # print_and_exit();
$mech->get('/'); # print_and_exit();
lacks_flash_message('info'); # print_and_exit();
}
#### now logged out
# test lost password flash message after logout:
{
$mech->form_name('forgotten_pwd');
$mech->field(email_address => 'nosuch@example.com');
$mech->submit(); # print_and_exit();
$mech->content_contains(
get_messages('login')->{email_not_found},
'OK: flash message present',
);
$mech->get('/'); # print_and_exit();
$mech->content_lacks(
get_messages('login')->{email_not_found},
'OK: flash message absent',
);
}
sub has_flash_message {
my $class = shift;
my $prefix = uc $class;
$mech->content_like(
qr/p class="$class">\s+$prefix/,
'OK: flash message present',
);
}
sub lacks_flash_message {
my $class = shift;
my $prefix = uc $class;
$mech->content_unlike(
qr/p class="$class">\s+$prefix/,
'OK: flash message absent',
);
}