1use strict; 2use Test::More tests => 3; 3 4package Temp::DBI; 5use base qw(Class::DBI); 6Temp::DBI->columns(All => qw(id date)); 7Temp::DBI->has_a( date => 'Time::Piece', inflate => sub { 8 Time::Piece->strptime(shift, "%Y-%m-%d") 9}); 10 11 12package Temp::Person; 13use base 'Temp::DBI'; 14Temp::Person->table('people'); 15Temp::Person->columns(Info => qw(name pet)); 16Temp::Person->has_a( pet => 'Temp::Pet' ); 17 18package Temp::Pet; 19use base 'Temp::DBI'; 20Temp::Pet->table('pets'); 21Temp::Pet->columns(Info => qw(name)); 22Temp::Pet->has_many(owners => 'Temp::Person'); 23 24package main; 25 26my $pn_meta = Temp::Person->meta_info('has_a'); 27is_deeply [sort keys %$pn_meta], [qw/date pet/], "Person has Date and Pet"; 28 29my $pt_meta = Temp::Pet->meta_info; 30is_deeply [keys %{$pt_meta->{has_a}}], [qw/date/], "Pet has Date"; 31is_deeply [keys %{$pt_meta->{has_many}}], [qw/owners/], "And owners"; 32 33 34