Fix to update(\%args) with inflation from test case by Peter Rabbitson
[dbsrgits/DBIx-Class.git] / t / run / 08inflate.tl
CommitLineData
0567538f 1sub run_tests {
1edaf6fe 2my $schema = shift;
0567538f 3
4eval { require DateTime };
5plan skip_all => "Need DateTime for inflation tests" if $@;
6
9fcda149 7plan tests => 5;
0567538f 8
2d679367 9DBICTest::Schema::CD->inflate_column( 'year',
0567538f 10 { inflate => sub { DateTime->new( year => shift ) },
11 deflate => sub { shift->year } }
12);
2d679367 13Class::C3->reinitialize;
0567538f 14
15# inflation test
f9db5527 16my $cd = $schema->resultset("CD")->find(3);
0567538f 17
18is( ref($cd->year), 'DateTime', 'year is a DateTime, ok' );
19
20is( $cd->year->month, 1, 'inflated month ok' );
21
22# deflate test
23my $now = DateTime->now;
24$cd->year( $now );
25$cd->update;
26
f9db5527 27($cd) = $schema->resultset("CD")->search( year => $now->year );
0567538f 28is( $cd->year->year, $now->year, 'deflate ok' );
29
9fcda149 30use YAML;
31DBICTest::Schema::Serialized->inflate_column( 'serialized',
32 { inflate => sub { Load (shift) },
33 deflate => sub { die "Expecting a reference" unless (ref $_[0]); Dump (shift) } }
34);
35Class::C3->reinitialize;
36
37my $complex1 = {
38 id => 1,
39 serialized => {
40 a => 1,
41 b => 2,
42 },
43};
44
45my $complex2 = {
46 id => 1,
47 serialized => [qw/a b 1 2/],
48};
49
50my $rs = $schema->resultset('Serialized');
51
52my $entry = $rs->create($complex2);
53
54ok($entry->update ($complex1), "update with hashref deflating ok");
55
56ok($entry->update ($complex2), "update with arrayref deflating ok");
57
0567538f 58}
59
601;