Mercurial > pub > Impl
diff _test/Test/SQL/Schema.pm @ 49:16ada169ca75
migrating to the Eclipse IDE
author | wizard@linux-odin.local |
---|---|
date | Fri, 26 Feb 2010 10:49:21 +0300 |
parents | 0004faa276dc |
children | 76515373dac0 |
line wrap: on
line diff
--- a/_test/Test/SQL/Schema.pm Fri Feb 26 01:43:42 2010 +0300 +++ b/_test/Test/SQL/Schema.pm Fri Feb 26 10:49:21 2010 +0300 @@ -1,110 +1,110 @@ -package Test::SQL::Schema; -use strict; -use warnings; - -use base qw(IMPL::Test::Unit); -__PACKAGE__->PassThroughArgs; - -use IMPL::Class::Property; -use IMPL::Class::Property::Direct; - -use IMPL::Test qw(test shared failed); - -BEGIN { - shared public property schemaDB => prop_all; -} - -require IMPL::SQL::Schema; -require IMPL::SQL::Schema::Constraint::Unique; - -use IMPL::SQL::Types qw(Integer Varchar); - -test CreateSchema => sub { - my ($this) = @_; - - my $schema = new IMPL::SQL::Schema(Name => 'dbTest', Version => 1) or failed "Failed to create schema"; - - failed "Failed to set a schema name" unless $schema->Name eq 'dbTest'; - failed "Failed to set a schema version" unless $schema->Version == 1; - - $this->schemaDB($schema); -}; - -test AddTable => sub { - my ($this) = @_; - - my $table = $this->schemaDB->AddTable({Name => 'User'}) or failed "Failed to add a table to the schema"; - $table->InsertColumn({ - Name => 'Id', - Type => Integer - }); - $table->InsertColumn({ - Name => 'Login', - Type => Varchar(255) - }); - $table->InsertColumn({ - Name => 'DisplayName', - CanBeNull => 1, - Type => Varchar(255) - }); - $table->InsertColumn({ - Name => 'RoleId', - CanBeNull => 1, - Type => Integer - }); - - $table->SetPrimaryKey('Id'); - - my $colCount = @{$table->Columns}; - - failed "Failed to add columns", "Expected: 4", "Got: ".$colCount unless $colCount == 4; - failed "Failed to set a primary key" unless $table->PrimaryKey; - - my $table2 = $this->schemaDB->AddTable({Name => 'Role'}); - $table2->InsertColumn({ - Name => 'Id', - Type => Integer - }); - $table2->InsertColumn({ - Name => 'Description', - Type => Varchar(255) - }); - $table2->InsertColumn({ - Name => 'ObsoleteId', - Type => Integer - }); - - $table2->SetPrimaryKey('Id'); - - $table->LinkTo($table2,'RoleId'); -}; - -test Constraints => sub { - my ($this) = @_; - - my $table = $this->schemaDB->Tables->{Role} or failed "Failed to get a table"; - - my $constraint = $table->AddConstraint( - new IMPL::SQL::Schema::Constraint::Unique( - Name => 'Role_ObsoleteId_Uniq', - Table => $table, - Columns => ['ObsoleteId'] - ) - ) or failed "Failed to add constraint"; - - failed "Failed to retrieve a constraint" unless ($table->GetColumnConstraints('ObsoleteId'))[0] == $constraint; - - $table->RemoveColumn('ObsoleteId',1); - - failed "A constraint remains alive after column deletion" unless $constraint->isDisposed; - -}; - -test Dispose => sub { - my ($this) = @_; - - $this->schemaDB->Dispose(); -}; - - -1; +package Test::SQL::Schema; +use strict; +use warnings; + +use base qw(IMPL::Test::Unit); +__PACKAGE__->PassThroughArgs; + +use IMPL::Class::Property; +use IMPL::Class::Property::Direct; + +use IMPL::Test qw(test shared failed); + +BEGIN { + shared public property schemaDB => prop_all; +} + +require IMPL::SQL::Schema; +require IMPL::SQL::Schema::Constraint::Unique; + +use IMPL::SQL::Types qw(Integer Varchar); + +test CreateSchema => sub { + my ($this) = @_; + + my $schema = new IMPL::SQL::Schema(Name => 'dbTest', Version => 1) or failed "Failed to create schema"; + + failed "Failed to set a schema name" unless $schema->Name eq 'dbTest'; + failed "Failed to set a schema version" unless $schema->Version == 1; + + $this->schemaDB($schema); +}; + +test AddTable => sub { + my ($this) = @_; + + my $table = $this->schemaDB->AddTable({Name => 'User'}) or failed "Failed to add a table to the schema"; + $table->InsertColumn({ + Name => 'Id', + Type => Integer + }); + $table->InsertColumn({ + Name => 'Login', + Type => Varchar(255) + }); + $table->InsertColumn({ + Name => 'DisplayName', + CanBeNull => 1, + Type => Varchar(255) + }); + $table->InsertColumn({ + Name => 'RoleId', + CanBeNull => 1, + Type => Integer + }); + + $table->SetPrimaryKey('Id'); + + my $colCount = @{$table->Columns}; + + failed "Failed to add columns", "Expected: 4", "Got: ".$colCount unless $colCount == 4; + failed "Failed to set a primary key" unless $table->PrimaryKey; + + my $table2 = $this->schemaDB->AddTable({Name => 'Role'}); + $table2->InsertColumn({ + Name => 'Id', + Type => Integer + }); + $table2->InsertColumn({ + Name => 'Description', + Type => Varchar(255) + }); + $table2->InsertColumn({ + Name => 'ObsoleteId', + Type => Integer + }); + + $table2->SetPrimaryKey('Id'); + + $table->LinkTo($table2,'RoleId'); +}; + +test Constraints => sub { + my ($this) = @_; + + my $table = $this->schemaDB->Tables->{Role} or failed "Failed to get a table"; + + my $constraint = $table->AddConstraint( + new IMPL::SQL::Schema::Constraint::Unique( + Name => 'Role_ObsoleteId_Uniq', + Table => $table, + Columns => ['ObsoleteId'] + ) + ) or failed "Failed to add constraint"; + + failed "Failed to retrieve a constraint" unless ($table->GetColumnConstraints('ObsoleteId'))[0] == $constraint; + + $table->RemoveColumn('ObsoleteId',1); + + failed "A constraint remains alive after column deletion" unless $constraint->isDisposed; + +}; + +test Dispose => sub { + my ($this) = @_; + + $this->schemaDB->Dispose(); +}; + + +1;