[Jifty-commit] r1774 - Jifty-DBI/trunk/t
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Mon Aug 7 12:56:48 EDT 2006
Author: nelhage
Date: Mon Aug 7 12:56:46 2006
New Revision: 1774
Added:
Jifty-DBI/trunk/t/04memcached.t (contents, props changed)
Log:
Adding some basic Memcached tests
Added: Jifty-DBI/trunk/t/04memcached.t
==============================================================================
--- (empty file)
+++ Jifty-DBI/trunk/t/04memcached.t Mon Aug 7 12:56:46 2006
@@ -0,0 +1,137 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use Test::More;
+
+BEGIN { require 't/utils.pl' }
+
+use constant TESTS_PER_DRIVER => 1;
+
+our (@available_drivers);
+my $total = scalar(@available_drivers) * TESTS_PER_DRIVER;
+# plan tests => $total;
+
+eval { use Cache::Memcached; };
+plan skip_all => 'Cache::Memcached not available' if $@;
+
+my $memd = Cache::Memcached->new({TestApp::Address->memcached_config});
+
+plan skip_all => 'Memcached apparently not running' unless $memd->set('test_testval', 0, 1);
+
+plan 'no_plan';
+
+for my $d (@available_drivers) {
+ 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" );
+
+
+ # Create a record, load from cache
+ my $rec = TestApp::Address->new( handle => $handle );
+
+ 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 => $handle );
+ my ( $status, $msg ) = $rec_cache->load_by_cols( id => $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' );
+ is( $rec_cache->phone, '617 124 567', "Loaded the phone number correctly");
+
+ # Check mutation
+ $rec->set_phone('555 543 6789');
+ is($rec->phone, '555 543 6789');
+
+ $rec = TestApp::Address->new( handle => $handle );
+ $rec->load($id);
+ is($rec->phone, '555 543 6789', "Loaded changed data from cache OK");
+}}
+
+package TestApp::Address;
+use base qw/Jifty::DBI::Record::Memcached/;
+
+# Make this unique per run and database, since otherwise we'll get
+# stale caches when we run for the 2nd and future drivers
+
+sub cache_key_prefix {
+ my $self = shift;
+ my $driver = ref($self->_handle);
+ $driver = lc $1 if $driver =~ /::(\w+)$/;
+ return "jifty-test-$$-$driver";
+}
+
+sub schema_mysql {
+ <<EOF;
+CREATE TEMPORARY table addresses (
+ id integer AUTO_INCREMENT,
+ name varchar(36),
+ phone varchar(18),
+ address varchar(50),
+ employee_id int(8),
+ PRIMARY KEY (id))
+EOF
+
+}
+
+sub schema_pg {
+ <<EOF;
+CREATE TEMPORARY table addresses (
+ id serial PRIMARY KEY,
+ name varchar,
+ phone varchar,
+ address varchar,
+ employee_id integer
+)
+EOF
+
+}
+
+sub schema_sqlite {
+
+ <<EOF;
+CREATE table addresses (
+ id integer primary key,
+ name varchar(36),
+ phone varchar(18),
+ address varchar(50),
+ employee_id int(8))
+EOF
+
+}
+
+1;
+
+package TestApp::Address::Schema;
+
+BEGIN {
+ use Jifty::DBI::Schema;
+
+ column name => type is 'varchar(14)';
+
+ column phone => type is 'varchar(18)';
+
+ column
+ address => type is 'varchar(50)',
+ default is '';
+
+ column employee_id => type is 'int(8)';
+}
+1;
More information about the Jifty-commit
mailing list