#!/usr/bin/perl use Test::WWW::Mechanize::CGIApp; use strict; use warnings; use Test::More tests => 63; # use Test::More 'no_plan'; =begin: tests: 1) 2 new error code entries 2) re-enter both codes (permitted duplicates & not permitted duplicates) 2) new LIC 3) new error code + LIC =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(); # new error code (B): $mech->get_ok('/search/=/1'); # print_and_exit(); { $mech->follow_link_ok( # {n => 8}, "Logout $_ via eighth link on page", { url_regex => qr(error), }, 'follow error link', ); # print_and_exit(); $mech->field(error_code_id => 2); $mech->submit(); # print_and_exit(); lacks_dfv_errors(); # print_and_exit(); $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record succeeded', ); # print_and_exit(); foreach ( qw/B second_error/ ) { $mech->has_tag( td => $_, 'OK: expected error details loaded' ); } # check history: $mech->get_ok('/history/=/1'); # print_and_exit(); $mech->has_tag( td => 'recorded error code B', 'OK: expected history details' ); } # enter error_code C with details: $mech->get_ok('/error/=/1'); # print_and_exit(); { $mech->field(error_code_id => 3); $mech->field(error_details => 'error code C details'); $mech->submit(); # print_and_exit(); lacks_dfv_errors(); # print_and_exit(); $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record succeeded', ); # print_and_exit(); foreach ( qw/C third_error/, 'error code C details' ) { $mech->has_tag( td => $_, 'OK: expected error details loaded' ); } # check history: $mech->get_ok('/history/=/1'); # print_and_exit(); $mech->has_tag( td => 'recorded error code C', 'OK: expected history details' ); } # re-enter code B (permitted dupicates) & C (not permitted duplicates): $mech->get_ok('/error/=/1'); # print_and_exit(); { # code B: $mech->field(error_code_id => 2); $mech->submit(); # print_and_exit(); lacks_dfv_errors(); # print_and_exit(); $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record succeeded', ); # print_and_exit(); # code C: $mech->field(error_code_id => 3); $mech->submit(); # print_and_exit(); lacks_dfv_errors(); # print_and_exit(); $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record succeeded', ); # print_and_exit(); # code B again: $mech->field(error_code_id => 2); $mech->submit(); # print_and_exit(); lacks_dfv_errors(); # print_and_exit(); $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record succeeded', ); # print_and_exit(); # code C again: $mech->field(error_code_id => 3); $mech->submit(); # print_and_exit(); # can't check history for duplicates, so do db lookup: my $dbix = get_dbix(); my $sql = q!select count(*) from request_error_code where request_id = ? and error_code_id = ?!; { # code B: my $code_b = $dbix->query($sql, 1, 2)->list; is($code_b, 3, 'OK: expected number of code B entries'); } { # code C: my $code_c = $dbix->query($sql, 1, 3)->list; is($code_c, 1, 'OK: expected number of code C entries'); } } # print_and_exit(); { # edit & delete error code C (third_error) details: my $details = 'error code C details amended'; $mech->get_ok('/error/edit/1/2'); # print_and_exit(); $mech->form_name('error_detail'); $mech->field(error_details => $details); $mech->submit; # print_and_exit(); $mech->has_tag( td => $details, 'OK: error code details amended', ); # delete details entry: $mech->get_ok('/error/edit/1/2'); # print_and_exit(); $mech->form_name('error_detail'); $mech->field(error_details => undef); $mech->submit; # print_and_exit(); $mech->content_lacks( $details, 'OK: error code C details deleted', ); } # new LIC: $mech->get_ok('/error/=/1'); # print_and_exit(); { $mech->field(LIC => 1); $mech->submit(); # print_and_exit(); lacks_dfv_errors(); # print_and_exit(); $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record succeeded', ); # print_and_exit(); # check history: $mech->get_ok('/history/=/1'); # print_and_exit(); $mech->has_tag( td => 'completed LIC', 'OK: expected history details' ); } # new error code + LIC: $mech->get_ok('/error/=/2'); { $mech->field(error_code_id => 3); $mech->field(LIC => 1); $mech->submit(); # print_and_exit(); lacks_dfv_errors(); # print_and_exit(); $mech->content_contains( get_messages('action')->{create_success}, 'OK: new record succeeded', ); # print_and_exit(); # check 'em all: foreach ( qw/C third_error/ ) { $mech->has_tag( td => $_, 'OK: expected error details loaded' ); } # check history: $mech->get_ok('/history/=/2'); # print_and_exit(); $mech->has_tag( td => 'recorded error code C', 'OK: expected history details' ); $mech->has_tag( td => 'completed LIC', 'OK: expected history details' ); } # check error code A not already in use (going to change C to A): $mech->get_ok('/error/=/1'); # print_and_exit(); $mech->content_lacks( 'first_error', 'OK: error code A not in use', ); # print_and_exit(); # change error code C to A: $mech->get_ok('/error/edit/1/2'); # print_and_exit(); { $mech->has_tag_like( td => 'third_error', 'OK: record loaded', ); # print_and_exit(); $mech->form_name('error_code'); # 1st id for edit detail $mech->field(error_code_id => 1); $mech->submit(); # print_and_exit(); my $msg = get_messages('action')->{edit_success}; $mech->has_tag_like( p => qr($msg), 'OK: record updated successfully', ); # print_and_exit(); $mech->has_tag_like( td => 'first_error', 'OK: changed error code displayed', ); # print_and_exit(); } # now load an error code B for edit and check code A not available: $mech->get_ok('/error/edit/1/1'); # print_and_exit(); { $mech->has_tag_like( td => 'second_error', 'OK: record loaded', ); # print_and_exit(); # unique error code A not available as already in use $mech->content_lacks( 'first_error', 'OK: unique error code A not available', ); # print_and_exit(); } # delete request error code A: $mech->get_ok('/error/edit/1/2'); # print_and_exit(); { $mech->follow_link_ok( # {n => 8}, "Logout $_ via eighth link on page", { url_regex => qr(delete), }, 'follow delete link', ); # print_and_exit(); $mech->has_tag_like( td => 'first_error', 'OK: record loaded', ); # print_and_exit(); $mech->field(confirm_delete => 1); $mech->submit(); # print_and_exit(); my $msg = get_messages('action')->{delete_success}; $mech->has_tag_like( p => qr($msg), 'OK: record updated successfully', ); # print_and_exit(); # now check error code A gone: $mech->get_ok('/error/=/1'); # print_and_exit(); $mech->content_lacks( 'first_error', 'OK: error code A deleted', ); # print_and_exit(); } do_logout();