TODOified test for RT#40701
[dbsrgits/DBIx-Class.git] / t / delete / related.t
index f3c8d9b..49cd88f 100644 (file)
@@ -4,37 +4,58 @@ use warnings;
 use lib qw(t/lib);
 use DBICTest;
 
-plan tests => 3;
+plan tests => 4;
 
 my $schema = DBICTest->init_schema();
 
 my $ars = $schema->resultset('Artist');
 my $cdrs = $schema->resultset('CD');
+my $cd2pr_rs = $schema->resultset('CD_to_Producer');
 
 # create some custom entries
-$ars->create ({ artistid => 9, name => 'dead man walking' });
+$ars->populate ([
+  [qw/artistid  name/],
+  [qw/71        a1/],
+  [qw/72        a2/],
+  [qw/73        a3/],
+]);
+
 $cdrs->populate ([
   [qw/cdid artist title   year/],
-  [qw/70   2      delete0 2005/],
-  [qw/71   3      delete1 2005/],
-  [qw/72   3      delete2 2005/],
-  [qw/73   3      delete3 2006/],
-  [qw/74   3      delete4 2007/],
-  [qw/75   9      delete5 2008/],
+  [qw/70   71     delete0 2005/],
+  [qw/71   72     delete1 2005/],
+  [qw/72   72     delete2 2005/],
+  [qw/73   72     delete3 2006/],
+  [qw/74   72     delete4 2007/],
+  [qw/75   73     delete5 2008/],
 ]);
 
+my $prod = $schema->resultset('Producer')->create ({ name => 'deleter' });
+my $prod_cd = $cdrs->find (70);
+my $cd2pr = $cd2pr_rs->create ({
+  producer => $prod,
+  cd => $prod_cd,
+});
+
 my $total_cds = $cdrs->count;
 
 # test that delete_related w/o conditions deletes all related records only
-$ars->find (9)->delete_related ('cds');
+$ars->search ({name => 'a3' })->search_related ('cds')->delete;
 is ($cdrs->count, $total_cds -= 1, 'related delete ok');
 
-my $a3_cds = $ars->find(3)->cds;
+my $a2_cds = $ars->search ({ name => 'a2' })->search_related ('cds');
 
 # test that related deletion w/conditions deletes just the matched related records only
-$a3_cds->search ({ year => 2005 })->delete;
+$a2_cds->search ({ year => 2005 })->delete;
 is ($cdrs->count, $total_cds -= 2, 'related + condition delete ok');
 
 # test that related deletion with limit condition works
-$a3_cds->search ({}, { rows => 1})->delete;
+$a2_cds->search ({}, { rows => 1})->delete;
 is ($cdrs->count, $total_cds -= 1, 'related + limit delete ok');
+
+TODO: {
+  local $TODO = 'delete_related is based on search_related which is based on search which does not understand object arguments';
+  my $cd2pr_count = $cd2pr_rs->count;
+  $prod_cd->delete_related('cd_to_producer', { producer => $prod } );
+  is ($cd2pr_rs->count, $cd2pr_count -= 1, 'm2m link deleted succesfully');
+}