# -*-perl-*-
# $Id: 37_dbi_lazy_load.t,v 1.1 2003/02/21 05:41:29 lachoy Exp $
use strict;
use constant NUM_TESTS => 19;
use Data::Dumper qw( Dumper );
my $TEST_TABLE_NAME = 'lazy_load';
my $SPOPS_CLASS = 'DBILazyLoad';
my $TEST_TABLE_SQL = <
import( tests => NUM_TESTS );
require_ok( 'SPOPS::Initialize' );
my $driver_name = $config->{DBI_driver};
my $spops_dbi_driver = get_spops_driver( $config, $driver_name );
$db = get_db_handle( $config );
create_table( $db, $TEST_TABLE_SQL, $TEST_TABLE_NAME );
# Create the class using SPOPS::Initialize
my $spops_config = {
tester => {
class => $SPOPS_CLASS,
isa => [ $spops_dbi_driver, 'SPOPS::DBI' ],
field => [ qw( Object_id title description ) ],
no_update => [ qw( Object_id ) ],
id_field => 'Object_id',
base_table => $TEST_TABLE_NAME,
table_name => $TEST_TABLE_NAME,
column_group => { summary => [ qw( Object_id title ) ] },
},
};
my $class_init_list = eval { SPOPS::Initialize->process({ config => $spops_config }) };
ok( ! $@, 'Initialize process run' );
is( $class_init_list->[0], $SPOPS_CLASS, 'Initialize class' );
# First just jam some data in there
$SPOPS_CLASS->new({ Object_id => 1, title => 'First',
description => $long })->save();
$SPOPS_CLASS->new({ Object_id => 2, title => 'Second',
description => $long })->save();
$SPOPS_CLASS->new({ Object_id => 3, title => 'Third',
description => $long })->save();
$SPOPS_CLASS->new({ Object_id => 4, title => 'Fourth',
description => $long })->save();
# Now try to fetch it back out grouped
my $items = eval { $SPOPS_CLASS->fetch_group({ column_group => 'summary' }) };
ok( ! $@, "Call to fetch_group with column_group" );
is( scalar @{ $items }, 4, "Number of items fetched" );
is( $items->[0]->{description}, $long, "First description retrieved" );
is( $items->[0]->{Object_id}, 1, "First ID checked" );
is( $items->[1]->{description}, $long, "Second description retrieved" );
is( $items->[1]->{Object_id}, 2, "Second ID checked" );
is( $items->[2]->{description}, $long, "Third description retrieved" );
is( $items->[2]->{Object_id}, 3, "Third ID checked" );
is( $items->[3]->{description}, $long, "Fourth description retrieved" );
is( $items->[3]->{Object_id}, 4, "Fourth ID checked" );
my $constrained = eval { $SPOPS_CLASS->fetch_group({
column_group => 'summary',
where => 'object_id >= 2 AND object_id <= 3' }) };
ok( ! $@, "Call to fetch_group (constrained) with column group" );
is ( scalar @{ $constrained }, 2, "Number of constrained items fetched" );
is( $constrained->[0]->{description}, $long, "First constrained description retrieved" );
is( $constrained->[0]->{Object_id}, 2, "First constrained ID checked" );
is( $constrained->[1]->{description}, $long, "Second constrained description retrieved" );
is( $constrained->[1]->{Object_id}, 3, "Second constrained ID checked" );
}