11 package Fake::DateTime;
14 has 'string_repr' => ( is => 'ro' );
18 use Moose::Util::TypeConstraints;
20 coerce 'Fake::DateTime' => from 'Str' =>
21 via { Fake::DateTime->new( string_repr => $_ ) };
23 has 'closing_date' => (
25 isa => 'Fake::DateTime',
28 my ( $self, $val ) = @_;
29 ::pass('... trigger is being called');
30 ::isa_ok( $self->closing_date, 'Fake::DateTime' );
31 ::isa_ok( $val, 'Fake::DateTime' );
37 my $mtg = Mortgage->new( closing_date => 'yesterday' );
38 isa_ok( $mtg, 'Mortgage' );
40 # check that coercion worked
41 isa_ok( $mtg->closing_date, 'Fake::DateTime' );
44 Mortgage->meta->make_immutable;
45 ok( Mortgage->meta->is_immutable, '... Mortgage is now immutable' );
48 my $mtg = Mortgage->new( closing_date => 'yesterday' );
49 isa_ok( $mtg, 'Mortgage' );
51 # check that coercion worked
52 isa_ok( $mtg->closing_date, 'Fake::DateTime' );