diff options
Diffstat (limited to 't/moose-roles.t')
-rw-r--r-- | t/moose-roles.t | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/t/moose-roles.t b/t/moose-roles.t new file mode 100644 index 0000000..89659d4 --- /dev/null +++ b/t/moose-roles.t @@ -0,0 +1,58 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Test::Requires 'Moose'; +use lib 't/lib'; +use Test::Class::Refresh; + +use Class::Refresh; + +my $dir = prepare_temp_dir_for('moose-roles'); +push @INC, $dir->dirname; + +our %reloads; + +require Foo; +require Bar; +require Baz; + +Class::Refresh->refresh; + +is_deeply([sort map { $_->name } Foo->meta->get_all_attributes], + ['foo', 'foo_role1'], + "correct starting attr list"); +is_deeply([sort map { $_->name } Bar->meta->get_all_attributes], + ['bar', 'bar_role', 'foo_role1'], + "correct starting attr list"); +is_deeply([sort map { $_->name } Baz->meta->get_all_attributes], + ['bar_role', 'baz', 'baz_role', 'foo_role1'], + "correct starting attr list"); +is_deeply(\%reloads, + { foo => 1, foo_role => 1, + bar => 1, bar_role => 1, + baz => 1, baz_role => 1 }, + "everything loaded"); + + +sleep 2; +update_temp_dir_for('moose-roles', $dir); + +Class::Refresh->refresh; + +is_deeply([sort map { $_->name } Foo->meta->get_all_attributes], + ['foo', 'foo_role2'], + "correct starting attr list"); +is_deeply([sort map { $_->name } Bar->meta->get_all_attributes], + ['bar', 'bar_role', 'foo_role2'], + "correct starting attr list"); +is_deeply([sort map { $_->name } Baz->meta->get_all_attributes], + ['bar_role', 'baz', 'baz_role', 'foo_role2'], + "correct starting attr list"); +is_deeply(\%reloads, + { foo => 2, foo_role => 2, + bar => 2, bar_role => 2, + baz => 2, baz_role => 1 }, + "everything reloaded"); + +done_testing; |