Commit | Line | Data |
256c505c |
1 | use Test::More; |
2 | |
3 | plan tests => 7; |
4 | |
5 | use lib qw(t/lib); |
6 | |
7 | use_ok('DBICTest'); |
8 | |
9 | # has_a test |
10 | my $cd = DBICTest::CD->retrieve(4); |
11 | my ($artist) = $cd->search_related('artist'); |
12 | is($artist->name, 'Random Boy Band', 'has_a search_related ok'); |
13 | |
14 | # has_many test with an order_by clause defined |
15 | $artist = DBICTest::Artist->retrieve(1); |
16 | is( ($artist->search_related('cds'))[1]->title, 'Spoonful of bees', 'has_many search_related with order_by ok' ); |
17 | |
18 | # search_related with additional abstract query |
19 | my @cds = $artist->search_related('cds', { title => { like => '%of%' } } ); |
20 | is( $cds[1]->title, 'Forkful of bees', 'search_related with abstract query ok' ); |
21 | |
22 | # creating a related object |
23 | $artist->create_related( 'cds', { |
24 | title => 'Big Flop', |
25 | year => 2005, |
26 | } ); |
27 | is( ($artist->search_related('cds'))[3]->title, 'Big Flop', 'create_related ok' ); |
28 | |
29 | # try to add a bogus relationship using the wrong cols |
30 | eval { |
31 | $artist->add_relationship( |
32 | tracks => 'DBICTest::Track', |
33 | { 'foreign.cd' => 'self.cdid' } |
34 | ); |
35 | }; |
36 | like($@, qr/no such accessor/, 'failed when creating a rel with invalid key, ok'); |
37 | |
38 | # another bogus relationship using no join condition |
39 | eval { |
40 | $artist->add_relationship( tracks => 'DBICTest::Track' ); |
41 | }; |
42 | like($@, qr/no join condition/, 'failed when creating a rel without join condition, ok'); |