view _test/Test/ORM/Schema.pm @ 31:d59526f6310e

Small fixes to Test framework (correct handlinf of the compilation errors in the test units) Imported and refactored SQL DB schema from the old project
author Sergey
date Mon, 09 Nov 2009 01:39:16 +0300
parents dd4d72600c69
children d660fb38b7cc
line wrap: on
line source

package Test::ORM::Schema;
use strict;
use warnings;
use base qw(IMPL::Test::Unit);

__PACKAGE__->PassThroughArgs;

use IMPL::Test qw(test failed);

test ExtractClassSchema => sub {
    my ($this) = @_;
    
    my $schema = Test::ORM::Schema::Data::User->ormGetSchema('Test::ORM::Schema::Data');
    failed "Wrong number of the elements","expected: 4","got: ".$schema->childNodes->Count unless $schema->childNodes->Count == 4;
    
    return 1;
};

test StaticSchema => sub {
    my ($this) = @_;
    
    my $schema = Test::ORM::Schema::Data->instance;
    
    return 1;
};


package Test::ORM::Schema::Data::User;
use base qw(IMPL::ORM::Object);
use IMPL::Class::Property;

BEGIN {
    public property Name => prop_all, { type => 'String' }; # Field
    public property Id => prop_all, { type => 'String' }; # Field
    public property Roles => prop_all | prop_list, { type=> 'Test::ORM::Schema::Data::Role'}; # HasMany
}

package Test::ORM::Schema::Data::Role;
use base qw(IMPL::ORM::Object);
use IMPL::Class::Property;

BEGIN {
    public property Name => prop_all, { type => 'String' }; # Field
}

package Test::ORM::Schema::Data::Session;
use base qw(IMPL::ORM::Object);
use IMPL::Class::Property;
use IMPL::ORM::Helpers qw(Map);

BEGIN {
    public property Id => prop_get, { type => 'String' }; # Field
    public property User => prop_get, { type => 'Test::ORM::Schema::Data::User' }; # HasOne
    #public property Data => prop_all, { type => Map( 'String','String' ) }; # HasOne
    public property AccessTime => prop_get, { type => 'DateTime' }; # Field
}

package Test::ORM::Schema::Data;
use base qw(IMPL::ORM::Schema);

__PACKAGE__->ValueTypes (
    'String' => 'IMPL::ORM::Value::String',
    'DateTime' => 'IMPL::ORM::Value::DateTime',
    'Integer' => 'IMPL::ORM::Value::Inetger',
    'Float' => 'IMPL::ORM::Value::Float',
    'Decimal' => 'IMPL::ORM::Value::Decimal'
);

__PACKAGE__->usePrefix(__PACKAGE__);
__PACKAGE__->Classes qw(
    User
    Role
    Session
);

__PACKAGE__->CompleteSchema;

1;