3 # This file is part of Koha.
5 # Koha is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
10 # Koha is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with Koha; if not, see <http://www.gnu.org/licenses>.
21 use Test::More tests => 28;
22 use Test::WWW::Mechanize;
31 my $testdir = File::Spec->rel2abs( dirname(__FILE__) );
33 my $koha_conf = $ENV{KOHA_CONF};
34 my $xml = XMLin($koha_conf);
40 plan skip_all => "Tests skip. You must have a working Context\n";
43 my $user = $ENV{KOHA_USER} || $xml->{config}->{user};
44 my $password = $ENV{KOHA_PASS} || $xml->{config}->{pass};
45 my $intranet = $ENV{KOHA_INTRANET_URL};
47 if (not defined $intranet) {
48 plan skip_all => "Tests skip. You must set env. variable KOHA_INTRANET_URL to do tests\n";
51 my $dbh = C4::Context->dbh;
55 my $agent = Test::WWW::Mechanize->new( autocheck => 1 );
57 my ($category, $expected_base, $add_form_link_exists, $delete_form_link_exists);
59 # -------------------------------------------------- LOGIN
62 $agent->get_ok( "$intranet/cgi-bin/koha/mainpage.pl", 'connect to intranet' );
63 $agent->form_name('loginform');
64 $agent->field( 'password', $password );
65 $agent->field( 'userid', $user );
66 $agent->field( 'branch', '' );
67 $agent->click_ok( '', 'login to staff client' );
68 $agent->get_ok( "$intranet/cgi-bin/koha/mainpage.pl", 'load main page' );
70 #--------------------------------------------------- Test with corean and greek chars
73 $dbh->do(q|DELETE FROM authorised_values WHERE category = ?|, undef, $category);
75 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl", 'Connect to Authorized values page' );
76 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl?op=add_form", 'Open to create a new category' );
77 $agent->form_name('Aform');
78 $agent->field('authorised_value', 'επιμεq');
79 $agent->field('lib_opac', 'autdesc2');
80 $agent->field('lib', 'desc1');
81 $agent->field('category', $category);
82 $agent->field('branches', '');
83 $agent->click_ok( '', "Create new auth category and value" );
85 $expected_base = q|authorised_values.pl|;
86 $agent->base_like(qr|$expected_base|, "check base");
87 $add_form_link_exists = 0;
88 $delete_form_link_exists = 0;
89 for my $link ( $agent->links() ) {
90 if ( $link->url =~ m|authorised_values.pl\?op=add_form&category=$category| ) {
91 $add_form_link_exists = 1;
92 }elsif( $link->url =~ m|authorised_values.pl\?op=delete&searchfield=$category| ) {
93 $delete_form_link_exists = 1;
96 is( $add_form_link_exists, 1, );
97 is( $delete_form_link_exists, 1, );
99 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl", 'Return to Authorized values page' );
100 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl?searchfield=学協会μμ&offset=0", 'Search the values inserted' );
101 my $text = $agent->text() ;
103 ok ( ( length(Encode::encode('UTF-8', $text)) != length($text) ) , 'UTF-8 are multi-byte. Good') ;
104 ok ($text =~ m/学協会μμ/, 'UTF-8 (Asia) chars are correctly present. Good');
105 ok ($text =~ m/επιμεq/, 'UTF-8 (Greek) chars are correctly present. Good');
106 my @links = $agent->links;
108 foreach my $dato (@links){
109 my $link = $dato->url;
110 if ($link =~ m/op=delete\&searchfield=学協会μμ\&id=(\d+)/){
116 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl?op=delete&searchfield=学協会μμ&id=$id_to_del", 'UTF_8 auth. value deleted' );
118 ok($id_to_del ne undef, "error, link to delete not working");
121 #---------------------------------------- Test with only latin utf-8 (could be taken as Latin-1/ISO 8859-1)
124 $dbh->do(q|DELETE FROM authorised_values WHERE category = ?|, undef, $category);
126 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl", 'Connect to Authorized values page' );
127 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl?op=add_form", 'Open to create a new category' );
128 $agent->form_name('Aform');
129 $agent->field('authorised_value', 'ràmen');
130 $agent->field('lib_opac', 'autdesc2');
131 $agent->field('lib', 'desc1');
132 $agent->field('category', $category);
133 $agent->field('branches', '');
134 $agent->click_ok( '', "Create new auth category and value" );
135 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl?searchfield=tòmas&offset=0", 'Search the values inserted' );
137 $expected_base = q|authorised_values.pl\?searchfield=| . uri_escape_utf8( $category );
138 #$expected_base = q|authorised_values.pl\?searchfield=| . $category;
139 $agent->base_like(qr|$expected_base|, "check base");
140 $add_form_link_exists = 0;
141 $delete_form_link_exists = 0;
142 for my $link ( $agent->links() ) {
143 if ( $link->url =~ m|authorised_values.pl\?op=add_form&category=$category| ) {
144 $add_form_link_exists = 1;
145 }elsif( $link->url =~ m|authorised_values.pl\?op=delete&searchfield=$category| ) {
146 $delete_form_link_exists = 1;
149 is( $add_form_link_exists, 1, );
150 is( $delete_form_link_exists, 1, );
152 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl", 'Return to Authorized values page' );
153 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl?searchfield=tòmas&offset=0", 'Search the values inserted' );
154 my $text2 = $agent->text() ;
156 ok ( ( length(Encode::encode('UTF-8', $text)) != length($text) ) , 'UTF-8 are multi-byte. Good') ;
157 ok ($text2 =~ m/tòmas/, 'UTF-8 not Latin-1 first test is OK. Good');
158 ok ($text2=~ m/ràmen/, 'UTF-8 not Latin-1 second test is OK. Good');
159 my @links2 = $agent->links;
161 foreach my $dato (@links2){
162 my $link = $dato->url;
163 if ($link =~ m/op=delete\&searchfield=tòmas\&id=(\d+)/){
169 $agent->get_ok( "$intranet/cgi-bin/koha/admin/authorised_values.pl?op=delete&searchfield=tòmas&id=$id_to_del2", 'UTF_8 auth. value deleted' );
171 ok($id_to_del2 ne undef, "error, link to delete not working");