Files
oddmuse/t/encoding.t
Alex Schroeder 93cc1578d0 encoding.t: fix test
When we decided to no longer show changes to the cookie, we knew that we
would have to change some of the tests. This commit does that for
encoding.t. The tests that looked at the HTML document now look at the
footer of an edit.
2015-08-15 21:03:26 +02:00

116 lines
3.7 KiB
Perl

# Copyright (C) 2012 Alex Schroeder <alex@gnu.org>
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
require 't/test.pl';
package OddMuse;
use Test::More tests => 41;
use utf8; # tests contain UTF-8 characters and it matters
# ASCII basics
$page = update_page('Aal', 'aal');
test_page($page, '<h1><a .*>Aal</a></h1>', '<p>aal</p>');
xpath_test($page, '//h1/a[text()="Aal"]', '//p[text()="aal"]');
$page = get_page('Aal');
test_page($page, '<h1><a .*>Aal</a></h1>', '<p>aal</p>');
xpath_test($page, '//h1/a[text()="Aal"]', '//p[text()="aal"]');
# non-ASCII
$page = update_page('Öl', 'öl');
test_page($page, '<h1><a .*>Öl</a></h1>', '<p>öl</p>');
xpath_test($page, '//h1/a[text()="Öl"]', '//p[text()="öl"]');
$page = get_page('Öl');
test_page($page, '<h1><a .*>Öl</a></h1>', '<p>öl</p>');
xpath_test($page, '//h1/a[text()="Öl"]', '//p[text()="öl"]');
$page = get_page('action=index raw=1');
test_page($page, 'Aal', 'Öl');
test_page(get_page('Aal'), 'aal');
test_page(get_page('Öl'), 'öl');
# rc
test_page(get_page('action=rc raw=1'),
'title: Öl', 'description: öl');
# diff
update_page('Öl', 'Ähren');
xpath_test(get_page('action=browse id=Öl diff=1'),
'//div[@class="old"]/p/strong[@class="changes"][text()="öl"]',
'//div[@class="new"]/p/strong[@class="changes"][text()="Ähren"]');
# search
# testing with non-ASCII is important on a Mac
# ASCII
$page = get_page('search=aal raw=1');
test_page($page, 'title: Search for: aal', 'title: Aal');
# matching page name does not involve grep working
$page = get_page('search=öl raw=1');
test_page($page, 'title: Search for: öl', 'title: Öl');
# this fails with grep on a Mac, thus testing if mac.pl
# managed to switch of the use of grep
test_page(get_page('search=ähren raw=1'),
'title: Search for: ähren', 'title: Öl');
# the username is decoded correctly in the footer
test_page(update_page('Möglich', 'Egal', 'Zusammenfassung', '', '',
'username=Schr%C3%B6der'),
'Schröder');
test_page($redirect, 'Set-Cookie: Wiki=\S*username%251eSchr%C3%B6der');
# verify that non-ASCII parameters work as intended
AppendStringToFile($ConfigFile, "use utf8;\n\$CookieParameters{ärger} = 1;\n");
test_page(get_page('action=browse id=Test %C3%A4rger=hallo'),
'Set-Cookie: Wiki=%C3%A4rger%251ehallo');
# create a test page to test the output in various ways
test_page(update_page("Russian", "Русский Hello"),
"Русский");
# checking for errors in the rss feed
test_page(get_page("action=rss match=Russian full=1"),
"Русский");
# with toc.pl, however, a problem: Русский is corrupted
add_module('toc.pl');
test_page(update_page("Russian", "Русский Hello again"),
"Русский");
# and with inclusion, too:
test_page(update_page("All", qq{<include "Russian">}),
"Русский");
# and checking the cache
test_page(get_page("All"), "Русский");
# and checking without the cache
test_page(get_page("action=browse id=All cache=0"), "Русский");
# testing search
test_page(get_page('search=Русский raw=1'),
qw(Russian));
# testing page editing
test_page(update_page("Русский", "друзья"),
"друзья");