view _test/Test/SQL/Diff.pm @ 263:0f59b2de72af

*fixed IMPL::DOM::Schema circular module references *modified IMPL::Object::Singleton, added auto-activation *code cleanups, docs
author sergey
date Wed, 09 Jan 2013 05:17:44 +0400
parents 4d0e1962161c
children 56364d0c4b4f
line wrap: on
line source

package Test::SQL::Diff;
use strict;
use warnings;
use parent qw(IMPL::Test::Unit);

use IMPL::Test qw(test failed assert);
use IMPL::SQL::Schema();
use IMPL::SQL::Types qw(Integer Varchar Text);
use IMPL::SQL::Schema::Traits::Diff();
use Data::Dumper;

__PACKAGE__->PassThroughArgs;

test diff => sub {
    my $schemaSrc = new IMPL::SQL::Schema(name => 'simple', version => 1 );
    
    my $tbl = $schemaSrc->AddTable({
        name => 'User',
        columns => [
            { name => 'name', type => Varchar(255) },
            { name => 'description', type => Varchar(255) }
        ]
    });
    
    $tbl->AddConstraint( unique => { name => 'unique_name', columns => ['name'] });
    
    my $schemaDst = new IMPL::SQL::Schema(name => 'simple', version => 2 );
    
    my $users = $schemaDst->AddTable({
        name => 'User',
        columns => [
            { name => 'id', type => Integer },
            { name => 'login', type => Varchar(255) },
            { name => 'description', type => Text, isNullable => 1 }
        ]
    });
    
    $users->SetPrimaryKey('id');
    $users->AddConstraint( unique => { name => 'unique_login', columns => ['login'] } );
    
    #warn Dumper(IMPL::SQL::Schema::Traits::Diff->Diff($schemaSrc,$schemaDst));
    
    $schemaSrc->Dispose;
    $schemaDst->Dispose;
    
};


1;