123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- # Copyright (C) 2008–2016 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 => 43;
- use utf8; # tests contain UTF-8 characters and it matters
- add_module('translation-links.pl');
- AppendStringToFile($ConfigFile, q{
- use utf8;
- %Languages = ('de' => '\b(der|die|das|und|oder)\b',
- 'en' => '\b(the|he|she|that|this)\b');
- $Translate{de} = 'Deutsch';
- $Translate{en} = 'English';
- });
- $page = update_page('HomePage', 'This is the homepage. [[de:HauptSeite]] [[fr:PagePrincipale]]');
- # the page is not autoidentified as English, therefore English must be missing!
- test_page($page, 'This is the homepage.', 'fr:PagePrincipale',
- 'action=translate;id=HomePage;missing=en', 'Add Translation');
- test_page_negative($page, 'de:HauptSeite');
- xpath_test($page, '//footer/span[@class="translation bar"]/a[@class="translation de"][@href="http://localhost/wiki.pl/HauptSeite"][text()="Deutsch"]');
- AppendStringToFile($ConfigFile, q{
- %Languages = ('de' => '\b(der|die|das|und|oder)\b',
- 'fr' => '\b(le|la|un|une|de|en)\b',
- 'en' => '\b(the|he|she|that|this)\b');
- $Translate{de} = 'Deutsch';
- $Translate{fr} = 'Français';
- $Translate{en} = 'English';
- });
- xpath_test(update_page('HomePage', 'Simple test. [[de:HauptSeite]]'),
- '//footer/span[@class="translation bar"]/a[@class="translation new"][text()="Add Translation"][@href="http://localhost/wiki.pl?action=translate;id=HomePage;missing=en_fr"]');
- $page = get_page('action=translate id=HomePage missing=en_fr');
- test_page($page, 'Français', 'English');
- test_page_negative($page, 'Deutsch');
- # the page is now autoidentified as English, therefore French is the only one that is missing!
- xpath_test(update_page('HomePage', 'The the the the test. [[de:HauptSeite]]'),
- '//footer/span[@class="translation bar"]/a[@class="translation new"][text()="Add Translation"][@href="http://localhost/wiki.pl?action=translate;id=HomePage;missing=fr"]');
- test_page(get_page('action=translate id=HomePage target=PagePrincipale translation=fr'),
- 'Editing PagePrincipale');
- test_page(get_page('action=browse raw=1 id=HomePage'),
- '\[\[de:HauptSeite\]\]', '\[\[fr:PagePrincipale\]\]');
- test_page_negative(get_page('HomePage'), 'Translate');
- test_page(get_page('action=translate id=HomePage target= translation=fr'),
- 'Translate HomePage', 'Page name is missing');
- test_page(get_page('action=translate id=HomePage target=a:b translation=fr'),
- 'Invalid Page a:b');
- test_page(get_page('action=translate id=HomePage target=abc'),
- 'Language is missing');
- test_page(get_page('action=translate id=HomePage target=abc translation=fr'),
- 'Editing abc');
- # encoding issues
- # first check the from ASCII to something that can be encoded in Latin-1
- test_page(update_page('SiteMap', 'Hello'), 'Hello');
- test_page(get_page('action=translate id=SiteMap target=Übersicht translation=de'),
- 'Editing Übersicht');
- xpath_test(get_page('SiteMap'),
- '//a[@class="translation de"][text()="Deutsch"]');
- xpath_test(get_page('action=rc showedit=1'),
- '//li/a[@class="local"][text()="SiteMap"]/following-sibling::strong[text()="Added translation: Übersicht (Deutsch)"]');
- # now check the other way around
- test_page(get_page('action=translate id=Übersicht target=SiteMap translation=en'),
- 'Editing SiteMap');
- xpath_test(get_page('Übersicht'),
- '//a[@class="translation en"][text()="English"]');
- xpath_test(get_page('action=rc showedit=1'),
- '//li/a[@class="local"][text()="Übersicht"]/following-sibling::strong[text()="Added translation: SiteMap (English)"]');
- AppendStringToFile($ConfigFile, q{
- $Languages{ja} = '(ま|す|ん|し|ょ|う|の|は)';
- $Translate{ja} = '日本語';
- });
- # Repeat it with Unicode!
- test_page(get_page('action=translate id=SiteMap target=サイトマップ translation=ja'),
- 'Editing サイトマップ');
- xpath_test(get_page('SiteMap'),
- '//a[@class="translation ja"][text()="日本語"]');
- xpath_test(get_page('action=rc showedit=1'),
- '//li/a[@class="local"][text()="SiteMap"]/following-sibling::strong[text()="Added translation: サイトマップ (日本語)"]');
- # and again, check the other way around
- test_page(get_page('action=translate id=サイトマップ target=SiteMap translation=en'),
- 'Editing SiteMap');
- xpath_test(get_page('サイトマップ'),
- '//a[@class="translation en"][text()="English"]');
- xpath_test(get_page('action=rc showedit=1'),
- '//li/a[@class="local"][text()="サイトマップ"]/following-sibling::strong[text()="Added translation: SiteMap (English)"]');
- # locking the site and testing
- WriteStringToFile($NoEditFile, 'editing locked.');
- test_page(update_page('Testing', 'This is spam.'), 'This page does not exist');
- test_page(update_page('Spam', 'Trying again.'), 'This page does not exist');
- Unlink($NoEditFile);
- # testing some vandalism
- add_module('banned-regexps.pl');
- test_page(update_page('BannedRegexps', 'spam', undef, undef, 1), 'spam');
- test_page(update_page('Testing', 'This is spam.'), 'This page does not exist');
- test_page(update_page('Spam', 'Trying again.'), 'This page does not exist');
- test_page(get_page('action=translate id=Spam target=Harmless translation=en'),
- 'Edit Denied',
- 'Regular expression "spam" matched "Spam" on this page');
- test_page(get_page('Spam'), 'This page does not exist');
- test_page(get_page('action=translate id=Harmless target=Spam translation=en'),
- 'Edit Denied',
- 'Regular expression "spam" matched "Spam" on this page');
|