Show
Ignore:
Timestamp:
04/17/08 12:38:52 (20 months ago)
Author:
fumiakiy
Message:

New metadata structure is now backup- and restore-able. BugId:79317

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-35/t/61-to_from_xml.t

    r1104 r1948  
    55 
    66use lib 't/lib', 'extlib', 'lib', '../lib', '../extlib'; 
    7 use Test::More tests => 3598; 
     7use Test::More qw(no_plan);#tests => 3598; 
    88 
    99use MT; 
     
    4949foreach my $key (keys %$types) { 
    5050    next if exists $skip{$key}; 
    51     my @data = MT->model($key)->load; 
     51    my $iter = MT->model($key)->load_iter; 
     52    my @data; 
     53    while ( my $obj = $iter->() ) { 
     54        push @data, $obj; 
     55    } 
    5256    $oldies{$key} = \@data; 
    5357} 
    5458 
    5559MT::BackupRestore->backup(undef, $printer, sub {}, sub {}, sub { print $_[0], "\n"; }, 0, 'UTF-8'); 
     60open my $fh, '>', 'c:\\temp\\hoge.txt'; 
     61print $fh $backup_data; 
     62close $fh; 
    5663 
    5764use IO::String; 
     
    6168 
    6269is(scalar(keys %deferred), 0); 
    63 print join "\n", @errors; 
     70warn join "\n", @errors if @errors; 
    6471is(scalar(@errors), 0, 'no error during backup'); 
    65  
    6672&checkthemout(\%oldies, \%objects); 
    6773 
     
    7379    foreach my $name (keys %$oldies) { 
    7480        my $old_objects = $oldies->{$name}; 
     81        my %meta; 
    7582        for my $old (@$old_objects) { 
    7683            my $class = MT->model($name); 
     
    112119                    ); 
    113120                    next if ($ds eq 'category' && ($col eq 'parent')); 
    114                     # MT::Trackback will always be created upon MT::Entry->save, 
    115                     # and restore will just skip to restore <trackback> data, 
    116                     # meaning trackback_created_on will not be restored but newly created. 
    117                     next if ($name eq 'trackback' && ($col eq 'created_on')); 
     121                    if ( ($name eq 'trackback') && ($col eq 'is_disabled') ) { 
     122                        if ( defined($obj->is_disabled) && $obj->is_disabled 
     123                          && (!defined($obj->entry->allow_pings) || ($obj->entry->allow_pings == 0)) ) 
     124                        { 
     125                            # is_disabled will be changed upon $entry->save 
     126                            # and save may occur $comment's post_save trigger 
     127                            # no harm for the testing purpose, ignore the case. 
     128                            next; 
     129                        } 
     130                    } 
    118131                    if ('HASH' eq ref($old->$col)) { 
    119132                        is(Dumper($old->$col), Dumper($old->$col), $col); 
     
    125138                    } else { 
    126139                        is($old->$col, $obj->$col, "$class<$col>" . $obj->id); 
     140                    } 
     141                } 
     142            } 
     143            unless ( exists($meta{ref($obj)}) ) { 
     144                my @metacolumns = MT::Meta->metadata_by_class( ref($obj) ); 
     145                my %metacolumns = map { $_->{name} => $_->{type} } @metacolumns; 
     146                $meta{ref($obj)} = \%metacolumns 
     147            } 
     148            my $metacolumns = $meta{ref($obj)}; 
     149            foreach my $metacol (keys %$metacolumns) { 
     150                if ( my $type = $metacolumns->{$metacol} ) { 
     151                    if ( 'vblob' eq $type ) { 
     152                        if ( defined($old->$metacol) && defined($obj->$metacol) ) { 
     153                            is( 
     154                                MIME::Base64::encode_base64($old->$metacol, ''), 
     155                                MIME::Base64::encode_base64($obj->$metacol, ''), 
     156                                "vblob - $metacol"); 
     157                        } 
     158                    } 
     159                    else { 
     160                        is($old->$metacol, $obj->$metacol, "$class<meta:$metacol>" . $obj->id); 
    127161                    } 
    128162                }