e55d2a6278a4d6253f3ce140885d010b37b4b0c4
[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 deploy_depends_on/;
23
24 ### DEPS
25
26 my $schema = ViewDeps->connect;
27 ok( $schema, 'Connected to ViewDeps schema OK' );
28
29
30 my $bar_rs = $schema->resultset('Bar');
31
32 my @bar_deps
33     = keys %{ $schema->resultset('Bar')->result_source->deploy_depends_on };
34
35 my @foo_deps
36     = keys %{ $schema->resultset('Foo')->result_source->deploy_depends_on };
37
38 isa_ok( $schema->resultset('Bar')->result_source,
39     'DBIx::Class::ResultSource::View', 'Bar' );
40
41 is( $bar_deps[0], 'baz',   'which is reported to depend on baz...' );
42 is( $bar_deps[1], 'mixin', 'and on mixin.' );
43 is( $foo_deps[0], undef,   'Foo has no declared dependencies...' );
44
45
46
47 isa_ok(
48     $schema->resultset('Foo')->result_source,
49     'DBIx::Class::ResultSource::View',
50     'though Foo'
51 );
52 isa_ok(
53     $schema->resultset('Baz')->result_source,
54     'DBIx::Class::ResultSource::Table',
55     "Baz on the other hand"
56 );
57 dies_ok {
58     ViewDeps::Result::Baz->result_source_instance
59         ->deploy_depends_on("ViewDeps::Result::Mixin");
60 }
61 "...and you cannot use deploy_depends_on with that";
62
63 is(ViewDeps->source('Foo')->view_definition, $schema->resultset('Bar')->result_source->view_definition, "Package Foo's view definition is equivalent to resultset Bar's view definition");
64
65 my $dir = "t/sql";
66 $schema->create_ddl_dir( ['PostgreSQL','SQLite'], 0.1, $dir );
67
68 done_testing;