Committing thing for move to git.
[dbsrgits/DBIx-Class-Historic.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
b7b008a2 15#################### SANITY
d40f513f 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
b7b008a2 24#################### DEPS
25
8a8525be 26my $schema
27 = ViewDeps->connect( 'dbi:SQLite::memory:', { quote_char => '"', } );
1e70d9dc 28ok( $schema, 'Connected to ViewDeps schema OK' );
9efcc79f 29
7364d776 30my $deps_ref = {
31 map {
b7b008a2 32 $schema->resultset($_)->result_source->name =>
7364d776 33 $schema->resultset($_)->result_source->deploy_depends_on
34 }
35 grep {
36 $schema->resultset($_)
37 ->result_source->isa('DBIx::Class::ResultSource::View')
38 } @{ [ $schema->sources ] }
39};
40
8a8525be 41my @sorted_sources = sort {
42 keys %{ $deps_ref->{$a} || {} } <=> keys %{ $deps_ref->{$b} || {} }
2446dc59 43 || $a cmp $b
44 }
45 keys %$deps_ref;
7364d776 46
b7b008a2 47#################### DEPLOY
bf5c3a3f 48
2446dc59 49$schema->deploy( { add_drop_table => 1 } );
50
b7b008a2 51#################### DOES ORDERING WORK?
52
53my $tr = $schema->{sqlt};
b7b008a2 54
8a8525be 55my @keys = keys %{ $tr->{views} };
b7b008a2 56
8a8525be 57my @sqlt_sources
58 = sort { $tr->{views}->{$a}->{order} cmp $tr->{views}->{$b}->{order} }
aaa03c5d 59 @keys;
2446dc59 60
8a8525be 61is_deeply( \@sorted_sources, \@sqlt_sources,
62 "SQLT view order triumphantly matches our order." );
bf5c3a3f 63
339f7f5d 64#################### AND WHAT ABOUT USING THE SCHEMA?
65
8a8525be 66lives_ok( sub { $schema->resultset($_)->next }, "Query on $_ succeeds" )
67 for grep {
68 $schema->resultset($_)
69 ->result_source->isa('DBIx::Class::ResultSource::View')
70 } @{ [ $schema->sources ] };
339f7f5d 71
6ebf5cbb 72done_testing;