package TestContainer; use strict; use warnings; use WebDAO::Container; use base 'WebDAO::Container'; 1; package TestTraverse; use strict; use warnings; use WebDAO::Component; use base 'WebDAO::Component'; sub Test { my $self = shift; return $self; } sub Return1 { my $self = shift; return 1; } sub Index_x { my $self = shift; return $self; } 1; package main; use strict; use warnings; use Data::Dumper; use Test::More tests => 16; #use Test::More qw(no_plan); BEGIN { use_ok('WebDAO::Store::Abstract'); use_ok('WebDAO::SessionSH'); use_ok('WebDAO::Engine'); use_ok('WebDAO::Container'); use_ok('WebDAO::Test'); } my $ID = "extra"; ok my $store_ab = ( new WebDAO::Store::Abstract:: ), "Create store"; ok my $session = ( new WebDAO::SessionSH:: store => $store_ab ), "Create session"; $session->U_id($ID); my $eng = new WebDAO::Engine:: session => $session; our $tlib = new WebDAO::Test eng => $eng; our $sess = $eng->_session; our $eng1 = $eng; $eng->register_class( 'WebDAO::Container' => 'testmain', 'TestTraverse' => 'traverse', 'TestContainer' => 'testcont' ); #test traverse my $main = $eng->_createObj( 'main2', 'testmain' ); $eng->_add_childs_($main); isa_ok my $trav_obj = $eng->_createObj( 'traverse', 'traverse' ), 'TestTraverse', 'create traverse object'; $main->_add_childs_($trav_obj); $trav_obj->__extra_path( [ 1, 2, 3 ] ); my $traverse_url = $trav_obj->url_method('Test'); isa_ok $tlib->resolve_path( $traverse_url ), 'TestTraverse', "resolve_path1 $traverse_url"; my $traverse_url1 = $trav_obj->url_method(); isa_ok $tlib->resolve_path( $traverse_url1 ), 'TestTraverse', "resolve_path2 $traverse_url1"; isa_ok my $t_cont1 = $eng->_createObj( 'test_cont', 'testcont' ), 'TestContainer', 'test containter'; isa_ok my $comp = $eng->_createObj( 'el1', 'traverse' ), 'TestTraverse', 'create elem'; $t_cont1->_add_childs_($comp); $eng->_add_childs_($t_cont1); my $t_url = $comp->url_method('Return1'); is $tlib->resolve_path( $t_url ), 1, "test resolve $t_url"; isa_ok my $comp1 = $eng->_createObj( 'el_extra', 'traverse' ), 'TestTraverse', 'create elem with extra1'; $comp1->__extra_path( [ 'extra1', 'extra2' ] ); $t_cont1->_add_childs_($comp1); my $t_url2 = $comp1->url_method('Return1'); is $tlib->resolve_path( $t_url2 ), 1, "test resolve $t_url2"; my $t_url3 = $comp1->url_method(); isa_ok $tlib->resolve_path( $t_url3 ), 'TestTraverse', "test resolve $t_url3";