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

Last change on this file since 949 was 949, checked in by Earle Martin, 15 years ago

Use skip_all for tests relying entirely on SQLite, instead of issuing skip commands with duplicate test counts and causing maintenance overhead.

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