Finish ViewDeps: fix a join in test class, put attribs on Parser, add resultset tests...
[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;
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
2446dc59 26my @sql_files = glob("t/sql/ViewDeps*.sql");
27for (@sql_files) {
28 ok( unlink($_), "Deleted old SQL $_ OK" );
29}
6ebf5cbb 30
339f7f5d 31my $schema = ViewDeps->connect( 'dbi:SQLite::memory:',
2446dc59 32 { quote_char => '"', } );
1e70d9dc 33ok( $schema, 'Connected to ViewDeps schema OK' );
9efcc79f 34
7364d776 35my $deps_ref = {
36 map {
b7b008a2 37 $schema->resultset($_)->result_source->name =>
7364d776 38 $schema->resultset($_)->result_source->deploy_depends_on
39 }
40 grep {
41 $schema->resultset($_)
42 ->result_source->isa('DBIx::Class::ResultSource::View')
43 } @{ [ $schema->sources ] }
44};
45
aaa03c5d 46my @sorted_sources =
47 sort {
48 keys %{ $deps_ref->{$a} || {} }
49 <=>
50 keys %{ $deps_ref->{$b} || {} }
2446dc59 51 || $a cmp $b
52 }
53 keys %$deps_ref;
7364d776 54
b7b008a2 55#################### DEPLOY
bf5c3a3f 56
2446dc59 57my $ddl_dir = "t/sql";
58$schema->create_ddl_dir( [ 'PostgreSQL', 'MySQL', 'SQLite' ], 0.1, $ddl_dir );
59
60ok( -e $_, "$_ was created successfully" ) for @sql_files;
61
62$schema->deploy( { add_drop_table => 1 } );
63
b7b008a2 64#################### DOES ORDERING WORK?
65
66my $tr = $schema->{sqlt};
b7b008a2 67
aaa03c5d 68my @keys = keys %{$tr->{views}};
b7b008a2 69
70my @sqlt_sources =
aaa03c5d 71 sort {
72 $tr->{views}->{$a}->{order}
73 cmp
74 $tr->{views}->{$b}->{order}
75 }
76 @keys;
2446dc59 77
de9cac75 78is_deeply(\@sorted_sources,\@sqlt_sources,"SQLT view order triumphantly matches our order.");
bf5c3a3f 79
339f7f5d 80#################### AND WHAT ABOUT USING THE SCHEMA?
81
82my $a_name_rs = $schema->resultset('ANameArtists');
83my $ab_name_rs = $schema->resultset('AbNameArtists');
84my $aba_name_rs = $schema->resultset('AbaNameArtists');
85my $aba_name_cds_rs = $schema->resultset('AbaNameArtistsAnd2010CDsWithManyTracks');
86my $track_five_rs = $schema->resultset('TrackNumberFives');
87my $year_2010_rs = $schema->resultset('Year2010CDs');
88my $year_2010_cds_rs = $schema->resultset('Year2010CDsWithManyTracks');
89
90ok($a_name_rs, "ANameArtists resultset is OK");
91ok($ab_name_rs, "AbNameArtists resultset is OK");
92ok($aba_name_rs, "AbaNameArtists resultset is OK");
93ok($aba_name_cds_rs, "AbaNameArtistsAnd2010CDsWithManyTracks resultset is OK");
94ok($track_five_rs, "TrackNumberFives resultset is OK");
95ok($year_2010_rs, "Year2010CDs resultset is OK");
96ok($year_2010_cds_rs, "Year2010CDsWithManyTracks resultset is OK");
97
6ebf5cbb 98done_testing;