use strict;
use warnings qw(all);
use 5.022;

use Test::More tests => 1;
use Test::Warn;

use Config::Structured;

use experimental qw(signatures);

warning_is {
  my $conf = Config::Structured->new(
    structure => {
      paths => {
        tmp => {
          isa => 'Str'
        }
      },
      activities => {
        something => {
          isa => 'Num'
        }
      }
    },
    config => {
      paths => {
        tmp => '/data/tmp'
      },
      activities => {
        something => 0
      }
    },
    hooks => {
      '/paths/tmp' => {
        on_load => sub ($path, $value) {
          warn("Directory '$value' does not exist at $path (load)");
        }
      }
    }
  );
  $conf->activities->something;
  $conf->paths->tmp;
}
"Directory '/data/tmp' does not exist at /paths/tmp (load)", 'on_access hook runs';