Get rid of Path::Class ( that *does* feel good )
[dbsrgits/DBIx-Class.git] / t / inflate / file_column.t
index 639b12d..453adee 100644 (file)
@@ -1,16 +1,56 @@
+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+use DBIx::Class::Optional::Dependencies -skip_all_without => qw( ic_file );
+
 use strict;
-use warnings;  
+use warnings;
 
 use Test::More;
-use lib qw(t/lib);
+
 use DBICTest;
+use DBICTest::Schema;
+use File::Temp ();
 use File::Compare;
 use Path::Class qw/file/;
 
-my $schema = DBICTest->init_schema();
+{
+  local $ENV{DBIC_IC_FILE_NOWARN} = 1;
+
+  package DBICTest::Schema::FileColumn;
+
+  use strict;
+  use warnings;
+  use base qw/DBICTest::BaseResult/;
+
+  __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 => File::Temp->newdir( CLEANUP => 1, DIR => DBICTest::Util::tmpdir() ),
+      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;
@@ -48,7 +88,7 @@ $fh = $new_source_file->open('r') or die "failed to open $new_source_file: $!\n"
 $fc->file({ handle => $fh, filename => $new_fname });
 $fc->update;
 
-TODO: {
+{
     local $TODO = 'design change required';
     ok ( ! -e $storage, 'old storage does not exist' );
 };
@@ -61,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' );
@@ -77,8 +120,8 @@ $storage = file(
     $fc->file->{filename},
 );
 
-TODO: {
+{
     local $TODO = 'need resultset delete override to delete_all';
     $rs->delete;
     ok ( ! -e $storage, 'storage does not exist after $rs->delete' );
-};
+}