X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FDBICTest%2FSchema%2FTrack.pm;h=6360ca0a92efe6c9ba9751b12a27976c3f3ece53;hb=a267ea85dbed950ecd00f5e6a139e33b1a67c7bf;hp=c27ba988bbd5d33194e4f489d4d6b08c27c631b7;hpb=a126983e43f896c64e0ae7ba01c8a3d690d8125a;p=dbsrgits%2FDBIx-Class.git diff --git a/t/lib/DBICTest/Schema/Track.pm b/t/lib/DBICTest/Schema/Track.pm index c27ba98..6360ca0 100644 --- a/t/lib/DBICTest/Schema/Track.pm +++ b/t/lib/DBICTest/Schema/Track.pm @@ -2,7 +2,13 @@ package # hide from PAUSE DBICTest::Schema::Track; use base qw/DBICTest::BaseResult/; -__PACKAGE__->load_components(qw/InflateColumn::DateTime Ordered/); +use Carp qw/confess/; + +__PACKAGE__->load_components(qw{ + +DBICTest::DeployComponent + InflateColumn::DateTime + Ordered +}); __PACKAGE__->table('track'); __PACKAGE__->add_columns( @@ -64,19 +70,37 @@ __PACKAGE__->belongs_to( ); __PACKAGE__->might_have ( - 'next_track', - __PACKAGE__, - sub { - my ( $me_alias, $rel_alias, $me_result_source, $rel_name, $optional_me_object ) = @_; - return - ({ "${rel_alias}.cd" => { '=', \"${me_alias}.cd" }, - "${rel_alias}.position" => { '>', \"${me_alias}.position" }, - }, - $optional_me_object && - { "${rel_alias}.cd" => $optional_me_object->cd, - "${rel_alias}.position" => { '>', $optional_me_object->position }, - }); - }, + next_track => __PACKAGE__, + 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 @missing_args = grep { ! defined $args->{$_} } + qw/self_alias foreign_alias self_resultsource foreign_relname/; + confess "Required arguments not supplied to custom rel coderef: @missing_args\n" + if @missing_args; + + return ( + { "$args->{foreign_alias}.cd" => { -ident => "$args->{self_alias}.cd" }, + "$args->{foreign_alias}.position" => { '>' => { -ident => "$args->{self_alias}.position" } }, + }, + $args->{self_rowobj} && { + "$args->{foreign_alias}.cd" => $args->{self_rowobj}->cd, + "$args->{foreign_alias}.position" => { '>' => $args->{self_rowobj}->position }, + } + ) + } ); +our $hook_cb; + +sub sqlt_deploy_hook { + my $class = shift; + + $hook_cb->($class, @_) if $hook_cb; + $class->next::method(@_) if $class->next::can; +} + 1;