--- trunk/t/02database.t 2004/08/29 19:16:01 12 +++ trunk/t/02database.t 2004/09/05 16:04:35 15 @@ -3,38 +3,75 @@ use strict; use warnings; -use Test::More tests => 3; +use Test::More; use blib; +eval "use DBD::SQLite"; +plan skip_all => "DBD::SQLite required for testing" if $@; +plan tests => 14; + +use_ok('DBI'); use_ok('Fuse::DBI'); -my $sql_filenames = q{ +my $test_db = 'fusedbi.db'; +my $dsn = "DBI:SQLite:dbname=$test_db"; +my $mount = '/tmp/fuse_dbi_mnt'; + +ok((! -e $test_db || unlink $test_db), "test db: $test_db"); + +ok((! -e $mount || rmdir $mount), "mount point $mount"); + +mkdir $mount || die "mkdir $mount: $!"; +ok(-d $mount, "mkdir $mount"); + +ok(my $dbh = DBI->connect($dsn, , '', '', { RaiseError => 1 }), + "connect fusedbi test database"); + +ok($dbh->do(qq{ + create table files ( + name text primary key, + data text + ) +}), "create table files"); + +ok(my $sth = $dbh->prepare(qq{ + insert into files (name,data) values (?,?) +}), "prepare"); + +foreach my $file (qw(file dir/file dir/subdir/file)) { + my $data = "this is test data\n" x length($file); + ok($sth->execute($file,$data), "insert $file"); +} + +my $sql_filenames = qq{ select - oid as id, - namespace||'/'||name||' ['||oid||']' as filename, - length(template) as size, - iseditable as writable - from template ; + name as id, + name as filename, + length(data) as size, + 0 as writable + from files }; -my $sql_read = q{ - select template - from template - where oid = ?; +my $sql_read = qq{ + select data + from files + where name = ?; }; -my $sql_update = q{ - update template - set template = ? - where oid = ?; +my $sql_update = qq{ + update files + set data = ? + where name = ?; }; +system "fusermount -q -u $mount" || diag "nothing mounted at $mount, ok"; + my $mnt = Fuse::DBI->mount({ filenames => $sql_filenames, read => $sql_read, update => $sql_update, - dsn => 'DBI:Pg:dbname=webgui', - mount => '/mnt2', + dsn => $dsn, + mount => $mount, }); ok($mnt, "mount"); @@ -44,3 +81,5 @@ ok($mnt->umount,"umount"); +ok(unlink $test_db,"rm $test_db"); +