diff options
Diffstat (limited to 't/attributes/inherit_lazy_build.t')
-rw-r--r-- | t/attributes/inherit_lazy_build.t | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/t/attributes/inherit_lazy_build.t b/t/attributes/inherit_lazy_build.t new file mode 100644 index 0000000..35919e5 --- /dev/null +++ b/t/attributes/inherit_lazy_build.t @@ -0,0 +1,75 @@ +use strict; +use warnings; + +use Test::More; + +{ + + package Parent; + use Moose; + has attr => ( is => 'rw', isa => 'Str' ); +} + +{ + package Child; + use Moose; + extends 'Parent'; + + has '+attr' => ( lazy_build => 1 ); + + sub _build_attr { + return 'value'; + } +} + +my $parent = Parent->new(); +my $child = Child->new(); + +ok( + !$parent->meta->get_attribute('attr')->is_lazy_build, + 'attribute in parent does not have lazy_build trait' +); +ok( + !$parent->meta->get_attribute('attr')->is_lazy, + 'attribute in parent does not have lazy trait' +); +ok( + !$parent->meta->get_attribute('attr')->has_builder, + 'attribute in parent does not have a builder method' +); +ok( + !$parent->meta->get_attribute('attr')->has_clearer, + 'attribute in parent does not have a clearer method' +); +ok( + !$parent->meta->get_attribute('attr')->has_predicate, + 'attribute in parent does not have a predicate method' +); + +ok( + $child->meta->get_attribute('attr')->is_lazy_build, + 'attribute in child has the lazy_build trait' +); +ok( + $child->meta->get_attribute('attr')->is_lazy, + 'attribute in child has the lazy trait' +); +ok( + $child->meta->get_attribute('attr')->has_builder, + 'attribute in child has a builder method' +); +ok( + $child->meta->get_attribute('attr')->has_clearer, + 'attribute in child has a clearer method' +); +ok( + $child->meta->get_attribute('attr')->has_predicate, + 'attribute in child has a predicate method' +); + +is( + $child->attr, 'value', + 'attribute defined as lazy_build in child is properly built' +); + +done_testing; |