Change dependency parser in SQL::T::Parser::DBIC for @view_sources. --AKB
[dbsrgits/DBIx-Class.git] / t / 105view_deps.t
CommitLineData
6ebf5cbb 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More;
7use Test::Exception;
8use lib qw(t/lib);
6ebf5cbb 9use ViewDeps;
10
11BEGIN {
12 use_ok('DBIx::Class::ResultSource::View');
13}
14
d40f513f 15### SANITY
16
1e70d9dc 17my $view = DBIx::Class::ResultSource::View->new( { name => 'Quux' } );
66fb15b6 18
9efcc79f 19isa_ok( $view, 'DBIx::Class::ResultSource', 'A new view' );
20isa_ok( $view, 'DBIx::Class', 'A new view also' );
6ebf5cbb 21
e55d9d89 22can_ok( $view, $_ ) for qw/new from deploy_depends_on/;
6ebf5cbb 23
d40f513f 24### DEPS
6ebf5cbb 25
26my $schema = ViewDeps->connect;
1e70d9dc 27ok( $schema, 'Connected to ViewDeps schema OK' );
9efcc79f 28
ebed3aaf 29
30my $bar_rs = $schema->resultset('Bar');
6ebf5cbb 31
9efcc79f 32my @bar_deps
33 = keys %{ $schema->resultset('Bar')->result_source->deploy_depends_on };
6ebf5cbb 34
9efcc79f 35my @foo_deps
36 = keys %{ $schema->resultset('Foo')->result_source->deploy_depends_on };
66fb15b6 37
1e70d9dc 38isa_ok( $schema->resultset('Bar')->result_source,
39 'DBIx::Class::ResultSource::View', 'Bar' );
66fb15b6 40
9efcc79f 41is( $bar_deps[0], 'baz', 'which is reported to depend on baz...' );
bf5c3a3f 42is( $bar_deps[1], 'mixin', 'and on mixin.' );
1e70d9dc 43is( $foo_deps[0], undef, 'Foo has no dependencies...' );
44
45isa_ok(
46 $schema->resultset('Foo')->result_source,
47 'DBIx::Class::ResultSource::View',
48 'though Foo'
49);
d40f513f 50isa_ok(
51 $schema->resultset('Baz')->result_source,
52 'DBIx::Class::ResultSource::Table',
53 "Baz on the other hand"
54);
55dies_ok {
9efcc79f 56 ViewDeps::Result::Baz->result_source_instance
57 ->deploy_depends_on("ViewDeps::Result::Mixin");
d40f513f 58}
e55d9d89 59"...and you cannot use deploy_depends_on with that";
6ebf5cbb 60
ebed3aaf 61is(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");
bf5c3a3f 62
ebed3aaf 63my $dir = "t/sql";
9efcc79f 64$schema->create_ddl_dir( ['PostgreSQL','SQLite'], 0.1, $dir );
bf5c3a3f 65
6ebf5cbb 66done_testing;