Alzabo

 view release on metacpan or  search on metacpan

t/14-unique-row-cache.t  view on Meta::CPAN

#!/usr/bin/perl -w

use strict;

use File::Spec;

use lib '.', File::Spec->catdir( File::Spec->curdir, 't', 'lib' );

use Alzabo::Test::Utils;

use Test::More;


use Alzabo::Create;
use Alzabo::Config;
use Alzabo::Runtime::UniqueRowCache;
use Alzabo::Runtime;


my @rdbms_names = Alzabo::Test::Utils->rdbms_names;

unless (@rdbms_names)
{
    plan skip_all => 'no test config provided';
    exit;
}

plan tests => 12;


Alzabo::Test::Utils->remove_all_schemas;


# doesn't matter which RDBMS is used
my $rdbms = $rdbms_names[0];

Alzabo::Test::Utils->make_schema($rdbms);

my $config = Alzabo::Test::Utils->test_config_for($rdbms);

my $s = Alzabo::Runtime::Schema->load_from_file( name => $config->{schema_name} );

$s->connect( Alzabo::Test::Utils->connect_params_for($rdbms)  );

{
    my $dep1 = $s->table('department')->insert( values => { name => 'dep1' } );
    my $pk = $dep1->select('department_id');

    my $dep1_copy =
        $s->table('department')->row_by_pk( pk => $pk );

    is( "$dep1", "$dep1_copy",
        "There should only be one reference for a given row" );

    $dep1->delete;
    ok( $dep1->is_deleted, 'copy is deleted' );
    ok( $dep1_copy->is_deleted, 'copy is deleted' );

    my $new_dep1 = $s->table('department')
        ->insert( values => { department_id => $pk, name => 'a new dep1' } );

    ok( ! $new_dep1->is_deleted, 'new dep1 is not deleted' );
}

{
    my $dep2 = $s->table('department')->insert( values => { name => 'dep2' } );
    my $dep2_copy =



( run in 1.270 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )