#!/usr/bin/perl -w
use strict;
use lib './t/lib';
use Test::More tests => 30;
use HTML::Widgets::NavMenu ();
use HTML::Widgets::NavMenu::HeaderRole ();
use HTML::Widgets::NavMenu::JQueryTreeView ();
use HTML::Widgets::NavMenu::Test::Data;
my $test_data = get_test_data();
sub test_nav_menu
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $rendered = shift;
my $expected_string = shift;
my $test_blurb = shift;
my @result = ( @{ $rendered->{html} } );
my @expected = ( split( /\n/, $expected_string ) );
is_deeply( \@result, \@expected, $test_blurb );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/hello/",
@{ $test_data->{'minimal'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
<li>
<a href="../me/" title="About Myself">About Me</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Nav Menu for minimal - 1" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/",
@{ $test_data->{'two_sites'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
<li>
<b>About Me</b>
<br />
<ul class="navbarnested">
<li>
<a href="../round/hello/personal.html" title="Biography of Myself">Bio</a>
</li>
<li>
<a href="../round/toto/" title="A Useful Conspiracy">Gloria</a>
</li>
</ul>
</li>
<li>
<a href="http://www.other-url.co.il/~shlomif/hoola/" title="Drumming is good for your health">Tam Tam Drums</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Nav Menu for minimal - 2" );
}
# This test tests that an expand_re directive should not cause
# the current coords to be assigned to it, thus marking a site
# incorrectly.
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/",
@{ $test_data->{'expand_re'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
<li>
<b>About Me</b>
</li>
<li>
<a href="../foo/" title="Fooish">Foo</a>
<br />
<ul class="navbarnested">
<li>
<a href="../foo/expanded/" title="Expanded">Expanded</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Nav Menu for expand_re" );
}
# This test tests that an empty expand_re directive works after a successful
# pattern match.
{
my $string = "aslkdjofisvniowgvnoaifnaoiwfb";
$string =~ s{ofisvniowgvnoaifnaoiwfb$}{};
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/",
@{ $test_data->{'expand_re'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
<li>
<b>About Me</b>
</li>
<li>
<a href="../foo/" title="Fooish">Foo</a>
<br />
<ul class="navbarnested">
<li>
<a href="../foo/expanded/" title="Expanded">Expanded</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Nav Menu for empty expand_re after successful pattern match" );
}
# This test tests the show_always directive which causes the entire
# sub-tree to expand at any URL.
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/",
@{ $test_data->{'show_always'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
<li>
<b>About Me</b>
</li>
<li>
<a href="../show-always/">Show Always</a>
<br />
<ul class="navbarnested">
<li>
<a href="../show-always/gandalf/">Gandalf</a>
</li>
<li>
<a href="../robin/">Robin</a>
<br />
<ul class="navbarnested">
<li>
<a href="../robin/hood/">Hood</a>
</li>
</ul>
</li>
<li>
<a href="../esther/">Queen Esther</a>
<br />
<ul class="navbarnested">
<li>
<a href="../haman/">Haman</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Nav Menu with show_always" );
}
# This test tests a menu auto-expands if the current URL is an item
# inside it.
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/bio.html",
@{ $test_data->{'items_in_sub'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="./../">Home</a>
</li>
<li>
<a href="./" title="About Myself">About Me</a>
<br />
<ul class="navbarnested">
<li>
<b>Bio</b>
</li>
<li>
<a href="./gloria/" title="A Useful Conspiracy">Gloria</a>
</li>
</ul>
</li>
<li>
<a href="./../hoola/" title="Drumming is good for your health">Tam Tam Drums</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Nav Menu with a selected sub-item" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/",
@{ $test_data->{'separator'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
<li>
<b>About Me</b>
<br />
<ul class="navbarnested">
<li>
<a href="group-hug/">Group Hug</a>
</li>
<li>
<a href="cool-io/">Cool I/O</a>
</li>
</ul>
<ul class="navbarnested">
<li>
<a href="../resume.html">Resume</a>
</li>
</ul>
</li>
</ul>
<ul class="navbarmain">
<li>
<a href="../halifax/">Halifax</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Nav Menu with Separators" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/",
@{ $test_data->{'hidden_item'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
<li>
<b>About Me</b>
<br />
<ul class="navbarnested">
<li>
<a href="visible/">Visible</a>
</li>
<li>
<a href="visible-too/">Visible Too</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Nav Menu with Hidden Item" );
}
{
my $nav_menu = HTML::Widgets::NavMenu::HeaderRole->new(
'path_info' => "/good/",
@{ $test_data->{'header_role'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
</ul>
<h2>
<a href="../me/" title="About Myself">About Me</a>
</h2>
<ul class="navbarmain">
<li>
<a href="../me/sub-me1/">Sub Me</a>
</li>
<li>
<a href="../me/sub-me-two/">Sub Me 2</a>
</li>
<li>
<a href="../aloha/">Hello</a>
<br />
<ul class="navbarnested">
<li>
<a href="../aloha/obkb/">OBKB</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Nav Menu with a role of \"header\"" );
}
{
my $nav_menu = HTML::Widgets::NavMenu::HeaderRole->new(
'path_info' => "/me/",
@{ $test_data->{'header_role'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
</ul>
<h2>
<b>About Me</b>
</h2>
<ul class="navbarmain">
<li>
<a href="sub-me1/">Sub Me</a>
</li>
<li>
<a href="sub-me-two/">Sub Me 2</a>
</li>
<li>
<a href="../aloha/">Hello</a>
<br />
<ul class="navbarnested">
<li>
<a href="../aloha/obkb/">OBKB</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Nav Menu with a selected item with a role of \"header\" " );
}
# Test the selective expand. (test #1)
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/bio/test.html",
@{ $test_data->{'selective_expand'} },
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="./../../">Home</a>
</li>
<li>
<a href="./../" title="About Myself">About Me</a>
<br />
<ul class="two">
<li>
<a href="./../group-hug/">Group Hug</a>
</li>
<li>
<a href="./../cool-io/">Cool I/O</a>
</li>
<li>
<a href="./../../resume.html">Resume</a>
</li>
</ul>
</li>
<li>
<a href="./../../halifax/">Halifax</a>
</li>
<li>
<a href="./../../open-source/" title="Open Source Software I Wrote">Software</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Selective Expand Nav-Menu #1" );
}
# Test the selective expand. (test #2)
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/open-source/bits.html",
@{ $test_data->{'selective_expand'} },
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="./../">Home</a>
</li>
<li>
<a href="./../me/" title="About Myself">About Me</a>
</li>
<li>
<a href="./../halifax/">Halifax</a>
</li>
<li>
<a href="./" title="Open Source Software I Wrote">Software</a>
<br />
<ul class="two">
<li>
<a href="./fooware/">Fooware</a>
</li>
<li>
<a href="./condor-man/" title="Kwalitee">Condor-Man</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Selective Expand Nav-Menu #2" );
}
# This is a test for the url_type directive.
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/darling/",
@{ $test_data->{'url_type_menu'} },
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul>
<li>
<a href="../">Home</a>
</li>
<li>
<a href="/me/" title="About Myself">About Me</a>
</li>
<li>
<a href="http://www.hello.com/yowza/">Yowza</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Nav Menu for url_type - 1" );
}
# This is a test for the rec_url_type directive.
# Also test the behaviour of the url_type when a trailing_url_base
# is specified
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/darling/",
@{ $test_data->{'rec_url_type_menu'} },
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul>
<li>
<a href="http://www.hello.com/~shlomif/">Home</a>
</li>
<li>
<a href="/~shlomif/me/" title="About Myself">About Me</a>
</li>
<li>
<a href="http://www.hello.com/~shlomif/tedious/to/write/">Hoola</a>
</li>
<li>
<a href="../yowza/">Yowza</a>
<br />
<ul>
<li>
<a href="http://www.hello.com/~shlomif/yowza/howza/">This should be full_abs again</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Nav Menu for rec_url_type - 1" );
}
# Test the url_is_abs directive
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/hello/",
@{ $test_data->{'url_is_abs_menu'} },
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul>
<li>
<a href="../">Home</a>
</li>
<li>
<a href="http://www.google.com/" title="Google it!">Link to Google</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Nav Menu for url_is_asb - 1" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/bio/test.html",
@{ $test_data->{'mixed_expand_menu'} },
'current_host' => "default",
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="./../../">Home</a>
</li>
<li>
<a href="./../" title="About Myself">About Me</a>
<br />
<ul class="two">
<li>
<a href="./../group-hug/">Group Hug</a>
</li>
<li>
<a href="./../cool-io/">Cool I/O</a>
</li>
<li>
<a href="./../../resume.html">Resume</a>
</li>
</ul>
</li>
<li>
<a href="./../../halifax/">Halifax</a>
</li>
<li>
<a href="http://www.other.org/open-source/" title="Open Source Software I Wrote">Software</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #1" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/bio/test.html",
@{ $test_data->{'mixed_expand_menu'} },
'current_host' => "other",
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="http://www.default.net/">Home</a>
</li>
<li>
<a href="http://www.default.net/me/" title="About Myself">About Me</a>
</li>
<li>
<a href="http://www.default.net/halifax/">Halifax</a>
</li>
<li>
<a href="./../../open-source/" title="Open Source Software I Wrote">Software</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #2" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/open-source/not-exist/",
@{ $test_data->{'mixed_expand_menu'} },
'current_host' => "other",
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="http://www.default.net/">Home</a>
</li>
<li>
<a href="http://www.default.net/me/" title="About Myself">About Me</a>
</li>
<li>
<a href="http://www.default.net/halifax/">Halifax</a>
</li>
<li>
<a href="../" title="Open Source Software I Wrote">Software</a>
<br />
<ul class="two">
<li>
<a href="../fooware/">Fooware</a>
</li>
<li>
<a href="../condor-man/" title="Kwalitee">Condor-Man</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #3" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/base/",
@{ $test_data->{'special_chars_menu'} },
'current_host' => "default",
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul>
<li>
<a href="../">Home</a>
</li>
<li>
<a href="../<hello>&"you"/">Special Chars</a>
</li>
<li>
<a href="../non-special/">Non-special</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Special Chars Nav Menu" );
}
# Test a special chars-based URL.
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/<hello>&\"you\"/",
@{ $test_data->{'special_chars_menu'} },
'current_host' => "default",
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul>
<li>
<a href="../">Home</a>
</li>
<li>
<b>Special Chars</b>
</li>
<li>
<a href="../non-special/">Non-special</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Nav Menu with a special chars URL." );
}
# Test a special chars-based URL.
{
my %args = ( @{ $test_data->{'special_chars_menu'} } );
delete( $args{'current_host'} );
eval {
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/<hello>&\"you\"/",
%args,
);
};
# TEST
like( $@, qr!^Current host!, "Checking for exception" );
}
# This is to test that the cb2 is working properly.
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/not-exist/",
@{ $test_data->{'mixed_expand_menu'} },
'current_host' => "other",
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="http://www.default.net/">Home</a>
</li>
<li>
<a href="http://www.default.net/me/" title="About Myself">About Me</a>
</li>
<li>
<a href="http://www.default.net/halifax/">Halifax</a>
</li>
<li>
<a href="../../open-source/" title="Open Source Software I Wrote">Software</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #4" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/open-source/",
@{ $test_data->{'mixed_expand_menu'} },
'current_host' => "default",
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="../">Home</a>
</li>
<li>
<a href="../me/" title="About Myself">About Me</a>
</li>
<li>
<a href="../halifax/">Halifax</a>
</li>
<li>
<a href="http://www.other.org/open-source/" title="Open Source Software I Wrote">Software</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Mixed Expand Nav-Menu #5" );
}
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/humour/by-others/foo.html",
@{ $test_data->{'non_capturing_expand'} },
'current_host' => "default",
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="./../../">Home</a>
</li>
<li>
<a href="./../" title="My Humorous Creations">Humour</a>
<br />
<ul class="two">
<li>
<a href="./../stories/" title="Large-Scale Stories I Wrote">Stories</a>
<br />
<ul class="three">
<li>
<a href="./../TheEnemy/">The Enemy</a>
</li>
<li>
<a href="./../TOWTF/">TOW The Fountainhead</a>
</li>
</ul>
</li>
<li>
<a href="./">By Others</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string, "Non Capturing Expand" );
}
# This test tests that the URLs do not have "./" prepended to them
# when given the no_leading_dot option.
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/bio.html",
@{ $test_data->{'items_in_sub'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
no_leading_dot => 1,
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
<li>
<a href="./" title="About Myself">About Me</a>
<br />
<ul class="navbarnested">
<li>
<b>Bio</b>
</li>
<li>
<a href="gloria/" title="A Useful Conspiracy">Gloria</a>
</li>
</ul>
</li>
<li>
<a href="../hoola/" title="Drumming is good for your health">Tam Tam Drums</a>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"no_leading_dot removes the extra ./" );
}
{
my $nav_menu = HTML::Widgets::NavMenu::HeaderRole->new(
'path_info' => "/me/",
@{ $test_data->{'header_role_with_empty_cat'} },
'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="navbarmain">
<li>
<a href="../">Home</a>
</li>
</ul>
<h2>
<a href="../empty-cat/">Empty Category</a>
</h2>
<h2>
<b>About Me</b>
</h2>
<ul class="navbarmain">
<li>
<a href="sub-me1/">Sub Me</a>
</li>
<li>
<a href="sub-me-two/">Sub Me 2</a>
</li>
<li>
<a href="../aloha/">Hello</a>
<br />
<ul class="navbarnested">
<li>
<a href="../aloha/obkb/">OBKB</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Nav Menu with an empty header role." );
}
# Test HTML::Widgets::NavMenu::JQueryTreeView .
{
my $nav_menu = HTML::Widgets::NavMenu::JQueryTreeView->new(
'path_info' => "/me/bio/test.html",
@{ $test_data->{'selective_expand'} },
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="./../../">Home</a>
</li>
<li class="open">
<a href="./../" title="About Myself">About Me</a>
<br />
<ul class="two">
<li>
<a href="./../group-hug/">Group Hug</a>
</li>
<li>
<a href="./../cool-io/">Cool I/O</a>
</li>
<li>
<a href="./../../resume.html">Resume</a>
</li>
</ul>
</li>
<li>
<a href="./../../halifax/">Halifax</a>
</li>
<li>
<a href="./../../open-source/" title="Open Source Software I Wrote">Software</a>
<br />
<ul class="two">
<li>
<a href="./../../open-source/fooware/">Fooware</a>
</li>
<li>
<a href="./../../open-source/condor-man/" title="Kwalitee">Condor-Man</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"HTML::Widgets::NavMenu::JQueryTreeView #1" );
}
# Test HTML::Widgets::NavMenu::JQueryTreeView with hidden.
{
my $nav_menu = HTML::Widgets::NavMenu::JQueryTreeView->new(
'path_info' => "/me/",
@{ $test_data->{'hidden_item'} },
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="../">Home</a>
</li>
<li class="open">
<b>About Me</b>
<br />
<ul class="two">
<li>
<a href="visible/">Visible</a>
</li>
<li>
<a href="visible-too/">Visible Too</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"JQTreeView Nav Menu with Hidden Item" );
}
# Test HTML::Widgets::NavMenu::JQueryTreeView with li_id.
{
my $nav_menu = HTML::Widgets::NavMenu::JQueryTreeView->new(
'path_info' => "/me/",
@{ $test_data->{'with_ids_nav_menu'} },
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="../">Home</a>
</li>
<li class="open" id="about_me">
<b>About Me</b>
<br />
<ul class="two">
<li id="visible">
<a href="visible/">Visible</a>
</li>
<li id="FooBar">
<a href="visible-too/">Visible Too</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"JQTreeView Nav Menu with li_id" );
}
# Test HTML::Widgets::NavMenu (non-JQueryTreeView) with li_id.
{
my $nav_menu = HTML::Widgets::NavMenu->new(
'path_info' => "/me/",
@{ $test_data->{'with_ids_nav_menu'} },
'ul_classes' => [ "one", "two", "three" ],
);
my $rendered = $nav_menu->render();
my $expected_string = <<"EOF";
<ul class="one">
<li>
<a href="../">Home</a>
</li>
<li id="about_me">
<b>About Me</b>
<br />
<ul class="two">
<li id="visible">
<a href="visible/">Visible</a>
</li>
<li id="FooBar">
<a href="visible-too/">Visible Too</a>
</li>
</ul>
</li>
</ul>
EOF
# TEST
test_nav_menu( $rendered, $expected_string,
"Non-JQTreeView Nav Menu with li_id" );
}