File: 16redirect.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 (98 lines) | stat: -rw-r--r-- 1,816 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
#!/usr/bin/perl

use strict;
use warnings;

package MockCGI;

sub new
{
    my $self = {};
    bless $self, shift;
    return $self;
}

sub redirect
{
    my ( $self, $path ) = (@_);
    return "ReDirect-To: $path";
}

sub script_name
{
    my $self = shift;
    return "{{{Script Name}}}";
}

package main;

use vars qw($exit_count);

BEGIN
{
    *CORE::GLOBAL::exit = sub { ++$exit_count; };
}

use lib './t/lib';

use Test::More tests => 6;

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

use HTML::Widgets::NavMenu ();

my $test_data = get_test_data();

{
    eval {
        my $nav_menu = HTML::Widgets::NavMenu->new(
            'path_info' => "",
            @{ $test_data->{'minimal'} },
            'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
        );
    };

    # TEST
    isa_ok( $@, "HTML::Widgets::NavMenu::Error::Redirect", "\$@" );
    reset_out_buffer();
    $exit_count = 0;
    $@->CGIpm_perform_redirect( MockCGI->new() );

    # TEST
    is(
        get_out_buffer(),
        "ReDirect-To: {{{Script Name}}}/",
        "Checking that redirect-to works"
    );

    # TEST
    is( $exit_count, 1, "Counting an exit" );
}

{
    eval {
        my $nav_menu = HTML::Widgets::NavMenu->new(
            'path_info' => "/hello/world//",
            @{ $test_data->{'minimal'} },
            'ul_classes' => [ "navbarmain", ("navbarnested") x 5 ],
        );
    };

    # TEST
    isa_ok( $@, "HTML::Widgets::NavMenu::Error::Redirect", "\$@" );
    reset_out_buffer();
    $exit_count = 0;
    $@->CGIpm_perform_redirect( MockCGI->new() );

    # TEST
    is(
        get_out_buffer(),
        "ReDirect-To: {{{Script Name}}}/hello/world/",
        "Checking that redirect-to works"
    );

    # TEST
    is( $exit_count, 1, "Counting an exit" );
}