source: trunk/t/12_macros.t @ 933

Last change on this file since 933 was 933, checked in by kake, 15 years ago

Add MAP_LINK and INCLUDE_NODE macros (ticket #100).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.2 KB
Line 
1use strict;
2use Wiki::Toolkit::Setup::SQLite;
3use OpenGuides;
4use OpenGuides::Test;
5use Test::More tests => 10;
6
7eval { require DBD::SQLite; };
8my $have_sqlite = $@ ? 0 : 1;
9
10SKIP: {
11    skip "DBD::SQLite not installed - no database to test with", 10
12      unless $have_sqlite;
13
14    # Clear out the database from any previous runs.
15    unlink "t/node.db";
16    unlink <t/indexes/*>;
17    Wiki::Toolkit::Setup::SQLite::setup( { dbname => "t/node.db" } );
18
19    my $config = OpenGuides::Test->make_basic_config;
20    my $guide = OpenGuides->new( config => $config );
21    my $wiki = $guide->wiki;
22
23    # Test @INDEX_LINK
24    $wiki->write_node( "Test 1", "\@INDEX_LINK [[Category Foo]]" )
25      or die "Can't write node";
26    $wiki->write_node( "Test 2", "\@INDEX_LINK [[Category Bar|Bars]]" )
27      or die "Can't write node";
28
29    my $output;
30    $output = $guide->display_node(
31                                    return_output => 1,
32                                    id            => "Test 1",
33                                  );
34    like( $output, qr/View all pages in Category Foo/,
35          "\@INDEX_LINK has right default link text" );
36    $output = $guide->display_node(
37                                    return_output => 1,
38                                    id            => "Test 2",
39                                  );
40    like( $output, qr/>Bars<\/a>/, "...and can be overridden" );
41
42    # Test @INDEX_LIST
43    $wiki->write_node( "Test 3", "\@INDEX_LIST [[Category Foo]]" )
44      or die "Can't write node";
45    $wiki->write_node( "Test 4", "\@INDEX_LIST [[Locale Bar]]" )
46      or die "Can't write node";
47    $wiki->write_node( "Test 5", "\@INDEX_LIST [[Category Nonexistent]]" )
48      or die "Can't write node";
49    $wiki->write_node( "Test 6", "\@INDEX_LIST [[Locale Nonexistent]]" )
50      or die "Can't write node";
51    $wiki->write_node( "Wibble", "wibble", undef,
52                       {
53                         category => "foo",
54                         locale   => "bar",
55                       }
56                     )
57      or die "Can't write node";
58    $output = $guide->display_node(
59                                    return_output => 1,
60                                    id            => "Test 3",
61                                  );
62    like ( $output, qr|<a href=".*">Wibble</a>|,
63           '@INDEX_LIST works for categories' );
64    $output = $guide->display_node(
65                                    return_output => 1,
66                                    id            => "Test 5",
67                                  );
68    like ( $output, qr|No pages currently in category|,
69           "...and fails nicely if no pages in category" );
70    $output = $guide->display_node(
71                                    return_output => 1,
72                                    id            => "Test 4",
73                                  );
74    like ( $output, qr|<a href=".*">Wibble</a>|,
75           '@INDEX_LIST works for locales' );
76    $output = $guide->display_node(
77                                    return_output => 1,
78                                    id            => "Test 6",
79                                  );
80    like ( $output, qr|No pages currently in locale|,
81           "...and fails nicely if no pages in locale" );
82
83    # Test @MAP_LINK
84    OpenGuides::Test->write_data(
85                                  guide   => $guide,
86                                  node    => "Test 1",
87                                  content => "\@MAP_LINK [[Category Foo]]",
88                                );
89    OpenGuides::Test->write_data(
90                                  guide   => $guide,
91                                  node    => "Test 2",
92                                  content => "\@MAP_LINK [[Category Foo|Map]]",
93                                );
94    $output = $guide->display_node(
95                                    return_output => 1,
96                                    id            => "Test 1",
97                                  );
98    like( $output, qr/View map of pages in Category Foo/,
99          "\@MAP_LINK has right default link text" );
100    $output = $guide->display_node(
101                                    return_output => 1,
102                                    id            => "Test 2",
103                                  );
104    like( $output, qr/>Map<\/a>/, "...and can be overridden" );
105
106    # Test @INCLUDE_NODE
107    OpenGuides::Test->write_data(
108                                  guide   => $guide,
109                                  node    => "Test 1",
110                                  content => "Hello, I am Test 1!\r\n"
111                                             . "\@INCLUDE_NODE [[Test 2]]",
112                                );
113    OpenGuides::Test->write_data(
114                                  guide   => $guide,
115                                  node    => "Test 2",
116                                  content => "Hello, I am Test 2!",
117                                );
118    $output = $guide->display_node(
119                                    return_output => 1,
120                                    id            => "Test 1",
121                                  );
122    like( $output, qr/Hello, I am Test 1!/,
123          "Node with \@INCLUDE_NODE has its own content" );
124    like( $output, qr/Hello, I am Test 2!/,
125          "...and the included content" );
126}
Note: See TracBrowser for help on using the repository browser.