Finish sort order comparison in 105view_deps.t.
[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
30 #if (-e "t/var/viewdeps.db") {
31 #ok(unlink("t/var/viewdeps.db"),"Deleted old DB OK");
32 #}
33
34 my @sql_files = glob("t/sql/ViewDeps*.sql");
35 for (@sql_files) {
36     ok( unlink($_), "Deleted old SQL $_ OK" );
37 }
38
39 my $schema = ViewDeps->connect( 'dbi:SQLite:dbname=t/var/viewdeps.db',
40     { quote_char => '"', } );
41 ok( $schema, 'Connected to ViewDeps schema OK' );
42
43 my $deps_ref = {
44     map {
45         $schema->resultset($_)->result_source->name =>
46             $schema->resultset($_)->result_source->deploy_depends_on
47         }
48         grep {
49         $schema->resultset($_)
50             ->result_source->isa('DBIx::Class::ResultSource::View')
51         } @{ [ $schema->sources ] }
52 };
53
54 #diag( Dwarn $deps_ref);
55
56 my @sorted_sources = sort {
57     keys %{ $deps_ref->{$a} || {} } <=> keys %{ $deps_ref->{$b} || {} }
58         || $a cmp $b
59     }
60     keys %$deps_ref;
61
62 #diag( Dwarn @sorted_sources );
63
64 #################### DEPLOY
65
66 my $ddl_dir = "t/sql";
67 $schema->create_ddl_dir( [ 'PostgreSQL', 'MySQL', 'SQLite' ], 0.1, $ddl_dir );
68
69 ok( -e $_, "$_ was created successfully" ) for @sql_files;
70
71 $schema->deploy( { add_drop_table => 1 } );
72
73 #################### DOES ORDERING WORK?
74
75 my $tr = $schema->{sqlt};
76 #diag("My TR isa: ", ref $tr);
77 #diag( Dwarn keys %{$tr->{views}});
78 my @keys = keys %{$tr->{views}};
79
80
81 my @sqlt_sources = 
82 sort {
83     $tr->{views}->{$a}->{order} cmp $tr->{views}->{$b}->{order}
84 }
85 @keys;
86
87 #diag(Dwarn @sqlt_sources);
88
89 is_deeply(\@sorted_sources,\@sqlt_sources,"SQLT view order triumphantly matchs our order.");
90
91 done_testing;