quote table names that include name_sep
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 17mssql_odbc_dot_in_table_name.t
1 use strict;
2 use lib qw(t/lib);
3 use Test::More;
4 use DBI;
5
6 my $DUMP_DIR;
7 BEGIN { 
8     $DUMP_DIR = './t/_common_dump';
9 }
10
11 use lib $DUMP_DIR;
12 use DBIx::Class::Schema::Loader 'make_schema_at', "dump_to_dir:$DUMP_DIR";
13 use File::Path;
14
15 my $dsn      = $ENV{DBICTEST_MSSQL_ODBC_DSN} || '';
16 my $user     = $ENV{DBICTEST_MSSQL_ODBC_USER} || '';
17 my $password = $ENV{DBICTEST_MSSQL_ODBC_PASS} || '';
18
19 if( !$dsn || !$user ) {
20     plan skip_all => 'You need to set the DBICTEST_MSSQL_ODBC_DSN, _USER, and _PASS environment variables';
21     exit;
22 }
23
24 plan tests => 3;
25
26 my $dbh = DBI->connect($dsn, $user, $password, {
27     RaiseError => 1, PrintError => 0
28 });
29
30 eval { $dbh->do('DROP TABLE [test.dot]') };
31 $dbh->do(q{
32     CREATE TABLE [test.dot] (
33         id INT IDENTITY NOT NULL PRIMARY KEY,
34         dat VARCHAR(8)
35     )
36 });
37
38 rmtree $DUMP_DIR;
39
40 eval {
41     make_schema_at(
42         'TestSL::Schema', 
43         { use_namespaces => 1 },
44         [ $dsn, $user, $password, ]
45     );
46 };
47
48 ok !$@, 'table name with . parsed correctly';
49 diag $@ if $@;
50
51 #system qq{$^X -pi -e 's/"test\.dot"/\\\\"[test.dot]"/' t/_common_dump/TestSL/Schema/Result/TestDot.pm};
52 #diag do { local ($/, @ARGV) = (undef, "t/_common_dump/TestSL/Schema/Result/TestDot.pm"); <> };
53 #do "t/_common_dump/TestSL/Schema/Result/TestDot.pm";
54
55 eval 'use TestSL::Schema';
56 ok !$@, 'loaded schema';
57 diag $@ if $@;
58
59 TODO: {
60     local $TODO = q{this is really a DBIC test to check if the table is usable,
61 and it doesn't work in the released version yet};
62
63     eval {
64         my $rs = TestSL::Schema->resultset('TestDot');
65         my $row = $rs->create({ dat => 'foo' });
66         $row->update({ dat => 'bar' });
67         $row = $rs->find($row->id);
68         $row->delete;
69     };
70     ok !$@, 'used table from DBIC succeessfully';
71     diag $@ if $@;
72 }
73
74 rmtree $DUMP_DIR;
75
76 $dbh->do('DROP TABLE [test.dot]');