3 use MooseX::Types -declare [qw/ ValidAppName ValidAppComponent /];
5 my $appname_re = qr/[\w:]+/;
6 my $regex = qr/$appname_re::(M|V|C|Model|View|Controller)::.*/;
10 where { /^$appname_re$/ && ! /$regex/ };
12 subtype ValidAppComponent,
21 from ValidAppComponent,
22 via { Catalyst::Utils::class2appclass($_); };
26 via { Catalyst::Utils::class2env($_); };
30 via { Catalyst::Utils::class2env($_) };
33 use Test::More 'no_plan';
34 use Moose::Util::TypeContraints;
35 use My::Types qw/ValidAppName ValidAppComponent AppEnv/;
37 my $app_tc = find_type_constraint(ValidAppName);
39 ok !$app_tc->check('');
40 ok $app_tc->check('MyApp');
42 my $comp_tc = find_type_constraint(ValidAppComponent);
44 ok !$comp_tc->check('');
45 ok !$comp_tc->check('MyApp');
46 ok $comp_tc->check('MyApp::Model::Foo');
48 my $env_tc = my $comp_tc = find_type_constraint(AppEnv);
50 #ok !$env_tc->check('');
52 is $app_tc->coerce('MyApp::Model::Foo'), 'MyApp';