Rename (with a silent compat shim) couple of badly named customcond args
[dbsrgits/DBIx-Class.git] / t / lib / DBICTest / Util.pm
index e7a0525..b821243 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 
 use Config;
 use Carp 'confess';
-use Scalar::Util 'blessed';
+use Scalar::Util qw(blessed refaddr);
 
 use base 'Exporter';
 our @EXPORT_OK = qw(local_umask stacktrace check_customcond_args);
@@ -52,20 +52,28 @@ sub check_customcond_args ($) {
   confess "Expecting a hashref"
     unless ref $args eq 'HASH';
 
-  for (qw(foreign_relname self_alias foreign_alias)) {
+  for (qw(rel_name foreign_relname self_alias foreign_alias)) {
     confess "Custom condition argument '$_' must be a plain string"
       if length ref $args->{$_} or ! length $args->{$_};
   }
 
+  confess "Current and legacy rel_name arguments do not match"
+    if $args->{rel_name} ne $args->{foreign_relname};
+
   confess "Custom condition argument 'self_resultsource' must be a rsrc instance"
     unless defined blessed $args->{self_resultsource} and $args->{self_resultsource}->isa('DBIx::Class::ResultSource');
 
   confess "Passed resultsource has no record of the supplied rel_name - likely wrong \$rsrc"
-    unless ref $args->{self_resultsource}->relationship_info($args->{foreign_relname});
+    unless ref $args->{self_resultsource}->relationship_info($args->{rel_name});
+
+  if (defined $args->{self_resultobj} or defined $args->{self_rowobj} ) {
+    for (qw(self_resultobj self_rowobj)) {
+      confess "Custom condition argument '$_' must be a result instance"
+        unless defined blessed $args->{$_} and $args->{$_}->isa('DBIx::Class::Row');
+    }
 
-  if (defined $args->{self_rowobj}) {
-    confess "Custom condition argument 'self_rowobj' must be a result instance"
-      unless defined blessed $args->{self_rowobj} and $args->{self_rowobj}->isa('DBIx::Class::Row');
+    confess "Current and legacy self_resultobj arguments do not match"
+      if refaddr($args->{self_resultobj}) != refaddr($args->{self_rowobj});
   }
 
   $args;