The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::Mini::Unit;
use Template::Mustache;

case t::ReadTemplatesFromFileSystemWithNamespace {
    {
        package t::ReadTemplatesFromFileSystemWithNamespace::Mustache;
        use base 'Template::Mustache';
        use File::Temp qw/ tempdir /;

        our $tmpdir;
        sub template_path { $tmpdir ||= tempdir(CLEANUP => 1); }

        sub template_namespace { 't' }

        sub name        { 'Joe' }
        sub occupation  { 'Plumber' }
        sub is_instance { ref(shift) ? 'yes' : 'no' }
    }

    setup {
        my $mustache = 't::ReadTemplatesFromFileSystemWithNamespace::Mustache';
        $self->{class} = $mustache;

        my $tmp = $mustache->template_path();
        mkdir "$tmp/ReadTemplatesFromFileSystemWithNamespace";

        local *FILE;
        open FILE, '+>', "$tmp/ReadTemplatesFromFileSystemWithNamespace/Mustache.mustache";
        print FILE '{{name}} -- {{occupation}} ({{is_instance}})';
        close FILE;
    }

    test class_render {
        assert_equal($self->{class}->render(), "Joe -- Plumber (no)");
    }

    test instance_render {
        assert_equal($self->{class}->new()->render(), "Joe -- Plumber (yes)");
    }
}