The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Mojo::Base -strict;

BEGIN { $ENV{MOJO_REACTOR} = 'Mojo::Reactor::Poll' }

use Test::More;
use Mojolicious::Lite;
use Test::Mojo;

# More paths with higher precedence
unshift @{app->renderer->paths}, app->home->rel_dir('templates2');
unshift @{app->static->paths},   app->home->rel_dir('public2');

get '/twenty_three' => '23';

get '/fourty_two' => '42';

get '/fourty_two_again' => {template => '42', variant => 'test'};

get '/yada' => {template => 'foo/yada'};

my $t = Test::Mojo->new;

# "templates" directory
$t->get_ok('/twenty_three')->status_is(200)
  ->header_is(Server => 'Mojolicious (Perl)')->content_is("23\n");

# "templates2" directory
$t->get_ok('/fourty_two')->status_is(200)
  ->header_is(Server => 'Mojolicious (Perl)')
  ->content_is("The answer is 42.\n");

# "templates2" directory (variant)
$t->get_ok('/fourty_two_again')->status_is(200)
  ->header_is(Server => 'Mojolicious (Perl)')
  ->content_is("The answer is 43!\n");

# "public2" directory
$t->get_ok('/hello.txt')->status_is(200)
  ->header_is(Server => 'Mojolicious (Perl)')
  ->content_is("Also higher precedence!\n");

# "public" directory
$t->get_ok('/hello2.txt')->status_is(200)
  ->header_is(Server => 'Mojolicious (Perl)')->content_is("X");

# "public2" directory
$t->get_ok('/hello3.txt')->status_is(200)
  ->header_is(Server => 'Mojolicious (Perl)')
  ->content_is("Hello Mojo from... ALL GLORY TO THE HYPNOTOAD!\n");

# "templates2" directory
$t->get_ok('/yada')->status_is(200)->header_is(Server => 'Mojolicious (Perl)')
  ->content_is("Higher precedence!\n");

done_testing();