Fixes to massive breakage introduced by 5948 ribasushi--
[dbsrgits/DBIx-Class.git] / t / cdbi / testlib / DBIC / Test / SQLite.pm
CommitLineData
2f1d53c5 1package # hide from PAUSE
97d61088 2 DBIC::Test::SQLite;
ea2e61bf 3
4=head1 NAME
5
b8e1e21f 6DBIx::Class::Test::SQLite - Base class for running Class::DBI tests against DBIx::Class compat layer, shamelessly ripped from Class::DBI::Test::SQLite
ea2e61bf 7
8=head1 SYNOPSIS
9
75d07914 10 use base 'DBIx::Class::Test::SQLite';
11
12 __PACKAGE__->set_table('test');
13 __PACKAGE__->columns(All => qw/id name film salary/);
14
15 sub create_sql {
16 return q{
17 id INTEGER PRIMARY KEY,
18 name CHAR(40),
19 film VARCHAR(255),
20 salary INT
21 }
22 }
23
ea2e61bf 24=head1 DESCRIPTION
25
c7ce65e6 26This provides a simple base class for DBIx::Class::CDBICompat tests using
27SQLite. Each class for the test should inherit from this, provide a
28create_sql() method which returns a string representing the SQL used to
29create the table for the class, and then call set_table() to create the
30table, and tie it to the class.
ea2e61bf 31
32=cut
33
34use strict;
bf5ecff9 35use warnings;
ea2e61bf 36
126042ee 37use base qw/DBIx::Class/;
38
eb47985e 39__PACKAGE__->load_components(qw/CDBICompat Core DB/);
126042ee 40
ea2e61bf 41use File::Temp qw/tempfile/;
42my (undef, $DB) = tempfile();
43END { unlink $DB if -e $DB }
44
126042ee 45my @DSN = ("dbi:SQLite:dbname=$DB", '', '', { AutoCommit => 1, RaiseError => 1 });
ea2e61bf 46
47__PACKAGE__->connection(@DSN);
a3018bd3 48__PACKAGE__->set_sql(_table_pragma => 'PRAGMA table_info(__TABLE__)');
49__PACKAGE__->set_sql(_create_me => 'CREATE TABLE __TABLE__ (%s)');
bfb2bd4f 50__PACKAGE__->storage->dbh->do("PRAGMA synchronous = OFF");
ea2e61bf 51
52=head1 METHODS
53
54=head2 set_table
55
75d07914 56 __PACKAGE__->set_table('test');
ea2e61bf 57
58This combines creating the table with the normal DBIx::Class table()
59call.
60
61=cut
62
63sub set_table {
75d07914 64 my ($class, $table) = @_;
65 $class->table($table);
66 $class->_create_test_table;
ea2e61bf 67}
68
69sub _create_test_table {
75d07914 70 my $class = shift;
71 my @vals = $class->sql__table_pragma->select_row;
72 $class->sql__create_me($class->create_sql)->execute unless @vals;
ea2e61bf 73}
74
87c4e602 75=head2 create_sql
76
77This is an abstract method you must override.
ea2e61bf 78
75d07914 79 sub create_sql {
80 return q{
81 id INTEGER PRIMARY KEY,
82 name CHAR(40),
83 film VARCHAR(255),
84 salary INT
85 }
86 }
ea2e61bf 87
88This should return, as a text string, the schema for the table represented
89by this class.
90
91=cut
92
93sub create_sql { die "create_sql() not implemented by $_[0]\n" }
94
951;