Changeset 2858

Show
Ignore:
Timestamp:
07/29/08 19:49:59 (4 months ago)
Author:
mpaschal
Message:

Test column definitions of a multikey class
BugzID: 80847

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/release-42/t/ddl-tests.pl

    r2853 r2858  
    7575 
    7676 
     77package Ddltest::Multikey; 
     78use base qw( MT::Object ); 
     79 
     80__PACKAGE__->install_properties({ 
     81    column_defs => { 
     82        fkey  => 'integer not null', 
     83        type  => 'string(255) not null', 
     84        value => 'string(1024)', 
     85    }, 
     86    datasource  => 'multikey', 
     87    primary_key => [ qw( fkey type ) ], 
     88    cacheable   => 0, 
     89}); 
     90 
     91 
    7792package Ddltest::InvalidType; 
    7893use base qw( MT::Object ); 
     
    209224    } 
    210225 
    211     if ($expected->{type} ne $got->{type}) { 
     226    if (!defined $got->{type} || $expected->{type} ne $got->{type}) { 
    212227        fail($reason); 
    213228        diag("Expected type ", $expected->{type}, " but got ", $got->{type}); 
     
    306321} 
    307322 
     323sub multikey_defs : Tests(8) { 
     324    my $self = shift; 
     325 
     326    my $class_defs = Ddltest::Multikey->column_defs(); 
     327    ok($class_defs, 'Multikey class DDL settings are defined'); 
     328 
     329    # TODO: multikeys aren't reported as keys. 
     330    is_def($class_defs->{fkey},  _def(1, 'integer', auto => 0,    key => 0), 'Multikey id column def is correct'); 
     331    is_def($class_defs->{type},  _def(1, 'string',  size => 255,  key => 0), 'Multikey type column def is correct'); 
     332    is_def($class_defs->{value}, _def(0, 'string',  size => 1024, key => 0), 'Multikey value column def is correct'); 
     333 
     334    $self->_setup_table('Ddltest::Multikey'); 
     335    my $table_defs = MT::Object->driver->dbd->ddl_class->column_defs('Ddltest::Multikey'); 
     336    ok($table_defs, 'Multikey table DDL settings are defined'); 
     337 
     338    is_def($table_defs->{fkey},  _def(1, 'integer', auto => 0),    'Multikey id column def is correct'); 
     339    is_def($table_defs->{type},  _def(1, 'string',  size => 255),  'Multikey type column def is correct'); 
     340    is_def($table_defs->{value}, _def(0, 'string',  size => 1024), 'Multikey value column def is correct'); 
     341} 
     342 
    308343sub invalid_type : Tests(3) { 
    309344    my $self = shift; 
     
    319354} 
    320355 
    321 sub fixable : Tests(12) { 
    322     my $self = shift; 
     356sub _setup_table { 
     357    my $self = shift; 
     358    my ($class) = @_; 
    323359 
    324360    my $driver    = MT::Object->dbi_driver; 
     
    327363 
    328364    eval { 
    329         if ($driver->table_exists('Ddltest::Fixable')) { 
    330             my $sql = $ddl_class->drop_table_sql('Ddltest::Fixable'); 
     365        if ($driver->table_exists($class)) { 
     366            my $sql = $ddl_class->drop_table_sql($class); 
    331367            $dbh->do($sql); 
    332368        } 
    333369    }; 
    334370    eval { 
    335         my $sql = $ddl_class->create_table_sql('Ddltest::Fixable'); 
     371        my $sql = $ddl_class->create_table_sql($class); 
    336372        $dbh->do($sql); 
    337373    }; 
     374} 
     375 
     376sub fixable : Tests(12) { 
     377    my $self = shift; 
     378 
     379    my $driver    = MT::Object->dbi_driver; 
     380    my $dbh       = $driver->rw_handle; 
     381    my $ddl_class = $driver->dbd->ddl_class; 
     382 
     383    $self->_setup_table('Ddltest::Fixable'); 
    338384    for my $i (1..5) { 
    339385        my $obj = Ddltest::Fixable->new;