The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use Test::More;

package App;

use Mojolicious::Lite;

my $menu = [
    beer => {
        many => [qw/search browse/],
        one  => [qw/picture ingredients pubs/],
    },
    pub => {
        many => [qw/map list search/],
        one  => [qw/info comments/],
    }
];

plugin 'toto' => menu => $menu;

package main;
use Test::Mojo;

my $t = Test::Mojo->new("App");
$t->ua->max_redirects(10);

$t->get_ok('/')->status_is(200)->content_like(qr/search/i);
$t->get_ok('/beer')->status_is(200)->content_like(qr/search/i);
$t->get_ok('/pub')->status_is(200)->content_like(qr/map/i);

while ( my $item = shift @$menu) {
    my %tabs = %{ shift @$menu };
    $t->get_ok("/$item/$_")->status_is(200) for @{ $tabs{many} };
    $t->get_ok("/$item/$_/2")->status_is(200) for @{ $tabs{one} };
}

done_testing();

1;