- Publicity: Public Only All
categories-procs.tcl
Automated tests.
- Location:
- packages/categories/tcl/test/categories-procs.tcl
- Created:
- 15 November 2003
- Authors:
- Simon Carstensen
- Héctor Romojaro
- CVS Identification:
$Id: categories-procs.tcl,v 1.3.2.29 2023/02/27 16:46:10 antoniop Exp $
Procedures in this file
- _categories__AcsObject_service_contract_implementations (private)
- _categories__category_crud (private)
- _categories__category_get_procs (private)
- _categories__category_init_procs (private)
- _categories__category_link (private)
- _categories__category_object_mapping (private)
- _categories__category_synonyms (private)
- _categories__category_tree_import (private)
- _categories__category_tree_procs (private)
- category::exists_p (private)
- category_tree::exists_p (private)
Detailed information
_categories__AcsObject_service_contract_implementations (private)
_categories__AcsObject_service_contract_implementations
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
_categories__category_crud (private)
_categories__category_crud
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
_categories__category_get_procs (private)
_categories__category_get_procs
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
_categories__category_init_procs (private)
_categories__category_init_procs
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
_categories__category_link (private)
_categories__category_link
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
_categories__category_object_mapping (private)
_categories__category_object_mapping
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
_categories__category_synonyms (private)
_categories__category_synonyms
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
_categories__category_tree_import (private)
_categories__category_tree_import
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
_categories__category_tree_procs (private)
_categories__category_tree_procs
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
category::exists_p (private)
category::exists_p category_id
Checks if category exists directly in the DB.
- Parameters:
- category_id (required)
- Returns:
- 1 if exists, 0 if doesn't
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- category_synonyms, category_crud
category_tree::exists_p (private)
category_tree::exists_p tree_id
Checks if category tree exists directly in the DB.
- Parameters:
- tree_id (required)
- Returns:
- 1 if exists, 0 if doesn't
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- category_tree_import, category_synonyms, category_tree_procs
Content File Source
ad_library { Automated tests. @author Simon Carstensen @author Héctor Romojaro <hector.romojaro@gmail.com> @creation-date 15 November 2003 @cvs-id $Id: categories-procs.tcl,v 1.3.2.29 2023/02/27 16:46:10 antoniop Exp $ } d_proc -private category_tree::exists_p { tree_id } { Checks if category tree exists directly in the DB. @param tree_id @return 1 if exists, 0 if doesn't } { return [db_0or1row tree_exists { select 1 from category_trees where tree_id = :tree_id }] } d_proc -private category::exists_p { category_id } { Checks if category exists directly in the DB. @param category_id @return 1 if exists, 0 if doesn't } { return [db_0or1row category_exists { select 1 from categories where category_id = :category_id }] } aa_register_case -procs { category_tree::import category_tree::exists_p category_tree::get_translation category_tree::xml::import category_tree::xml::import_from_file } -cats { api } category_tree_import { Test the import api } { aa_run_with_teardown \ -rollback \ -test_code { aa_section "Tcl Import" set tree_id [category_tree::import \ -name regions \ -description {regions and states} \ -categories { 1 europe 2 germany 2 {united kingdom} 2 france 1 asia 2 china 1 {north america} 2 {united states} }] aa_true "tree was created successfully" \ [category_tree::exists_p $tree_id] aa_equals "category_tree::get_translation returns expected" \ [category_tree::get_translation $tree_id] \ {regions {regions and states}} aa_true "Category 'europe' exists" [db_0or1row check { select c.category_id as europe_category_id from categories c, category_translations t where c.category_id = t.category_id and c.parent_id is null and t.locale = 'en_US' and t.name = 'europe' }] aa_true "Category 'germany' is a child of 'europe'" [db_0or1row check { select 1 from categories c, category_translations t where c.category_id = t.category_id and c.parent_id = :europe_category_id and t.locale = 'en_US' and t.name = 'germany' }] aa_equals "Tree has 8 categories" \ [db_string count { select count(*) from categories where tree_id = :tree_id }] \ 8 aa_section "XML Import" set xml {<?xml version="1.0"?> <tree> <translation locale="en_US"> <name>A tree</name> <description>I am a tree</description> </translation> <translation locale="it_IT"> <name>Un albero</name> <description>Io sono un albero</description> </translation> <category> <translation locale="en_US"> <name>A category</name> <description>I am a category</description> </translation> <translation locale="it_IT"> <name>Una categoria</name> <description>Io sono una categoria</description> </translation> </category> <category> <translation locale="en_US"> <name>Another category</name> <description>I am another category</description> </translation> <translation locale="it_IT"> <name>Un'altra categoria</name> <description>Io sono un'altra categoria</description> </translation> <category> <translation locale="en_US"> <name>A child category</name> <description>I am a child category</description> </translation> <translation locale="it_IT"> <name>Una categoria figlia</name> <description>Io sono una categoria figlia</description> </translation> </category> </category> </tree> } set wfd [ad_opentmpfile tmpfile] puts -nonewline $wfd $xml close $wfd set tree_id [category_tree::xml::import_from_file -site_wide $tmpfile] file delete -- $tmpfile aa_true "tree was created successfully" \ [category_tree::exists_p $tree_id] aa_equals "category_tree::get_translation returns expected" \ [category_tree::get_translation $tree_id en_US] \ {{A tree} {I am a tree}} aa_equals "category_tree::get_translation returns expected" \ [category_tree::get_translation $tree_id it_IT] \ {{Un albero} {Io sono un albero}} aa_equals "Tree has 3 categories" \ [db_string count { select count(*) from categories where tree_id = :tree_id }] \ 3 } } aa_register_case -procs { category_tree::add category_tree::exists_p category::add category::exists_p category_synonym::add category_synonym::search category_synonym::edit category_synonym::delete } -cats { api } category_synonyms { Test the category::synonym api } { aa_run_with_teardown \ -rollback \ -test_code { #Create tree set tree_id [category_tree::add -name "foo"] aa_true "tree was created successfully" \ [category_tree::exists_p $tree_id] # Create category set category_id [category::add \ -tree_id $tree_id \ -parent_id "" \ -name "foo"] aa_true "category was created successfully" \ [category::exists_p $category_id] set synonym_id [category_synonym::add \ -name foobar \ -category_id $category_id] aa_true "Synonym was created" [db_0or1row check { select 1 from category_synonyms where synonym_id = :synonym_id and category_id = :category_id and name = 'foobar' }] set query_id [category_synonym::search -search_text foo] aa_true "Query was created" [db_0or1row check { select 1 from category_search_results where synonym_id = :synonym_id and query_id = :query_id }] category_synonym::edit \ -synonym_id $synonym_id \ -name barfoo aa_true "Synonym was updated" [db_0or1row check { select 1 from category_synonyms where synonym_id = :synonym_id and category_id = :category_id and name = 'barfoo' }] category_synonym::delete $synonym_id aa_false "Synonym was deleted" [db_0or1row check { select 1 from category_synonyms where synonym_id = :synonym_id }] } } aa_register_case -procs { category_tree::add category::add category_link::add category_link::delete } -cats { api } category_link { Test the category::link api } { aa_run_with_teardown \ -rollback \ -test_code { set tree_id_1 [category_tree::add -name "foo"] set category_id_1 [category::add \ -tree_id $tree_id_1 \ -parent_id "" \ -name "foo cat"] set tree_id_2 [category_tree::add -name "bar"] set category_id_2 [category::add \ -tree_id $tree_id_2 \ -parent_id "" \ -name "bar cat"] set link_id [category_link::add \ -from_category_id $category_id_1 \ -to_category_id $category_id_2] aa_true "Link was created" [db_0or1row check { select 1 from category_links where link_id = :link_id and from_category_id = :category_id_1 and to_category_id = :category_id_2 }] category_link::delete $link_id aa_false "Link was deleted" [db_0or1row check { select 1 from category_links where link_id = :link_id }] } } aa_register_case -procs { category::add category::get_name category::get category::update category::delete category_tree::add category::exists_p category::flush_translation_cache category::phase_in category::phase_out category::get_children category_tree::update category_tree::reset_cache category_tree::get_tree category_tree::get_translation category_tree::get_multirow } -cats { api } category_crud { Test the CRUD operations on a category. } { aa_run_with_teardown \ -rollback \ -test_code { set locale it_IT aa_section "Create tree" set tree_id [category_tree::add \ -name "foo" -locale $locale] category_tree::update \ -tree_id $tree_id \ -locale de_DE \ -name föö \ -description Descriptiön aa_equals "category_tree::get_translation returns expected" \ [category_tree::get_translation $tree_id de_DE] \ [list "föö" "Descriptiön"] aa_section "Create category" set category_id [category::add \ -tree_id $tree_id \ -parent_id "" \ -locale $locale \ -name "foo"] aa_equals "Name is right" \ [category::get_name $category_id $locale] foo aa_section "Update category" category::update \ -category_id $category_id \ -name boo \ -locale $locale \ -description something set attrs [category::get \ -category_id $category_id \ -locale $locale] aa_equals "name is as expected" \ [dict get $attrs name] boo aa_equals "Description is as expected" \ [dict get $attrs description] something set category_child_1 [category::add \ -tree_id $tree_id \ -parent_id $category_id \ -locale $locale \ -name "foo child 1"] set category_child_2 [category::add \ -tree_id $tree_id \ -parent_id $category_id \ -locale $locale \ -name "foo child 2"] aa_equals "Category '$category_id' has 2 visible children" \ [llength [category::get_children -category_id $category_id]] \ 2 category_tree::get_multirow \ -tree_id $tree_id \ -datasource __test_category_crud aa_true "Multirow __test_category_crud exists" \ [::template::multirow exists __test_category_crud] aa_equals "Multirow __test_category_crud has 3 rows" \ [::template::multirow size __test_category_crud] \ 3 set result [list] ::template::multirow -unclobber foreach __test_category_crud { lappend result \ $tree_id \ $tree_name \ $category_id \ $category_name \ $level \ $pad \ $deprecated_p \ $count \ $child_sum } aa_equals "Multirow returns expected" \ [list \ $tree_id foo $category_id foo 1 {} f 0 0 \ $tree_id foo $category_child_1 {foo child 1} 2 .. f 0 0 \ $tree_id foo $category_child_2 {foo child 2} 2 .. f 0 0] \ $result aa_log "Phase out child '$category_child_1'" category::phase_out $category_child_1 aa_equals "Category '$category_id' has 1 visible child" \ [llength [category::get_children -category_id $category_id]] \ 1 aa_log "Phase out child '$category_child_2'" category::phase_out $category_child_2 aa_equals "Category '$category_id' has 0 visible children" \ [llength [category::get_children -category_id $category_id]] \ 0 aa_equals "category_tree::get_tree returns expected (pre-flush)" \ [category_tree::get_tree -all $tree_id] \ [list \ [list $category_id foo f 1] \ [list $category_child_1 {foo child 1} f 2] \ [list $category_child_2 {foo child 2} f 2] \ ] aa_log "Flush cache" category_tree::reset_cache aa_equals "category_tree::get_tree returns expected (post-flush)" \ [category_tree::get_tree -all $tree_id] \ [list \ [list $category_id foo f 1] \ [list $category_child_1 {foo child 1} t 2] \ [list $category_child_2 {foo child 2} t 2] \ ] category_tree::get_multirow \ -tree_id $tree_id \ -datasource __test_category_crud aa_true "Multirow __test_category_crud exists" \ [::template::multirow exists __test_category_crud] aa_equals "Multirow __test_category_crud has 1 row (phased out categories skipped)" \ [::template::multirow size __test_category_crud] \ 1 aa_log "Phase children back in" category::phase_in $category_child_1 category::phase_in $category_child_2 aa_equals "Category '$category_id' has 2 visible children again" \ [llength [category::get_children -category_id $category_id]] \ 2 aa_log "Delete children" category::delete $category_child_1 category::delete $category_child_2 aa_section "Delete category (batch)" category::delete -batch_mode $category_id aa_false "category was deleted successfully" \ [category::exists_p $category_id] aa_equals "Cache entry was not flushed" \ [category::get_name $category_id $locale] boo aa_section "Flush cache" category::flush_translation_cache $category_id aa_false "Cache entry was flushed" \ {[category::get_name $category_id $locale] ne ""} } } aa_register_case -procs { category_tree::add category::add category::get category::get_children category::get_tree category::get_data category::get_id category::get_id_by_object_title category::get_name category::get_names category::get_parent } -cats { api } category_get_procs { Test different category::get procs. } { aa_run_with_teardown -rollback -test_code { # #Create tree # set tree_name foo set tree_id [category_tree::add -name $tree_name] aa_log "Category tree: $tree_name $tree_id" # # Create root category # set root_category_id [category::add \ -tree_id $tree_id \ -parent_id "" \ -name $tree_name] aa_log "Root category: $root_category_id" # # Create children categories # set children {bar1 "" bar2 "" bar3 ""} dict for { name id } $children { set category_id [category::add \ -tree_id $tree_id \ -parent_id $root_category_id \ -description "My category $name" \ -name $name] dict set children $name $category_id aa_log "New children category: $name $category_id" } # # Get # dict for { name id } $children { aa_equals "Check name and description" \ "[category::get -category_id $id]" \ "name $name description {My category $name}" } # # Get children # aa_equals "Check for children" \ "[lsort [category::get_children \ -category_id $root_category_id]]" \ "[lsort [dict values $children]]" # # Get tree # dict for { name id } $children { aa_equals "Check category tree" \ "[category::get_tree $id]" "$tree_id" } # # Get data # dict for { name id } $children { aa_equals "Check category data" \ "[category::get_data $id]" "$id $name $tree_id $tree_name" } # # Get id by name/title # dict for { name id } $children { aa_equals "Check category by name" "[category::get_id $name]" "$id" aa_equals "Check category by object title" \ "[category::get_id_by_object_title $name]" "$id" } # # Get name by id # dict for { name id } $children { aa_equals "Check category by id" "[category::get_name $id]" "$name" } aa_equals "Check categories by ids" \ "[lsort [category::get_names [dict values $children]]]" \ "[lsort [dict keys $children]]" } } aa_register_case -procs { category::reset_translation_cache category_tree::reset_translation_cache } -cats { api } category_init_procs { Test initialization behavior: this package will build up certain caches at startup. } { set one_tree_id [db_string get_tree { select min(tree_id) from category_trees } -default ""] aa_equals "Tree translations have already been loaded at startup" \ [expr {$one_tree_id ne ""}] [nsv_exists category_tree_translations $one_tree_id] set one_category_id [db_string get_category { select min(category_id) from categories } -default ""] aa_equals "Categroy translations have already been loaded at startup" \ [expr {$one_category_id ne ""}] [nsv_exists categories $one_category_id] } aa_register_case -procs { category_tree::add category_tree::get_name category_tree::get_data category_tree::get_id category_tree::get_id_by_object_title category_tree::get_categories category_tree::map category_tree::get_mapped_trees category_tree::get_mapped_trees_from_object_list category_tree::edit_mapping category_tree::unmap category_tree::copy category_tree::flush_cache category_tree::update category_tree::flush_translation_cache category_tree::delete category_tree::usage category::add category::count_children category::change_parent category::get_children category::get_name category::get_names category::relation::add_meta_category category::relation::get_meta_categories category_tree::exists_p package_instantiate_object relation::get_object_one } -cats { api } category_tree_procs { Test different category_tree procs. } { aa_run_with_teardown -rollback -test_code { # # Create tree # set tree_name foo set tree_description "Just a dummy category tree" set tree_site_wide_p f set tree_id [category_tree::add \ -description $tree_description \ -site_wide_p $tree_site_wide_p \ -name $tree_name] aa_log "Category tree: $tree_name $tree_id" # # Create root category # set root_category_id [category::add \ -tree_id $tree_id \ -parent_id "" \ -name $tree_name] aa_log "Root category: $root_category_id" # # Create children categories # set children {bar1 "" bar2 "" bar3 ""} dict for { name id } $children { set category_id [category::add \ -tree_id $tree_id \ -parent_id $root_category_id \ -description "My category $name" \ -name $name] dict set children $name $category_id aa_log "New children category: $name $category_id" } # # Create a couple of objects # set object_id_1 [package_instantiate_object acs_object] set object_id_2 [package_instantiate_object acs_object] set object_ids [list $object_id_1 $object_id_2] aa_log "New objects: $object_id_1 $object_id_2" # # Get name # aa_equals "Check category tree name" \ "[category_tree::get_name $tree_id]" $tree_name # # Get data # aa_equals "Check category tree data" \ "[category_tree::get_data $tree_id]" \ "description {$tree_description} tree_name $tree_name site_wide_p $tree_site_wide_p" # # Get ID by name/title # aa_equals "Check category tree ID by name" \ "[category_tree::get_id $tree_name]" $tree_id aa_equals "Check category tree ID by object title" \ "[category_tree::get_id_by_object_title -title $tree_name]" \ $tree_id # # Get root categories of a tree # aa_equals "Check root categories of a tree" \ "[category_tree::get_categories -tree_id $tree_id]" \ "$root_category_id" # # Map category tree to an object # category_tree::map -tree_id $tree_id -object_id $object_id_1 category_tree::map -tree_id $tree_id -object_id $object_id_2 aa_equals "Check mapped category trees of an object" \ "[lindex [category_tree::get_mapped_trees $object_id_1] 0 0]" \ "$tree_id" foreach mapped_trees [category_tree::get_mapped_trees_from_object_list $object_ids] { aa_equals "Check mapped category trees of an object list" \ "[lindex $mapped_trees 0 0]" "$tree_id" } set user_id [ad_conn user_id] aa_equals "category_tree::usage returns expected" \ [category_tree::usage $tree_id] \ [db_list_of_lists category_tree_usage { select t.pretty_plural, n.object_id, n.title, p.package_id, p.instance_name, acs_permission.permission_p(n.object_id, :user_id, 'read') as read_p from category_tree_map m, acs_objects n, apm_packages p, apm_package_types t where m.tree_id = :tree_id and n.object_id = m.object_id and p.package_id = n.package_id and t.package_key = p.package_key }] # # Edit mapping # category_tree::edit_mapping \ -tree_id $tree_id \ -object_id $object_id_1 \ -assign_single_p t \ -require_category_p t set assign_single_p [lindex [category_tree::get_mapped_trees $object_id_1] 0 3] set require_category_p [lindex [category_tree::get_mapped_trees $object_id_1] 0 4] aa_equals "Check edited mapped category trees of an object" \ "assign_single_p: $assign_single_p require_category_p: $require_category_p" \ "assign_single_p: t require_category_p: t" category_tree::edit_mapping \ -tree_id $tree_id \ -object_id $object_id_1 \ -assign_single_p f \ -require_category_p f set assign_single_p [lindex [category_tree::get_mapped_trees $object_id_1] 0 3] set require_category_p [lindex [category_tree::get_mapped_trees $object_id_1] 0 4] aa_equals "Check edited mapped category trees of an object" \ "assign_single_p: $assign_single_p require_category_p: $require_category_p" \ "assign_single_p: f require_category_p: f" # # Unmap # category_tree::unmap -tree_id $tree_id -object_id $object_id_1 category_tree::unmap -tree_id $tree_id -object_id $object_id_2 aa_equals "Check unmapped category trees of an object" \ "[category_tree::get_mapped_trees $object_id_1]" "" aa_equals "Check unmapped category trees of an object list" \ "[category_tree::get_mapped_trees_from_object_list $object_ids]" "" # # Copy # set copy_tree_name "bar" set copy_tree_description "Copied tree" set copy_tree_id [category_tree::add \ -description $copy_tree_description \ -site_wide_p f \ -name $copy_tree_name] aa_log "Category tree: $copy_tree_name $copy_tree_id" category_tree::copy -source_tree $tree_id -dest_tree $copy_tree_id set copy_root_category_id [category_tree::get_categories -tree_id $copy_tree_id] aa_equals "Check copied category tree root name" \ "[category::get_name $copy_root_category_id]" "$tree_name" aa_equals "Check copied category children" \ "[lsort [category::get_names [category::get_children \ -category_id $copy_root_category_id]]]" \ "[lsort [dict keys $children]]" aa_equals "Count category children" \ [category::count_children -category_id $copy_root_category_id] 3 # # Change parent (make bar1 parent of bar2) # set bar1_id [dict get $children bar1] set bar2_id [dict get $children bar2] category::change_parent \ -category_id $bar1_id \ -tree_id $copy_tree_id \ -parent_id $bar2_id aa_equals "Check new parent category children" \ "[category::get_children -category_id $bar2_id]" "$bar1_id" # # Create a meta category from bar1 and bar2 # set user_info [acs::test::user::create] set user_id [dict get $user_info user_id] set user_meta_category_id [category::relation::add_meta_category \ -category_id_one $bar1_id \ -category_id_two $bar2_id \ -user_id $user_id] set meta_category_id [relation::get_object_one \ -rel_type "user_meta_category_rel" \ -object_id_two $user_id] aa_log "New meta category $meta_category_id from $bar1_id and $bar2_id" aa_equals "Check categories from a meta category" \ "[lsort [category::relation::get_meta_categories \ -rel_id $meta_category_id]]" \ "[lsort [list $bar1_id $bar2_id]]" # # Update # set new_description "The new description" set new_name "The new name" category_tree::update \ -tree_id $copy_tree_id \ -name $new_name \ -description $new_description aa_equals "Check updated category tree data" \ "[category_tree::get_data $copy_tree_id]" \ "description {$new_description} tree_name {$new_name} site_wide_p f" # # Delete # aa_true "Check category tree before deletion" \ [category_tree::exists_p $copy_tree_id] category_tree::delete $copy_tree_id aa_false "Check category tree after deletion" \ [category_tree::exists_p $copy_tree_id] } } aa_register_case -procs { category::map_object category::get_mapped_categories category::get_mapped_categories_multirow category::get_objects category::get_object_context category_tree::get_trees category::tagcloud::get_tags category::tagcloud::tagcloud } -cats { api smoke } category_object_mapping { Test api to map a category to an object } { aa_run_with_teardown -rollback -test_code { # # We need a content item to test category::get_objects later # set folder_id [content::folder::new \ -label "One folder" \ -name __category_object_mapping_folder] content::folder::register_content_type \ -folder_id $folder_id -content_type "content_revision" set one_object_id [content::item::new \ -name __category_object_mapping \ -parent_id $folder_id \ -title "One Item" \ -content_type content_revision \ -text {some text}] aa_equals "Object context for the object is as expected" \ [list "/o/$one_object_id" [acs_object_name $one_object_id]] \ [category::get_object_context $one_object_id] aa_section "Create tree" set tree_name foo set tree_description "Just a dummy category tree" set tree_site_wide_p f set tree_id [category_tree::add \ -description $tree_description \ -site_wide_p $tree_site_wide_p \ -name $tree_name] aa_log "Category tree: $tree_name $tree_id" aa_section "Create root category" set root_category_id [category::add \ -tree_id $tree_id \ -parent_id "" \ -name $tree_name] aa_log "Root category: $root_category_id" # # Create children categories # set children {bar1 "" bar2 "" bar3 ""} dict for { name id } $children { set category_id [category::add \ -tree_id $tree_id \ -parent_id $root_category_id \ -description "My category $name" \ -name $name] dict set children $name $category_id aa_log "New children category: $name $category_id" } aa_section "Map categories" aa_equals "category_tree::get_trees returns expected" \ [category_tree::get_trees $one_object_id] \ "" set categories [list \ $root_category_id \ {*}[dict values $children]] category::map_object \ -object_id $one_object_id \ $categories aa_section "Check mappings" set mapped_categories [category::get_mapped_categories $one_object_id] aa_equals "Api retrieves the expected mapped categories" \ [lsort $categories] [lsort $mapped_categories] set mapped_categories [category::get_mapped_categories -tree_id $one_object_id $one_object_id] aa_equals "Api retrieves 0 categories if the tree is wrong" \ [llength $mapped_categories] 0 set mapped_categories [category::get_mapped_categories -tree_id $tree_id $one_object_id] aa_equals "Api retrieves the expected mapped categories also by tree" \ [lsort $categories] [lsort $mapped_categories] category::get_mapped_categories_multirow -multirow __test_category_map $one_object_id aa_true "The multirow was created" \ [template::multirow exists __test_category_map] aa_equals "The multirow has the same size as the mapped categories" \ [template::multirow size __test_category_map] [llength $mapped_categories] template::multirow sort __test_category_map category_id set i 0 template::multirow foreach __test_category_map { aa_equals "Category in the multirow corresponds to that from the list" \ $category_id [lindex $mapped_categories $i] incr i } aa_equals "category_tree::get_trees returns expected" \ [category_tree::get_trees $one_object_id] \ [list $tree_id] set cloud_tags [category::tagcloud::get_tags -tree_id $tree_id] aa_equals "category::tagcloud::get_tags returns expected" \ [lsort -index 0 $cloud_tags] \ [list \ [list $root_category_id 1 $tree_name] \ [list [lindex $categories 1] 1 "bar1"] \ [list [lindex $categories 2] 1 "bar2"] \ [list [lindex $categories 3] 1 "bar3"] \ ] set tag_cloud [category::tagcloud::tagcloud -tree_id $tree_id] set rgxp <.* foreach tag $cloud_tags { append rgxp [join $tag .*].* } append rgxp > aa_true "Tagcloud looks like '$rgxp'" [regexp $rgxp $tag_cloud] foreach category_id $categories { set object_ids [category::get_objects -category_id $category_id] aa_equals "Getting the object from one of the mapped categories '$category_id' returns our object" \ $object_ids $one_object_id set object_ids [category::get_objects -category_id $category_id -content_type content_revision] aa_equals "Getting the content_revision objects from one of the mapped categories '$category_id' returns our object" \ $object_ids $one_object_id set object_ids [category::get_objects -category_id $category_id -object_type content_item] aa_equals "Getting the content_item objects from one of the mapped categories '$category_id' returns our object" \ $object_ids $one_object_id set object_ids [category::get_objects -category_id $category_id -content_type text/plain] aa_equals "Getting the text/plain objects from one of the mapped categories '$category_id' returns nothing" \ [llength $object_ids] 0 set object_ids [category::get_objects -category_id $category_id -object_type user] aa_equals "Getting the user objects from one of the mapped categories '$category_id' returns nothing" \ [llength $object_ids] 0 } aa_section "Unmap categories" category::map_object \ -remove_old \ -object_id $one_object_id \ {} aa_equals "Mappings were deleted" \ [llength [category::get_mapped_categories $one_object_id]] 0 aa_equals "Mappings were deleted also by tree" \ [llength [category::get_mapped_categories -tree_id $tree_id $one_object_id]] 0 category::get_mapped_categories_multirow -multirow __test_category_map $one_object_id aa_equals "The multirow has size 0" \ [template::multirow size __test_category_map] 0 } } aa_register_case -procs { category::pageurl category_tree::pageurl } -cats { api smoke } AcsObject_service_contract_implementations { Test api implementing the AcsObject service contract } { aa_run_with_teardown -rollback -test_code { aa_section "Create tree" set tree_name foo set tree_description "Just a dummy category tree" set tree_site_wide_p f set tree_id [category_tree::add \ -description $tree_description \ -site_wide_p $tree_site_wide_p \ -name $tree_name] aa_log "Category tree: $tree_name $tree_id" aa_section "Create root category" set category_id [category::add \ -tree_id $tree_id \ -parent_id "" \ -name $tree_name] set link [acs_sc::invoke \ -contract AcsObject \ -operation PageUrl \ -impl category_idhandler \ -call_args [list $category_id]] aa_equals "category_idhandler.PageUrl"\ $link "categories-browse?tree_ids=$tree_id&category_ids=$category_id" set link [acs_sc::invoke \ -contract AcsObject \ -operation PageUrl \ -impl category_tree_idhandler \ -call_args [list $tree_id]] aa_equals "category_tree_idhandler.PageUrl" \ $link "categories-browse?tree_ids=$tree_id" } } # Local variables: # mode: tcl # tcl-indent-level: 4 # indent-tabs-mode: nil # End: