Fixed in-place compose_connection. Thanks to dwc for the tests.
Matt S Trout [Fri, 27 Jan 2006 18:27:34 +0000 (18:27 +0000)]
lib/DBIx/Class/Schema.pm
t/30dbicplain.t [new file with mode: 0644]
t/lib/DBICTest/Plain.pm [new file with mode: 0644]
t/lib/DBICTest/Plain/Test.pm [new file with mode: 0644]

index 787a018..69b48d3 100644 (file)
@@ -241,6 +241,7 @@ sub compose_connection {
       $class->mk_classdata(resultset_instance => $source->resultset);
       $class->mk_classdata(class_resolver => $self);
     }
+    $self->connection(@info);
     return $self;
   }
 
diff --git a/t/30dbicplain.t b/t/30dbicplain.t
new file mode 100644 (file)
index 0000000..b0546b3
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+
+eval 'use Catalyst::Model::DBIC::Plain; 1'
+  or plan skip_all => 'Install Catalyst::Model::DBIC::Plain to run this test';
+plan tests => 1;
+
+use lib qw(t/lib);
+use DBICTest::Plain;
+
+cmp_ok(DBICTest::Plain->resultset('Test')->count, '>', 0, 'count is valid');
diff --git a/t/lib/DBICTest/Plain.pm b/t/lib/DBICTest/Plain.pm
new file mode 100644 (file)
index 0000000..b4e8428
--- /dev/null
@@ -0,0 +1,33 @@
+package DBICTest::Plain;
+
+use strict;
+use warnings;
+use base qw/Catalyst::Model::DBIC::Plain/;
+use DBI;
+
+my $db_file = "t/var/Plain.db";
+
+unlink($db_file) if -e $db_file;
+unlink($db_file . "-journal") if -e $db_file . "-journal";
+mkdir("t/var") unless -d "t/var";
+
+my $dsn = "dbi:SQLite:${db_file}";
+
+__PACKAGE__->load_classes;
+my $schema = __PACKAGE__->compose_connection(__PACKAGE__, $dsn);
+
+my $dbh = DBI->connect($dsn);
+
+my $sql = <<EOSQL;
+CREATE TABLE test (
+  id INTEGER NOT NULL,
+  name VARCHAR(32) NOT NULL
+);
+
+INSERT INTO test (id, name) VALUES (1, 'DBIC::Plain is broken!');
+
+EOSQL
+
+$dbh->do($_) for split(/\n\n/, $sql);
+
+1;
diff --git a/t/lib/DBICTest/Plain/Test.pm b/t/lib/DBICTest/Plain/Test.pm
new file mode 100644 (file)
index 0000000..4b5e00f
--- /dev/null
@@ -0,0 +1,17 @@
+package DBICTest::Plain::Test;
+
+use base 'DBIx::Class::Core';
+
+__PACKAGE__->table('test');
+__PACKAGE__->add_columns(
+  'id' => {
+    data_type => 'integer',
+    is_auto_increment => 1
+  },
+  'name' => {
+    data_type => 'varchar',
+  },
+);
+__PACKAGE__->set_primary_key('id');
+
+1;