File: 15aspetersen-inherit.t

package info (click to toggle)
libhtml-widgets-navmenu-perl 1.1000-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 636 kB
  • sloc: perl: 8,051; makefile: 9
file content (116 lines) | stat: -rw-r--r-- 2,132 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/perl

use strict;
use warnings;

package MyCustom::NavMenu::Iterator;

use parent 'HTML::Widgets::NavMenu::Iterator::NavMenu';

sub get_open_sub_menu_tags
{
    my $self = shift;
    return ( "<br class=\"hello\" />",
        $self->gen_ul_tag( { 'depth' => $self->stack->len() } ) );
}

sub get_currently_active_text
{
    my $self = shift;
    my $node = shift;
    return "<i class=\"shlomif\">" . $node->text() . "</i>";
}

1;

package MyCustom::NavMenu;

use parent 'HTML::Widgets::NavMenu';

sub _get_nav_menu_traverser
{
    my $self = shift;

    return MyCustom::NavMenu::Iterator->new(
        $self->_get_nav_menu_traverser_args() );
}

package main;

use lib './t/lib';

use Test::More tests => 1;

use HTML::Widgets::NavMenu ();

use HTML::Widgets::NavMenu::Test::Data;

my $test_data = get_test_data();

sub validate_nav_menu
{
    my $rendered        = shift;
    my $expected_string = shift;
    my $test_blurb      = shift;

    my @result = ( @{ $rendered->{html} } );

    my @expected = ( split( /\n/, $expected_string ) );

    is_deeply( \@expected, \@result, $test_blurb );
}

# This test tests that an inherited nav menu similar to what Stephen Petersen
# needs works.
{
    my $nav_menu = MyCustom::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>
<i class="shlomif">About Me</i>
</li>
<li>
<a href="../show-always/">Show Always</a>
<br class="hello" />
<ul class="navbarnested">
<li>
<a href="../show-always/gandalf/">Gandalf</a>
</li>
<li>
<a href="../robin/">Robin</a>
<br class="hello" />
<ul class="navbarnested">
<li>
<a href="../robin/hood/">Hood</a>
</li>
</ul>
</li>
<li>
<a href="../esther/">Queen Esther</a>
<br class="hello" />
<ul class="navbarnested">
<li>
<a href="../haman/">Haman</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
EOF

    # TEST
    validate_nav_menu( $rendered, $expected_string,
        "Nav Menu with show_always" );
}