Merge branch 'master' into topic/constructor_rewrite
[dbsrgits/DBIx-Class.git] / t / inflate / file_column.t
index 7f0eddd..e200619 100644 (file)
@@ -4,22 +4,53 @@ use warnings;
 use Test::More;
 use lib qw(t/lib);
 
-# inject IC::File into the result baseclass for testing
-BEGIN {
-  $ENV{DBIC_IC_FILE_NOWARN} = 1;
-  require DBICTest::BaseResult;
-  DBICTest::BaseResult->load_components (qw/InflateColumn::File/);
-}
-
 
 use DBICTest;
+use DBICTest::Schema;
 use File::Compare;
 use Path::Class qw/file/;
 
+{
+  local $ENV{DBIC_IC_FILE_NOWARN} = 1;
+
+  package DBICTest::Schema::FileColumn;
+
+  use strict;
+  use warnings;
+  use base qw/DBICTest::BaseResult/;
+
+  use File::Temp qw/tempdir/;
+
+  __PACKAGE__->load_components (qw/InflateColumn::File/);
+  __PACKAGE__->table('file_columns');
+
+  __PACKAGE__->add_columns(
+    id => { data_type => 'integer', is_auto_increment => 1 },
+    file => {
+      data_type        => 'varchar',
+      is_file_column   => 1,
+      file_column_path => tempdir(CLEANUP => 1),
+      size             => 255
+    }
+  );
+
+  __PACKAGE__->set_primary_key('id');
+}
+DBICTest::Schema->load_classes('FileColumn');
+
 my $schema = DBICTest->init_schema;
 
 plan tests => 10;
 
+if (not $ENV{DBICTEST_SQLT_DEPLOY}) {
+  $schema->storage->dbh->do(<<'EOF');
+  CREATE TABLE file_columns (
+    id INTEGER PRIMARY KEY,
+    file VARCHAR(255)
+  )
+EOF
+}
+
 my $rs = $schema->resultset('FileColumn');
 my $source_file = file(__FILE__);
 my $fname = $source_file->basename;
@@ -70,6 +101,9 @@ $fc = $rs->find({ id => $fc->id });
 is ( $fc->file->{filename}, $new_fname, 'new filname matches' );
 ok ( compare($new_storage, $new_source_file) == 0, 'new content matches' );
 
+if ($^O eq 'MSWin32') {
+  close $fc->file->{handle}; # can't delete open files on Win32
+}
 $fc->delete;
 
 ok ( ! -e $storage, 'storage deleted' );