->$search
->$fetch_count;
}, qr{__invalid__}, 'unknown relation';
+ like exception {
+ $people->with_parameterized_join(undef, {});
+ }, qr{relation.+name}i, 'missing relation name';
+ like exception {
+ $people->with_parameterized_join(foo => []);
+ }, qr{parameters.+hash.+not.+ARRAY}i, 'invalid parameters';
+ like exception {
+ $people->with_parameterized_join(foo => 23);
+ }, qr{parameters.+hash.+not.+non-reference}i, 'non ref parameters';
+ };
+
+ subtest 'declaration errors' => sub {
+ my $errors = \%My::Schema::Result::Person::ERROR;
+ like delete $errors->{no_args}, qr{Missing.+relation.+name}i,
+ 'no arguments';
+ like delete $errors->{no_source}, qr{Missing.+foreign.+source}i,
+ 'no foreign source';
+ like delete $errors->{no_cond}, qr{Condition.+non-ref.+value}i,
+ 'no condition';
+ like delete $errors->{invalid_cond}, qr{Condition.+SCALAR}i,
+ 'invalid condition';
+ like delete $errors->{undef_args}, qr{Arguments.+array.+non-ref}i,
+ 'undef args';
+ like delete $errors->{invalid_args}, qr{Arguments.+array.+SCALAR}i,
+ 'invalid args';
+ like delete $errors->{undef_builder}, qr{builder.+code.+non-ref}i,
+ 'undef builder';
+ like delete $errors->{invalid_builder}, qr{builder.+code.+ARRAY}i,
+ 'invalid builder';
+ is_deeply $errors, {}, 'no more errors';
};
};