deployment_statements() and cursor_class() are storage-dependent
[dbsrgits/DBIx-Class.git] / t / storage / deploy.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use Test::Exception;
6 use Path::Class qw/dir/;
7
8 use lib qw(t/lib);
9 use DBICTest;
10
11 BEGIN {
12   require DBIx::Class;
13   plan skip_all =>
14       'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('deploy')
15     unless DBIx::Class::Optional::Dependencies->req_ok_for ('deploy')
16 }
17
18 # this is how maint/gen_schema did it (connect() to force a storage
19 # instance, but no conninfo)
20 # there ought to be more code like this in the wild
21 like(
22   DBICTest::Schema->connect->deployment_statements('SQLite'),
23   qr/\bCREATE TABLE\b/i
24 );
25
26 lives_ok( sub {
27     my $parse_schema = DBICTest->init_schema(no_deploy => 1);
28     $parse_schema->deploy({},'t/lib/test_deploy');
29     $parse_schema->resultset("Artist")->all();
30 }, 'artist table deployed correctly' );
31
32 my $schema = DBICTest->init_schema();
33
34 my $var = dir ("t/var/ddl_dir-$$");
35 $var->mkpath unless -d $var;
36
37 my $test_dir_1 = $var->subdir ('test1', 'foo', 'bar' );
38 $test_dir_1->rmtree if -d $test_dir_1;
39 $schema->create_ddl_dir( undef, undef, $test_dir_1 );
40
41 ok( -d $test_dir_1, 'create_ddl_dir did a make_path on its target dir' );
42 ok( scalar( glob $test_dir_1.'/*.sql' ), 'there are sql files in there' );
43
44 {
45   local $TODO = 'we should probably add some tests here for actual deployability of the DDL?';
46   ok( 0 );
47 }
48
49 END {
50   $var->rmtree;
51 }
52
53 done_testing;