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