From: Chris Prather Date: Sat, 13 Mar 2010 00:30:23 +0000 (-0500) Subject: add tests for inheriting an attribute and adding lazy_build by ether on #moose X-Git-Tag: 1.18~55 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=04c8370f92ca13399398d495ec4777fecdd90cbd;p=gitmo%2FMoose.git add tests for inheriting an attribute and adding lazy_build by ether on #moose --- diff --git a/t/100_bugs/029_lazy_build_inherited.t b/t/100_bugs/029_lazy_build_inherited.t new file mode 100644 index 0000000..8027675 --- /dev/null +++ b/t/100_bugs/029_lazy_build_inherited.t @@ -0,0 +1,53 @@ +use strict; +use warnings; + +use Test::More tests => 12; +use Test::Exception; +use Test::NoWarnings; + +{ + 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'; + } +} + +package main; + +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');