fix Date::Simple req in t/cdbi-t/04-lazy.t
[dbsrgits/DBIx-Class.git] / t / cdbi-t / 24-meta_info.t
CommitLineData
a9c8094b 1#!/usr/bin/perl -w
2
3use strict;
4use Test::More tests => 12;
5use Test::Warn;
6
7package Temp::DBI;
8use base qw(DBIx::Class::CDBICompat);
9Temp::DBI->columns(All => qw(id date));
1097f5e4 10
11my $strptime_inflate = sub {
12 Time::Piece->strptime(shift, "%Y-%m-%d")
13};
14Temp::DBI->has_a(
15 date => 'Time::Piece',
16 inflate => $strptime_inflate
17);
a9c8094b 18
19
20package Temp::Person;
21use base 'Temp::DBI';
22Temp::Person->table('people');
23Temp::Person->columns(Info => qw(name pet));
24Temp::Person->has_a( pet => 'Temp::Pet' );
25
26package Temp::Pet;
27use base 'Temp::DBI';
28Temp::Pet->table('pets');
29Temp::Pet->columns(Info => qw(name));
30Temp::Pet->has_many(owners => 'Temp::Person');
31
32package main;
33
34{
35 my $pn_meta = Temp::Person->meta_info('has_a');
36 is_deeply [sort keys %$pn_meta], [qw/date pet/], "Person has Date and Pet";
37}
38
39{
40 my $pt_meta = Temp::Pet->meta_info;
41 is_deeply [keys %{$pt_meta->{has_a}}], [qw/date/], "Pet has Date";
42 is_deeply [keys %{$pt_meta->{has_many}}], [qw/owners/], "And owners";
43}
44
45{
46 my $pet = Temp::Person->meta_info( has_a => 'pet' );
47 is $pet->class, 'Temp::Person';
48 is $pet->foreign_class, 'Temp::Pet';
49 is $pet->accessor, 'pet';
50 is $pet->name, 'has_a';
51}
52
53{
54 my $owners = Temp::Pet->meta_info( has_many => 'owners' );
a9c8094b 55
1097f5e4 56 is_deeply $owners->args, {
57 foreign_key => 'pet',
58 mapping => [],
59 };
a9c8094b 60}
61
62{
63 my $date = Temp::Pet->meta_info( has_a => 'date' );
64 is $date->class, 'Temp::DBI';
65 is $date->foreign_class, 'Time::Piece';
66 is $date->accessor, 'date';
1097f5e4 67 is $date->args->{inflate}, $strptime_inflate;
a9c8094b 68}