The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Dynamically defined Hooks with eager and lazy code resolution

use strict;
use warnings;

use Test::More tests => 2;
use RPC::ExtDirect::Test::Util;

our $WAS_THERE;

sub global_after {
    $WAS_THERE = 1;
}

use RPC::ExtDirect::API;

use lib 't/lib';
use test::hooks;

my $api = RPC::ExtDirect::API->new_from_hashref(
    api_href => {
        before => 'test::hooks::global_before',
        after  => \&global_after,

        Foo => {
            methods => {
                foo_zero => { len => 0 },
            },
        }
    }
);

my $method_ref = $api->get_method_by_name('Foo', 'foo_zero');

$api->before->run(
    api        => $api,
    method_ref => $method_ref,
);

ok $test::hooks::WAS_THERE, "Before hook resolved";

$api->after->run(
    api        => $api,
    method_ref => $method_ref,
);

ok $::WAS_THERE, "After hook resolved";