more error handling and testing
[dbsrgits/DBIx-Class-ParameterizedJoinHack.git] / t / 00basic.t
index fa997e3..348353e 100644 (file)
@@ -115,6 +115,36 @@ subtest 'has_many' => sub {
                 ->$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';
     };
 };