Changeset 2488

Show
Ignore:
Timestamp:
06/02/08 20:16:51 (17 months ago)
Author:
mpaschal
Message:

Convert DDL tests to Test::Class in anticipation of failing tests
BugzID: 79949

Location:
branches/release-39/t
Files:
5 added
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-39/t/ddl-tests.pl

    r2462 r2488  
    2525use Test::More; 
    2626use lib 't/lib'; 
    27 use MT::Test qw( :testdb ); 
     27use MT::Test; 
     28use Test::Class; 
    2829 
    2930BEGIN { 
     
    3132        if !-r $ENV{MT_CONFIG}; 
    3233} 
    33  
    34 plan tests => 41; 
    3534 
    3635 
     
    7776 
    7877 
    79 package main; 
    80  
    81 my $driver    = MT::Object->dbi_driver; 
    82 my $dbh       = $driver->rw_handle; 
    83 my $ddl_class = $driver->dbd->ddl_class; 
    84  
    85 # The table may exist from a previous test, so delete it if it does. 
    86 eval { 
    87     if ($driver->table_exists('Ddltest')) { 
    88         my $sql = $driver->dbd->ddl_class->drop_table_sql('Ddltest'); 
    89         $driver->rw_handle->do($sql); 
    90     } 
    91 }; 
    92  
    93 ok(!$driver->table_exists('Ddltest'), 'Ddltest table does not yet exist'); 
    94 ok(!defined $ddl_class->column_defs('Ddltest'), 'Ddltest table has no column defs'); 
    95  
    96 my $create_sql = $ddl_class->create_table_sql('Ddltest'); 
    97 ok($create_sql, 'Create Table SQL for Ddltest is available'); 
    98 my $res = $dbh->do($create_sql); 
    99 ok($res, 'Driver could perform Create Table SQL for Ddltest'); 
    100 diag($dbh->errstr || $DBI::errstr) if !$res; 
     78package Test::DDL; 
     79use base qw( Test::Class MT::Test ); 
     80use Test::More; 
     81 
     82sub startup : Test(startup) { 
     83    my $self = shift; 
     84 
     85    $self->init_testdb(); 
     86 
     87    my $driver    = MT::Object->dbi_driver; 
     88    my $dbh       = $driver->rw_handle; 
     89    my $ddl_class = $driver->dbd->ddl_class; 
     90 
     91    # The table may exist from a previous test, so delete it if it does. 
     92    eval { 
     93        if ($driver->table_exists('Ddltest')) { 
     94            my $sql = $driver->dbd->ddl_class->drop_table_sql('Ddltest'); 
     95            $driver->rw_handle->do($sql); 
     96        } 
     97    }; 
     98} 
     99 
     100sub _00_table_does_not_exist : Tests(3) { 
     101    my $self = shift; 
     102 
     103    my $driver    = MT::Object->dbi_driver; 
     104    my $dbh       = $driver->rw_handle; 
     105    my $ddl_class = $driver->dbd->ddl_class; 
     106 
     107    ok(!$driver->table_exists('Ddltest'), 'Ddltest table does not yet exist'); 
     108    ok(!defined $ddl_class->column_defs('Ddltest'), 'Ddltest table has no column defs'); 
     109    ok(!defined $ddl_class->index_defs('Ddltest'), 'Ddltest table has no index defs'); 
     110} 
     111 
     112sub _01_create_table : Tests(2) { 
     113    my $self = shift; 
     114 
     115    my $driver    = MT::Object->dbi_driver; 
     116    my $dbh       = $driver->rw_handle; 
     117    my $ddl_class = $driver->dbd->ddl_class; 
     118 
     119    my $create_sql = $ddl_class->create_table_sql('Ddltest'); 
     120    ok($create_sql, 'Create Table SQL for Ddltest is available'); 
     121    my $res = $dbh->do($create_sql); 
     122    ok($res, 'Driver could perform Create Table SQL for Ddltest'); 
     123    diag($dbh->errstr || $DBI::errstr) if !$res; 
     124} 
     125 
     126sub _02_create_indexes : Tests(5) { 
     127    my $self = shift; 
     128 
     129    my $driver    = MT::Object->dbi_driver; 
     130    my $dbh       = $driver->rw_handle; 
     131    my $ddl_class = $driver->dbd->ddl_class; 
     132 
     133    my @index_sql = $ddl_class->index_table_sql('Ddltest'); 
     134    ok(@index_sql, 'Index Table SQL for Ddltest is available'); 
     135    is(scalar @index_sql, 3, 'Index Table SQL has 4 statements'); 
     136    for my $index_sql (@index_sql) { 
     137        my $res = $dbh->do($index_sql); 
     138        ok($res, 'Driver could perform Index Table SQL for Ddltest'); 
     139        if (!$res) { 
     140            diag($dbh->errstr || $DBI::errstr); 
     141            diag('SQL: ' . $index_sql); 
     142        } 
     143    } 
     144} 
    101145 
    102146sub _def { 
     
    111155} 
    112156 
    113 my $defs = MT::Object->driver->dbd->ddl_class->column_defs('Ddltest'); 
    114 ok($defs, 'Ddltest DDL settings are defined'); 
    115  
    116157sub is_def { 
    117158    my ($got, $expected, $reason) = @_; 
     
    142183} 
    143184 
    144 is_def($defs->{id}, _def(1, 1, 'integer'), 'Ddltest id column def is correct'); 
    145  
    146 is_def($defs->{string_25},    _def(0, 0, 'string', 25),   'Ddltest string_25 column def is correct'); 
    147 is_def($defs->{string_25_nn}, _def(0, 1, 'string', 25),   'Ddltest string_25_nn column def is correct'); 
    148 is_def($defs->{string_255},   _def(0, 0, 'string', 255),  'Ddltest string_255 column def is correct'); 
    149 is_def($defs->{string_1024},  _def(0, 0, 'string', 1024), 'Ddltest string_1024 column def is correct'); 
    150 is_def($defs->{int_bool},     _def(0, 0, 'boolean'),      'Ddltest int_bool column def is correct'); 
    151 is_def($defs->{int_bool_nn},  _def(0, 1, 'boolean'),      'Ddltest int_bool_nn column def is correct'); 
    152 is_def($defs->{int_small},    _def(0, 0, 'smallint'),     'Ddltest int_small column def is correct'); 
    153 is_def($defs->{int_small_nn}, _def(0, 1, 'smallint'),     'Ddltest int_small_nn column def is correct'); 
    154 is_def($defs->{int_med},      _def(0, 0, 'integer'),      'Ddltest int_med column def is correct'); 
    155 is_def($defs->{int_med_nn},   _def(0, 1, 'integer'),      'Ddltest int_med_nn column def is correct'); 
    156 is_def($defs->{int_big},      _def(0, 0, 'bigint'),       'Ddltest int_big column def is correct'); 
    157 is_def($defs->{int_big_nn},   _def(0, 1, 'bigint'),       'Ddltest int_big_nn column def is correct'); 
    158 is_def($defs->{float},        _def(0, 0, 'float'),        'Ddltest float column def is correct'); 
    159 is_def($defs->{float_nn},     _def(0, 1, 'float'),        'Ddltest float_nn column def is correct'); 
    160 is_def($defs->{text},         _def(0, 0, 'text'),         'Ddltest text column def is correct'); 
    161 is_def($defs->{text_nn},      _def(0, 1, 'text'),         'Ddltest text_nn column def is correct'); 
    162 is_def($defs->{blob},         _def(0, 0, 'blob'),         'Ddltest blob column def is correct'); 
    163 is_def($defs->{blob_nn},      _def(0, 1, 'blob'),         'Ddltest blob_nn column def is correct'); 
    164 is_def($defs->{datetime},     _def(0, 0, 'datetime'),     'Ddltest datetime column def is correct'); 
    165 is_def($defs->{datetime_nn},  _def(0, 1, 'datetime'),     'Ddltest datetime_nn column def is correct'); 
    166  
    167 # audit fields 
    168 is_def($defs->{created_on},  _def(0, 0, 'datetime'), 'Ddltest created_on column def is correct'); 
    169 is_def($defs->{created_by},  _def(0, 0, 'integer'),  'Ddltest created_by column def is correct'); 
    170 is_def($defs->{modified_on}, _def(0, 0, 'datetime'), 'Ddltest modified_on column def is correct'); 
    171 is_def($defs->{modified_by}, _def(0, 0, 'integer'),  'Ddltest modified_by column def is correct'); 
    172  
    173  
    174 ok(!defined MT::Object->driver->dbd->ddl_class->index_defs('Ddltest'), q{Ddltest table's indexes are not yet created}); 
    175  
    176 my @index_sql = $ddl_class->index_table_sql('Ddltest'); 
    177 ok(@index_sql, 'Index Table SQL for Ddltest is available'); 
    178 is(scalar @index_sql, 3, 'Index Table SQL has 4 statements'); 
    179 for my $index_sql (@index_sql) { 
    180     $res = $dbh->do($index_sql); 
    181     ok($res, 'Driver could perform Index Table SQL for Ddltest'); 
    182     if (!$res) { 
    183         diag($dbh->errstr || $DBI::errstr); 
    184         diag('SQL: ' . $index_sql); 
    185     } 
    186 } 
    187  
    188 my $index_defs = MT::Object->driver->dbd->ddl_class->index_defs('Ddltest'); 
    189 ok($index_defs, 'Ddltest table has index defs'); 
    190  
    191 is(keys %$index_defs, 3, 'Ddltest table has three indexes'); 
    192 is($index_defs->{string_25_nn}, 1, 'Ddltest table has name index'); 
    193 is($index_defs->{int_small_nn}, 1, 'Ddltest table has status index'); 
    194 is_deeply($index_defs->{string_dt}, { columns => [ qw( string_25 datetime_nn ) ] }, 'Ddltest table has multi-column string_dt index'); 
     185sub table_defs : Tests(26) { 
     186    my $defs = MT::Object->driver->dbd->ddl_class->column_defs('Ddltest'); 
     187    ok($defs, 'Ddltest DDL settings are defined'); 
     188 
     189    is_def($defs->{id}, _def(1, 1, 'integer'), 'Ddltest id column def is correct'); 
     190 
     191    is_def($defs->{string_25},    _def(0, 0, 'string', 25),   'Ddltest string_25 column def is correct'); 
     192    is_def($defs->{string_25_nn}, _def(0, 1, 'string', 25),   'Ddltest string_25_nn column def is correct'); 
     193    is_def($defs->{string_255},   _def(0, 0, 'string', 255),  'Ddltest string_255 column def is correct'); 
     194    is_def($defs->{string_1024},  _def(0, 0, 'string', 1024), 'Ddltest string_1024 column def is correct'); 
     195    is_def($defs->{int_bool},     _def(0, 0, 'boolean'),      'Ddltest int_bool column def is correct'); 
     196    is_def($defs->{int_bool_nn},  _def(0, 1, 'boolean'),      'Ddltest int_bool_nn column def is correct'); 
     197    is_def($defs->{int_small},    _def(0, 0, 'smallint'),     'Ddltest int_small column def is correct'); 
     198    is_def($defs->{int_small_nn}, _def(0, 1, 'smallint'),     'Ddltest int_small_nn column def is correct'); 
     199    is_def($defs->{int_med},      _def(0, 0, 'integer'),      'Ddltest int_med column def is correct'); 
     200    is_def($defs->{int_med_nn},   _def(0, 1, 'integer'),      'Ddltest int_med_nn column def is correct'); 
     201    is_def($defs->{int_big},      _def(0, 0, 'bigint'),       'Ddltest int_big column def is correct'); 
     202    is_def($defs->{int_big_nn},   _def(0, 1, 'bigint'),       'Ddltest int_big_nn column def is correct'); 
     203    is_def($defs->{float},        _def(0, 0, 'float'),        'Ddltest float column def is correct'); 
     204    is_def($defs->{float_nn},     _def(0, 1, 'float'),        'Ddltest float_nn column def is correct'); 
     205    is_def($defs->{text},         _def(0, 0, 'text'),         'Ddltest text column def is correct'); 
     206    is_def($defs->{text_nn},      _def(0, 1, 'text'),         'Ddltest text_nn column def is correct'); 
     207    is_def($defs->{blob},         _def(0, 0, 'blob'),         'Ddltest blob column def is correct'); 
     208    is_def($defs->{blob_nn},      _def(0, 1, 'blob'),         'Ddltest blob_nn column def is correct'); 
     209    is_def($defs->{datetime},     _def(0, 0, 'datetime'),     'Ddltest datetime column def is correct'); 
     210    is_def($defs->{datetime_nn},  _def(0, 1, 'datetime'),     'Ddltest datetime_nn column def is correct'); 
     211 
     212    # audit fields 
     213    is_def($defs->{created_on},  _def(0, 0, 'datetime'), 'Ddltest created_on column def is correct'); 
     214    is_def($defs->{created_by},  _def(0, 0, 'integer'),  'Ddltest created_by column def is correct'); 
     215    is_def($defs->{modified_on}, _def(0, 0, 'datetime'), 'Ddltest modified_on column def is correct'); 
     216    is_def($defs->{modified_by}, _def(0, 0, 'integer'),  'Ddltest modified_by column def is correct'); 
     217} 
     218 
     219sub index_defs : Tests(5) { 
     220    my $index_defs = MT::Object->driver->dbd->ddl_class->index_defs('Ddltest'); 
     221    ok($index_defs, 'Ddltest table has index defs'); 
     222 
     223    is(keys %$index_defs, 3, 'Ddltest table has three indexes'); 
     224    is($index_defs->{string_25_nn}, 1, 'Ddltest table has name index'); 
     225    is($index_defs->{int_small_nn}, 1, 'Ddltest table has status index'); 
     226    is_deeply($index_defs->{string_dt}, { 
     227        columns => [ qw( string_25 datetime_nn ) ] 
     228    }, 'Ddltest table has multi-column string_dt index'); 
     229} 
     230 
     231package main; 
     232 
     233Test::DDL->runtests(); 
    195234 
    1962351;