Ensure undef_on_null_fk does not affect non-introspectable custom conds
[dbsrgits/DBIx-Class.git] / t / lib / DBICTest / Schema / CD.pm
index 0cbf55a..1a0771b 100644 (file)
@@ -1,7 +1,11 @@
 package # hide from PAUSE
     DBICTest::Schema::CD;
 
-use base qw/DBICTest::BaseResult/;
+use warnings;
+use strict;
+
+use base 'DBICTest::BaseResult';
+use DBICTest::Util 'check_customcond_args';
 
 # this tests table name as scalar ref
 # DO NOT REMOVE THE \
@@ -46,8 +50,22 @@ __PACKAGE__->belongs_to( very_long_artist_relationship => 'DBICTest::Schema::Art
 });
 
 # in case this is a single-cd it promotes a track from another cd
-__PACKAGE__->belongs_to( single_track => 'DBICTest::Schema::Track', 'single_track',
-    { join_type => 'left'}
+__PACKAGE__->belongs_to( single_track => 'DBICTest::Schema::Track',
+  { 'foreign.trackid' => 'self.single_track' },
+  { join_type => 'left'},
+);
+
+__PACKAGE__->belongs_to( single_track_opaque => 'DBICTest::Schema::Track',
+  sub {
+    my $args = &check_customcond_args;
+    \ " $args->{foreign_alias}.trackid = $args->{self_alias}.single_track ";
+  },
+  { join_type => 'left'},
+);
+
+# add a non-left single relationship for the complex prefetch tests
+__PACKAGE__->belongs_to( existing_single_track => 'DBICTest::Schema::Track',
+  { 'foreign.trackid' => 'self.single_track' },
 );
 
 __PACKAGE__->has_many( tracks => 'DBICTest::Schema::Track' );
@@ -59,6 +77,11 @@ __PACKAGE__->has_many(
     cd_to_producer => 'DBICTest::Schema::CD_to_Producer' => 'cd'
 );
 
+__PACKAGE__->has_many( twokeys => 'DBICTest::Schema::TwoKeys', 'cd' );
+
+
+# the undef condition in this rel is *deliberate*
+# tests oddball legacy syntax
 __PACKAGE__->might_have(
     liner_notes => 'DBICTest::Schema::LinerNotes', undef,
     { proxy => [ qw/notes/ ] },
@@ -73,7 +96,7 @@ __PACKAGE__->many_to_many(
 );
 
 __PACKAGE__->belongs_to('genre', 'DBICTest::Schema::Genre',
-    { 'foreign.genreid' => 'self.genreid' },
+    'genreid',
     {
         join_type => 'left',
         on_delete => 'SET NULL',
@@ -107,7 +130,11 @@ __PACKAGE__->might_have(
     'last_track',
     'DBICTest::Schema::Track',
     sub {
-        my $args = shift;
+        # This is for test purposes only. A regular user does not
+        # need to sanity check the passed-in arguments, this is what
+        # the tests are for :)
+        my $args = &check_customcond_args;
+
         return (
             {
                 "$args->{foreign_alias}.trackid" => { '=' =>