coercion for database list
Arthur Axel 'fREW' Schmidt [Tue, 23 Feb 2010 16:24:57 +0000 (10:24 -0600)]
lib/DBIx/Class/DeploymentHandler.pm
t/02-instantiation.t

index 2e2950a..e78d07f 100644 (file)
@@ -8,6 +8,17 @@ require DBIx::Class::ResultSet; # loaded for type constraint
 use Carp::Clan '^DBIx::Class::DeploymentHandler';
 use SQL::Translator;
 
+BEGIN {
+  use Moose::Util::TypeConstraints;
+  subtype 'DBIx::Class::DeploymentHandler::Databases'
+    => as 'ArrayRef[Str]';
+
+  coerce 'DBIx::Class::DeploymentHandler::Databases'
+    => from 'Str'
+    => via { [$_] };
+  no Moose::Util::TypeConstraints;
+}
+
 has schema => (
   isa      => 'DBIx::Class::Schema',
   is       => 'ro',
@@ -64,9 +75,9 @@ has version_rs => (
 );
 
 has databases => (
-  # make this coerce from Str
-  isa => 'ArrayRef[Str]',
-  is  => 'ro',
+  coerce  => 1,
+  isa     => 'DBIx::Class::DeploymentHandler::Databases',
+  is      => 'ro',
   default => sub { [qw( MySQL SQLite PostgreSQL )] },
 );
 
index 57e141a..60d5216 100644 (file)
@@ -19,7 +19,7 @@ VERSION1: {
    my $handler = DBIx::Class::DeploymentHandler->new({
       upgrade_directory => $sql_dir,
       schema => $s,
-      databases => ['SQLite'],
+      databases => 'SQLite',
    });
 
    ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly');
@@ -48,7 +48,7 @@ VERSION2: {
    my $handler = DBIx::Class::DeploymentHandler->new({
       upgrade_directory => $sql_dir,
       schema => $s,
-      databases => ['SQLite'],
+      databases => 'SQLite',
    });
 
    ok($handler, 'DBIx::Class::DeploymentHandler w/2.0 instantiates correctly');
@@ -87,7 +87,7 @@ VERSION3: {
    my $handler = DBIx::Class::DeploymentHandler->new({
       upgrade_directory => $sql_dir,
       schema => $s,
-      databases => ['SQLite'],
+      databases => 'SQLite',
    });
 
    ok($handler, 'DBIx::Class::DeploymentHandler w/3.0 instantiates correctly');