8c8bb9ae71ac086f162874228aa02f44d4844274
[dbsrgits/DBIx-Class.git] / t / 105view_deps.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7 use Test::Exception;
8 use lib qw(t/lib);
9 use ViewDeps;
10
11 BEGIN {
12     use_ok('DBIx::Class::ResultSource::View');
13 }
14
15 ### SANITY
16
17 my $view = DBIx::Class::ResultSource::View->new( { name => 'Quux' } );
18
19 isa_ok( $view, 'DBIx::Class::ResultSource', 'A new view');
20 isa_ok( $view, 'DBIx::Class', 'A new view also');
21
22 can_ok( $view, $_ ) for qw/new from depends_on/;
23
24 ### DEPS
25
26 my $schema = ViewDeps->connect;
27 ok( $schema, 'Connected to ViewDeps schema OK' );
28
29 my @bar_deps = keys %{ $schema->resultset('Bar')->result_source->depends_on };
30
31 my @foo_deps = keys %{ $schema->resultset('Foo')->result_source->depends_on };
32
33 isa_ok( $schema->resultset('Bar')->result_source,
34     'DBIx::Class::ResultSource::View', 'Bar' );
35
36 is( $bar_deps[0], 'mixin', 'which is reported to depend on mixin.' );
37 is( $foo_deps[0], undef,   'Foo has no dependencies...' );
38
39 isa_ok(
40     $schema->resultset('Foo')->result_source,
41     'DBIx::Class::ResultSource::View',
42     'though Foo'
43 );
44 isa_ok(
45     $schema->resultset('Baz')->result_source,
46     'DBIx::Class::ResultSource::Table',
47     "Baz on the other hand"
48 );
49 dies_ok {
50     ViewDeps::Result::Baz->result_source_instance->depends_on(
51         { ViewDeps::Result::Mixin->result_source_instance->name => 1 } );
52 }
53 "...and you cannot use depends_on with that";
54
55 done_testing;