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