#!/usr/bin/perl -w use strict; use warnings; use Test::More; BEGIN { require "t/utils.pl" } our (@AvailableDrivers); use constant TESTS_PER_DRIVER => 16; my $total = scalar(@AvailableDrivers) * TESTS_PER_DRIVER; plan tests => $total; foreach my $d ( @AvailableDrivers ) { SKIP: { unless( has_schema( 'TestApp::Address', $d ) ) { skip "No schema for '$d' driver", TESTS_PER_DRIVER; } unless( should_test( $d ) ) { skip "ENV is not defined for driver '$d'", TESTS_PER_DRIVER; } my $handle = get_handle( $d ); connect_handle( $handle ); isa_ok($handle->dbh, 'DBI::db'); my $ret = init_schema( 'TestApp::Address', $handle ); isa_ok($ret,'DBI::st', "Inserted the schema. got a statement handle back"); my $rec = TestApp::Address->new($handle); isa_ok($rec, 'DBIx::SearchBuilder::Record'); my ($id) = $rec->Create( Name => 'Jesse', Phone => '617 124 567'); ok($id,"Created record #$id"); ok($rec->Load($id), "Loaded the record"); is($rec->id, $id, "The record has its id"); is($rec->Name, 'Jesse', "The record's name is Jesse"); my $rec_cache = TestApp::Address->new($handle); my ($status, $msg) = $rec_cache->LoadById($id); ok($status, 'loaded record'); is($rec_cache->id, $id, 'the same record as we created'); is($msg, 'Fetched from cache', 'we fetched record from cache'); DBIx::SearchBuilder::Record::Cachable->FlushCache; ok($rec->LoadByCols( Name => 'Jesse' ), "Loaded the record"); is($rec->id, $id, "The record has its id"); is($rec->Name, 'Jesse', "The record's name is Jesse"); $rec_cache = TestApp::Address->new($handle); ($status, $msg) = $rec_cache->LoadById($id); ok($status, 'loaded record'); is($rec_cache->id, $id, 'the same record as we created'); is($msg, 'Fetched from cache', 'we fetched record from cache'); cleanup_schema( 'TestApp::Address', $handle ); }} # SKIP, foreach blocks 1; package TestApp::Address; use base qw/DBIx::SearchBuilder::Record::Cachable/; sub _Init { my $self = shift; my $handle = shift; $self->Table('Address'); $self->_Handle($handle); } sub _ClassAccessible { return { id => {read => 1, type => 'int(11)', default => ''}, Name => {read => 1, write => 1, type => 'varchar(14)', default => ''}, Phone => {read => 1, write => 1, type => 'varchar(18)', length => 18, default => ''}, EmployeeId => {read => 1, write => 1, type => 'int(8)', default => ''}, } } sub _CacheConfig { return { 'cache_for_sec' => 60, }; } sub schema_mysql { <