aboutsummaryrefslogtreecommitdiff
path: root/t/renamepage.t
blob: b16ca3d23b585cfe4d3b0a7ce564f244a9c40020 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/perl
use warnings;
use strict;
use Test::More tests => 14;
use Encode;

BEGIN { use_ok("IkiWiki"); }
BEGIN { use_ok("IkiWiki::Plugin::link"); }

%config=IkiWiki::defaultconfig();
$config{srcdir}=$config{destdir}="/dev/null";
IkiWiki::checkconfig();

# tests of the link plugin's renamepage function
sub try {
	my ($page, $oldpage, $newpage, $content)=@_;

	%IkiWiki::pagecase=();
	%links=();
	$IkiWiki::config{userdir}="foouserdir";
	foreach my $page ($page, $oldpage, $newpage) {
		$IkiWiki::pagecase{lc $page}=$page;
		$links{$page}=[];
	}

	IkiWiki::Plugin::link::renamepage(
			page => $page, 
			oldpage => $oldpage,
			newpage => $newpage,
			content => $content,
	);
}
is(try("z", "foo" => "bar", "[[xxx]]"), "[[xxx]]"); # unrelated link
is(try("z", "foo" => "bar", "[[bar]]"), "[[bar]]"); # link already to new page
is(try("z", "foo" => "bar", "[[foo]]"), "[[bar]]"); # basic conversion to new page name
is(try("z", "foo" => "bar", "[[/foo]]"), "[[/bar]]"); # absolute link
is(try("z", "foo" => "bar", "[[Foo]]"), "[[Bar]]"); # preserve case
is(try("z", "foo" => "bar", "[[/Foo]]"), "[[/Bar]]"); # preserve case w/absolute
is(try("z", "foo" => "bar", "[[foo]] [[xxx]]"), "[[bar]] [[xxx]]"); # 2 links, 1 converted
is(try("z", "foo" => "bar", "[[xxx|foo]]"), "[[xxx|bar]]"); # conversion w/text
is(try("z", "foo" => "bar", "[[foo#anchor]]"), "[[bar#anchor]]"); # with anchor
is(try("z", "foo" => "bar", "[[xxx|foo#anchor]]"), "[[xxx|bar#anchor]]"); # with anchor
is(try("z", "foo" => "bar", "[[!moo ]]"), "[[!moo ]]"); # preprocessor directive unchanged
is(try("bugs", "bugs/foo" => "wishlist/bar", "[[foo]]"), "[[wishlist/bar]]"); # subpage link