]> sipb.mit.edu Git - ikiwiki.git/blobdiff - t/renamepage.t
add renamepage hooks
[ikiwiki.git] / t / renamepage.t
diff --git a/t/renamepage.t b/t/renamepage.t
new file mode 100755 (executable)
index 0000000..ce62bf4
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Test::More tests => 11;
+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]] [[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