Commit | Line | Data |
c8c27020 |
1 | use strict; |
2 | use Test::More tests => 6; |
3 | use Test::Exception; |
4 | use lib qw(t/lib); |
5 | use make_dbictest_db; |
6 | |
7 | use DBIx::Class::Schema::Loader; |
8 | |
9 | # test skip_relationships |
10 | my $regular = schema_with(); |
11 | is( ref($regular->source('Bar')->relationship_info('fooref')), 'HASH', |
12 | 'regularly-made schema has fooref rel', |
13 | ); |
14 | my $skip_rel = schema_with( skip_relationships => 1 ); |
15 | is_deeply( $skip_rel->source('Bar')->relationship_info('fooref'), undef, |
16 | 'skip_relationships blocks generation of fooref rel', |
17 | ); |
18 | |
19 | |
20 | # test relationship_attrs |
21 | throws_ok { |
22 | schema_with( relationship_attrs => 'laughably invalid!!!' ); |
23 | } qr/relationship_attrs/, 'throws error for invalid relationship_attrs'; |
24 | |
25 | |
26 | { |
27 | my $nodelete = schema_with( relationship_attrs => |
28 | { |
29 | all => { cascade_delete => 0 }, |
30 | belongs_to => { cascade_delete => 1 }, |
31 | }, |
32 | ); |
33 | |
34 | my $bars_info = $nodelete->source('Foo')->relationship_info('bars'); |
35 | #use Data::Dumper; |
36 | #die Dumper([ $nodelete->source('Foo')->relationships() ]); |
37 | my $fooref_info = $nodelete->source('Bar')->relationship_info('fooref'); |
38 | is( ref($fooref_info), 'HASH', |
39 | 'fooref rel is present', |
40 | ); |
41 | is( $bars_info->{attrs}->{cascade_delete}, 0, |
42 | 'relationship_attrs settings seem to be getting through to the generated rels', |
43 | ); |
44 | is( $fooref_info->{attrs}->{cascade_delete}, 1, |
45 | 'belongs_to in relationship_attrs overrides all def', |
46 | ); |
47 | } |
48 | |
49 | |
50 | #### generates a new schema with the given opts every time it's called |
51 | my $schema_counter = 0; |
52 | sub schema_with { |
53 | $schema_counter++; |
54 | DBIx::Class::Schema::Loader::make_schema_at( |
55 | 'DBICTest::Schema::'.$schema_counter, |
56 | { naming => 'current', @_ }, |
57 | [ $make_dbictest_db::dsn ], |
58 | ); |
59 | "DBICTest::Schema::$schema_counter"->clone; |
60 | } |