Fixed a bug where a sub class would re-run register_source and trigger carp. Minor...
[dbsrgits/DBIx-Class-Schema-ResultSetAccessors.git] / t / basic.t
1 # DBIx::Class::Schema::ResultSetAccessors - check module loading and create testing directory
2
3 use strict;
4 use warnings;
5
6 use lib qw(t/lib);
7
8 use Test::More;
9 use Test::Warn;
10
11 BEGIN {
12     use_ok('MyApp1::Schema');
13 }
14
15 ok my $schema1 = MyApp1::Schema->connect('dbi:SQLite:dbname=:memory:', '', ''),
16     'Got schema 1';
17
18 isa_ok $schema1->resultset('Artist'), 'DBIx::Class::ResultSet';
19 can_ok $schema1, qw/cds artists liner_notes/;
20 isa_ok $schema1->artists, 'DBIx::Class::ResultSet';    # generic resultset
21 isa_ok $schema1->cds, 'MyApp1::Schema::ResultSet::CD'; # custom ResultSet
22
23 # overwrite the accessor name with resultset_accessor_name()
24 can_ok $schema1, qw/source_resultset/;
25 isa_ok $schema1->source_resultset, 'DBIx::Class::ResultSet';
26
27 # test the warnings
28 warning_like { warn_same_name() } qr/Schema method with the same name already exists/,
29     'Schema method with the same name already exists';
30
31 sub warn_same_name {
32     # must use required, because for some reason throws_ok cannot catch
33     # erros with "use"
34     require MyApp2::Schema;
35     
36     # eval'ing this, otherwise an odd error is thrown
37     # "Can't call method "_count_select" on an undefined value"
38     # I presume it's due to the store not having the actual schema installed
39     # as we are connecting to an empty database
40     eval {
41         my $schema = MyApp2::Schema->connect('dbi:SQLite:dbname=:memory:', '', '');
42     };
43 }
44
45 done_testing;