Rewrite 105view_deps.t and a ViewDeps::Result class.
[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;
7364d776 10use Devel::Dwarn;
11use Data::Dumper;
2446dc59 12use Carp::Always;
6ebf5cbb 13
14BEGIN {
2446dc59 15 $ENV{DBIC_TRACE} = 1;
6ebf5cbb 16 use_ok('DBIx::Class::ResultSource::View');
17}
18
d40f513f 19### SANITY
20
1e70d9dc 21my $view = DBIx::Class::ResultSource::View->new( { name => 'Quux' } );
66fb15b6 22
9efcc79f 23isa_ok( $view, 'DBIx::Class::ResultSource', 'A new view' );
24isa_ok( $view, 'DBIx::Class', 'A new view also' );
6ebf5cbb 25
e55d9d89 26can_ok( $view, $_ ) for qw/new from deploy_depends_on/;
6ebf5cbb 27
d40f513f 28### DEPS
2446dc59 29#if (-e "t/var/viewdeps.db") {
30#ok(unlink("t/var/viewdeps.db"),"Deleted old DB OK");
31#}
32my @sql_files = glob("t/sql/ViewDeps*.sql");
33for (@sql_files) {
34 ok( unlink($_), "Deleted old SQL $_ OK" );
35}
6ebf5cbb 36
2446dc59 37my $schema = ViewDeps->connect( 'dbi:SQLite:dbname=t/var/viewdeps.db',
38 { quote_char => '"', } );
1e70d9dc 39ok( $schema, 'Connected to ViewDeps schema OK' );
9efcc79f 40
7364d776 41my $deps_ref = {
42 map {
43 $schema->resultset($_)->result_source->source_name =>
44 $schema->resultset($_)->result_source->deploy_depends_on
45 }
46 grep {
47 $schema->resultset($_)
48 ->result_source->isa('DBIx::Class::ResultSource::View')
49 } @{ [ $schema->sources ] }
50};
51
52diag( Dwarn $deps_ref);
53
2446dc59 54my @sorted_sources = sort {
55 keys %{ $deps_ref->{$a} || {} } <=> keys %{ $deps_ref->{$b} || {} }
56 || $a cmp $b
57 }
58 keys %$deps_ref;
7364d776 59
2446dc59 60diag( Dwarn @sorted_sources );
7364d776 61
62### DEPLOY
bf5c3a3f 63
2446dc59 64my $ddl_dir = "t/sql";
65$schema->create_ddl_dir( [ 'PostgreSQL', 'MySQL', 'SQLite' ], 0.1, $ddl_dir );
66
67ok( -e $_, "$_ was created successfully" ) for @sql_files;
68
69$schema->deploy( { add_drop_table => 1 } );
70
71### DOES ORDERING WORK?
72
73my $tr = SQL::Translator->new( add_drop_table => 1 );
74$tr->{parser_args}->{'DBIx::Class::Schema'} = $schema;
75my $sqlt = SQL::Translator::Parser::DBIx::Class::parse( $tr, $schema );
76
77diag( Dwarn $sqlt); # Nope. A 1.
bf5c3a3f 78
6ebf5cbb 79done_testing;