Trunk passes tests again - todoify everything multicreate related to branch it out...
Peter Rabbitson [Thu, 20 Nov 2008 10:25:32 +0000 (10:25 +0000)]
lib/DBIx/Class/Row.pm
t/66relationship.t
t/96multi_create.t

index 0d08638..c1fb2b0 100644 (file)
@@ -761,24 +761,17 @@ sub set_inflated_columns {
       {
         my $rel = delete $upd->{$key};
         $self->set_from_related($key => $rel);
-        $self->{_relationship_data}{$key} = $rel;          
+        $self->{_relationship_data}{$key} = $rel;
       } elsif ($info && $info->{attrs}{accessor}
-        && $info->{attrs}{accessor} eq 'multi'
-        && ref $upd->{$key} eq 'ARRAY') {
-        my $others = delete $upd->{$key};
-        foreach my $rel_obj (@$others) {
-          if(!Scalar::Util::blessed($rel_obj)) {
-            $rel_obj = $self->create_related($key, $rel_obj);
-          }
-        }
-        $self->{_relationship_data}{$key} = $others; 
-#            $related->{$key} = $others;
-        next;
+        && $info->{attrs}{accessor} eq 'multi') {
+          $self->throw_exception(
+            "Recursive update is not supported over relationships of type multi ($key)"
+          );
       }
       elsif ($self->has_column($key)
         && exists $self->column_info($key)->{_inflate_info})
       {
-        $self->set_inflated_column($key, delete $upd->{$key});          
+        $self->set_inflated_column($key, delete $upd->{$key});
       }
     }
   }
index 224403c..3a96107 100644 (file)
@@ -262,6 +262,8 @@ is ($@, '', 'Staged insertion successful');
 ok($new_artist->in_storage, 'artist inserted');
 ok($new_related_cd->in_storage, 'new_related_cd inserted');
 
+TODO: {
+local $TODO = "TODOify for multicreate branch";
 my $new_cd = $schema->resultset("CD")->new_result({});
 my $new_related_artist = $new_cd->new_related('artist', { 'name' => 'Marillion',});
 lives_ok (
@@ -285,3 +287,4 @@ cmp_ok($relinfo->{attrs}{is_foreign_key_constraint}, '==', 1, "is_foreign_key_co
 my $rs_overridden = $schema->source('ForceForeign');
 my $relinfo_with_attr = $rs_overridden->relationship_info ('cd_3');
 cmp_ok($relinfo_with_attr->{attrs}{is_foreign_key_constraint}, '==', 0, "is_foreign_key_constraint defined for belongs_to relationships with attr.");
+}
index e202c59..4445f3f 100644 (file)
@@ -168,6 +168,8 @@ eval {
 };
 diag $@ if $@;
 
+TODO: {
+local $TODO = "Todoify for multicreate branch";
 # test might_have again but with a PK == FK in the middle (obviously not specified)
 eval {
   my $artist = $schema->resultset('Artist')->first;
@@ -258,6 +260,7 @@ eval {
   );
 };
 diag $@ if $@;
+}
 
 # nested find_or_create
 eval {