The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use lib 't/lib';
use MongooseT;
use IO::File;

{
    package Thing;
    use Mongoose::Class;
    with 'Mongoose::Document';
    has 'file' => ( is=>'rw', isa=>'FileHandle' );
}
{
    my $fh = new IO::File "t/file/in.txt", "r";
    ok defined $fh, 'file open';
    ok my $t = Thing->new( file => $fh ), 'Create object with file';
    ok $t->save, 'Save it';
    ok !$t->file->isa('FileHandle'), 'not blessed yet';
}
{
    is( Thing->count, 1, 'There is one doc' );
    ok my $t = Thing->find_one, 'Retrieve it';
    ok my $file = $t->file, 'Object has file';
    ok $file->isa('Mongoose::File'), 'blessed ok';
    ok $file->isa('MongoDB::GridFS::File'), 'extended ok';
    ok my $data = $t->file->slurp, 'Slurp file content';
    is $data, "Test file\n", 'contents ok';
    ok $t->file->drop, 'dropped';
}
{
    my $t = Thing->find_one;
    ok !defined $t->file, 'dropped';
}

done_testing;