Commit | Line | Data |
70350518 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
dc571b76 |
5 | use Test::Warn; |
70350518 |
6 | use lib qw(t/lib); |
7 | use DBICTest; |
8 | |
a47e1233 |
9 | my $schema = DBICTest->init_schema(); |
8417f5ee |
10 | |
11 | my $queries; |
8417f5ee |
12 | $schema->storage->debugcb( sub{ $queries++ } ); |
a2287768 |
13 | my $sdebug = $schema->storage->debug; |
8417f5ee |
14 | |
8417f5ee |
15 | my $cd = $schema->resultset("CD")->find(1); |
16 | $cd->title('test'); |
17 | |
18 | # SELECT count |
19 | $queries = 0; |
20 | $schema->storage->debug(1); |
21 | |
22 | $cd->update; |
23 | |
24 | is($queries, 1, 'liner_notes (might_have) not prefetched - do not load |
25 | liner_notes on update'); |
26 | |
a2287768 |
27 | $schema->storage->debug($sdebug); |
8417f5ee |
28 | |
29 | |
30 | my $cd2 = $schema->resultset("CD")->find(2, {prefetch => 'liner_notes'}); |
50f18b6b |
31 | $cd2->title('test2'); |
8417f5ee |
32 | |
33 | # SELECT count |
34 | $queries = 0; |
35 | $schema->storage->debug(1); |
36 | |
37 | $cd2->update; |
38 | |
39 | is($queries, 1, 'liner_notes (might_have) prefetched - do not load |
40 | liner_notes on update'); |
41 | |
dc571b76 |
42 | warning_like { |
43 | DBICTest::Schema::Bookmark->might_have( |
44 | linky => 'DBICTest::Schema::Link', |
45 | { "foreign.id" => "self.link" }, |
46 | ); |
47 | } |
48 | qr{"might_have/has_one" must not be on columns with is_nullable set to true}, |
49 | 'might_have should warn if the self.id column is nullable'; |
50 | |
51 | { |
52 | local $ENV{DBIC_DONT_VALIDATE_RELS} = 1; |
53 | warning_is { |
54 | DBICTest::Schema::Bookmark->might_have( |
55 | slinky => 'DBICTest::Schema::Link', |
56 | { "foreign.id" => "self.link" }, |
57 | ); |
58 | } |
59 | undef, |
60 | 'Setting DBIC_DONT_VALIDATE_RELS suppresses nullable relation warnings'; |
61 | } |
62 | |
a2287768 |
63 | $schema->storage->debug($sdebug); |
dc571b76 |
64 | done_testing(); |