#!/usr/bin/perl use strict; use warnings; use Test::More; BEGIN { plan skip_all => "DBD::SQLite are required" unless eval { require DBI; require DBD::SQLite }; } use ok 'KiokuDB::Backend::DBI'; use ok 'KiokuDB::Entry'; my $b = KiokuDB::Backend::DBI->new( dsn => 'dbi:SQLite:dbname=:memory:', columns => [qw(oi)], ); my $entry = KiokuDB::Entry->new( id => "foo", root => 1, class => "Foo", data => { oi => "vey" }, ); my %c = map { $_ => [] } qw(id class data tied root oi);; $b->entry_to_row($entry, \%c); is( $c{id}[0], $entry->id, "ID" ); is( $c{class}[0], $entry->class, "class" ); ok( $c{root}[0], "root entry" ); like( $c{data}[0], qr/vey/, "data" ); ok( $c{oi}[0], "extracted column" ); is( $c{oi}[0], "vey", "column data" ); SKIP: { skip "SQL::Translator >= 0.11005 is required", 2 unless eval "use SQL::Translator 0.11005"; $b->deploy; $b->txn_do(sub { $b->insert( $entry ); }); my ( $loaded_entry ) = $b->get("foo"); isnt( $loaded_entry, $entry, "entries are different" ); is_deeply( $loaded_entry, $entry, "but eq deeply" ); } done_testing;