X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fmulti_create%2Fexisting_in_chain.t;h=825fad414092e1daec2f7e733c223ffd2b4566df;hb=166c656193b56e08b472c675e92b9076aac03a53;hp=c4464a810763e250f2f00d2d3ba87ecac20019ca;hpb=9aa34b292cf1626113e60810d52e50798f87c806;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/multi_create/existing_in_chain.t b/t/multi_create/existing_in_chain.t index c4464a8..825fad4 100644 --- a/t/multi_create/existing_in_chain.t +++ b/t/multi_create/existing_in_chain.t @@ -6,10 +6,30 @@ use Test::Exception; use lib qw(t/lib); use DBICTest; -plan 'no_plan'; - my $schema = DBICTest->init_schema(); +# For fully intuitive multicreate any relationships in a chain +# that do not exist for one reason or another should be created, +# even if the preceeding relationship already exists. +# +# To get this to work a minor rewrite of find() is necessary, and +# more importantly some sort of recursive_insert() call needs to +# be available. The way things will work then is: +# *) while traversing the hierarchy code calls find_or_create() +# *) this in turn calls find(%\nested_dataset) +# *) this should return not only the existing object, but must +# also attach all non-existing (in fact maybe existing) related +# bits of data to it, with in_storage => 0 +# *) then before returning the result of the succesful find(), we +# simply call $obj->recursive_insert and all is dandy +# +# Since this will not be a very clean solution, todoifying for the +# time being until an actual need arises +# +# ribasushi + +TODO: { my $f = __FILE__; local $TODO = "See comment at top of $f for discussion of the TODO"; + { my $counts; $counts->{$_} = $schema->resultset($_)->count for qw/Track CD Genre/; @@ -35,9 +55,8 @@ my $schema = DBICTest->init_schema(); is ($schema->resultset('Genre')->count, $counts->{Genre} + 1, '1 new genre'); is ($existing_nogen_cd->genre->title, 'sugar genre', 'Correct genre assigned to CD'); - }); + }, 'create() did not throw'); } - { my $counts; $counts->{$_} = $schema->resultset($_)->count for qw/Artist CD Producer/; @@ -78,7 +97,9 @@ my $schema = DBICTest->init_schema(); [ qw/queen1 queen2/ ], 'Correct cd names', ); - }); + }, 'create() did not throw'); +} + } -1; +done_testing;