_xowiki__path_resolve (private)
_xowiki__path_resolve
Defined in packages/xowiki/tcl/test/xowiki-test-procs.tcl
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Source code: set _aa_export {} set body_count 1 foreach testcase_body {{ set instance /xowiki-test set package_id [::acs::test::require_package_instance -package_key xowiki -empty -instance_name $instance] aa_run_with_teardown -rollback -test_code { set testfolder .testfolder ::xowiki::Package initialize -package $package_id set root_folder_id [::$package_id folder_id] # Create the test folder ::xowiki::test::require_folder $testfolder $root_folder_id $package_id set testfolder_id [::$package_id lookup -parent_id $root_folder_id -name $testfolder] aa_true "can resolve '$testfolder'" {$testfolder_id > 0} # # Force the system locale to en_US. The value is # automatically reset to the previous value, since we are # running in a transaction. # lang::system::set_locale en_US set locale [lang::system::locale] set lang [string range $locale 0 1] aa_log "package_id $package_id system locale $locale" set f1_id [xowiki::test::require_folder "f1" $root_folder_id $package_id] set f3_id [xowiki::test::require_folder "f3" $f1_id $package_id] set subf3_id [xowiki::test::require_folder "subf3" $f3_id $package_id] set enpage_id [xowiki::test::require_page en:page $root_folder_id $package_id] set p0_id [xowiki::test::require_page en:p0 $root_folder_id $package_id] set f1_p1_id [xowiki::test::require_page en:p1 $f1_id $package_id] ::xo::db::CrClass get_instance_from_db -item_id $enpage_id set enpage_pl [::$enpage_id pretty_link] aa_equals "Pretty link of en:page: $enpage_pl" $enpage_pl "/xowiki-test/page" ::xo::db::CrClass get_instance_from_db -item_id $p0_id set p0_pl [::$p0_id pretty_link] aa_equals "Pretty link of p0 $p0_pl" $p0_pl "/xowiki-test/p0" ::xo::db::CrClass get_instance_from_db -item_id $f1_p1_id set f1_p1_pl [::$f1_p1_id pretty_link] aa_equals "Pretty link of f1/page $f1_p1_pl" $f1_p1_pl "/xowiki-test/f1/p1" ::xo::db::CrClass get_instance_from_db -item_id $testfolder_id set testfolder_pl [::$testfolder_id pretty_link] aa_equals "Pretty link of $testfolder $testfolder_pl" $testfolder_pl "$instance/$testfolder" # # Try to resolve folders, pages and inherited folder.form via URL. # The method resolve_page receives the "object" instance variable # initialized via "Package initialize" ALWAYS without a leading "/". # aa_section "resolve_page" foreach url { f1 page f1/p1 en:folder.form folder.form } { set page [$package_id resolve_page $url m] aa_true "can resolve url $url -> $page" {$page ne ""} } # # Try to obtain item_info from URLs pointing to folders, # pages and inherited folder.form via URL. This function # is a helper function of resolve_page, so same rules # apply here as well. # aa_section "item_info_from_url -with_package_prefix false" foreach url { f1 page f1/p1 } { set info [$package_id item_info_from_url -with_package_prefix false -default_lang $lang $url] aa_true "can get item_info from url $url -> $info" {[dict get $info item_id] ne "0"} } aa_section "item_info_from_url -with_package_prefix true" foreach url { /xowiki-test/f1 /xowiki-test/page /xowiki-test/f1/p1 } { set info [$package_id item_info_from_url -with_package_prefix true -default_lang $lang $url] aa_true "can get item_info from url $url -> $info" {[dict get $info item_id] ne "0"} } # # item_refs are different to URLs, but look similar. The # item refs can be used to navigate in the tree and they # are allow symbolic names not necessarily possible via # URLs (e.g. prefixed names). # aa_section "resolve item refs" foreach item_ref { f1 page f1/p1 ./f1 ./page ./f1/p1 /f1 /page /f1/p1 } { set info [$package_id item_ref -parent_id $root_folder_id -default_lang $lang $item_ref] aa_true "can resolve item_ref $item_ref -> $info" {[dict get $info item_id] ne "0"} } aa_section "bi-directional resolving via URLs" ::xo::db::CrClass get_instance_from_db -item_id $enpage_id set pretty_link1 [::$enpage_id pretty_link] set item_info1 [$package_id item_info_from_url $pretty_link1] aa_true "can resolve $pretty_link1 => $enpage_id" [expr {[dict get $item_info1 item_id] eq $enpage_id}] set folder_clash_id [xowiki::test::require_folder "page" $root_folder_id $package_id] ::xo::db::CrClass get_instance_from_db -item_id $folder_clash_id set pretty_link2 [::$folder_clash_id pretty_link] set item_info2 [$package_id item_info_from_url $pretty_link2] aa_true "same-named folder: can resolve $pretty_link2 => $folder_clash_id" [expr {[dict get $item_info2 item_id] eq $folder_clash_id}] set pretty_link1 [::$enpage_id pretty_link] set item_info1 [$package_id item_info_from_url $pretty_link1] aa_true "same-named page: can resolve $pretty_link1 => $enpage_id" [expr {[dict get $item_info1 item_id] eq $enpage_id}] # # Due to the adding of the folder named "page", we might # have a confusion when referring to item_refs. # aa_section "Ambiguous item_refs" foreach pair [subst { {page $enpage_id en} {f1 $f1_id ""} }] { lassign $pair item_ref id prefix set info [$package_id item_ref -parent_id $root_folder_id -default_lang $lang $item_ref] #aa_log info=$info aa_true "can resolve item_ref '$item_ref' -> $id" {[dict get $info item_id] eq $id} aa_true "check prefix of item_ref $item_ref -> $prefix" {[dict get $info prefix] eq $prefix} } # # Link rendering # aa_section "render links (\[\[somelink\]\]" ns_log notice "---render links---" foreach pair [subst { {page /en:page} {./page /en:page} {./page/ /page} {en:page/ /en:page} {f1 /f1} {./f1 /f1} {f1/p1 /f1/p1} {f1/f3 /f1/f3} }] { lassign $pair link pattern set l [::$p0_id create_link $link] set html [$l render] aa_true "render link \[\[$link\]\] -> *'$instance$pattern'*" [string match *'$instance$pattern'* $html] aa_log "[ns_quotehtml $html]" } } -teardown_code { set node_id [site_node::get_node_id -url /$instance] site_node::unmount -node_id $node_id site_node::delete -node_id $node_id -delete_package } }} { aa_log "Running testcase body $body_count" set ::__aa_test_indent [info level] set catch_val [catch $testcase_body msg] if {$catch_val != 0 && $catch_val != 2} { aa_log_result "fail" "path_resolve (body $body_count): Error during execution: $msg, stack trace: \n$::errorInfo" } incr body_count }XQL Not present: Generic, PostgreSQL, Oracle