wiki.pl: Port some fixes from upstream
[Orgmuse.git] / t / cache.t
blob309f6d76a23a0db2e602343955c41f5ff348f787
1 # Copyright (C) 2006, 2007  Alex Schroeder <alex@emacswiki.org>
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the
15 #    Free Software Foundation, Inc.
16 #    59 Temple Place, Suite 330
17 #    Boston, MA 02111-1307 USA
19 require 't/test.pl';
20 package OddMuse;
21 use Test::More tests => 7;
23 clear_pages();
25 sub get_etag {
26   my $str = shift;
27   return $1 if $str =~ /Etag: (.*)\r\n/;
30 # Get the ts from the page db and compare it to the Etag
31 update_page('CacheTest', 'something');
32 OpenPage('CacheTest');
33 my $ts1 = $Page{ts};
34 my $ts2 = get_etag(get_page('CacheTest'));
35 ok(abs($ts1 - $ts2) <= 1, "Latest edit of this page: $ts1 and $ts2 are close");
36 # When updating another page, that page's ts is the new Etag for all of them
37 update_page('OtherPage', 'something');
38 OpenPage('OtherPage');
39 $ts1 = $Page{ts};
40 $ts2 = get_etag(get_page('OtherPage'));
41 ok(abs($ts1 - $ts2) <= 1, "Latest edit of other page: $ts1 and $ts2 are close");
42 # Getting it raw should use the original timestamp
43 OpenPage('CacheTest');
44 $ts1 = $Page{ts};
45 $ts2 = get_etag(get_page('/raw/CacheTest?'));
46 ok(abs($ts1 - $ts2) <= 1, "Latest edit of raw page: $ts1 and $ts2 are close");
48 $str = 'This is a WikiLink.';
50 # this setting produces no link.
51 AppendStringToFile($ConfigFile, "\$WikiLinks = 0;\n");
52 test_page(update_page('CacheTest', $str, '', 1), $str);
54 # now change the setting, you still get no link because the cache has
55 # not been updated.
56 AppendStringToFile($ConfigFile, "\$WikiLinks = 1;\n");
57 test_page(get_page('CacheTest'), $str);
59 # refresh the cache
60 test_page(get_page('action=clear pwd=foo'), 'Clear Cache');
62 # now there is a link
63 # This is a WikiLink<a class="edit" title="Click to edit this page" href="http://localhost/wiki.pl\?action=edit;id=WikiLink">\?</a>.
64 xpath_test(get_page('CacheTest'), '//a[@class="edit"][@title="Click to edit this page"][@href="http://localhost/wiki.pl?action=edit;id=WikiLink"][text()="?"]');