Index: openacs-4/packages/dotlrn-news/tcl/test/dotlrn-news-test-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-news/tcl/test/Attic/dotlrn-news-test-procs.tcl,v diff -u -r1.1.2.2 -r1.1.2.3 --- openacs-4/packages/dotlrn-news/tcl/test/dotlrn-news-test-procs.tcl 21 Aug 2020 17:48:36 -0000 1.1.2.2 +++ openacs-4/packages/dotlrn-news/tcl/test/dotlrn-news-test-procs.tcl 1 Oct 2020 09:24:24 -0000 1.1.2.3 @@ -19,7 +19,7 @@ Simple test for the various dotlrn_news::..._key procs. @author Héctor Romojaro - @creation-date 2019-09-10 + @creation-date 2019-09-20 } { aa_equals "Package key" "[dotlrn_news::package_key]" "news" aa_equals "My Package key" "[dotlrn_news::my_package_key]" "dotlrn-news" @@ -38,6 +38,90 @@ aa_equals "Pretty name" "[dotlrn_news::get_pretty_name]" "[_ dotlrn-news.pretty_name]" } +aa_register_case -procs { + dotlrn_news::add_applet + dotlrn_news::add_portlet + dotlrn_news::add_portlet_helper + dotlrn_news::remove_portlet + dotlrn_news::remove_applet + } -cats { + api + } dotlrn_news__applet_portlet { + Test add/remove applet/portlet procs. +} { + # + # Helper proc to check portal elements + # + proc portal_elements {portal_id} { + return [db_string elements { + select count(1) + from portal_element_map pem, + portal_pages pp + where pp.portal_id = :portal_id + and pp.page_id = pem.page_id + }] + } + # + # Start the tests + # + aa_run_with_teardown -rollback -test_code { + # + # Create test user + # + # As this is running in a transaction, it should be cleaned up + # automatically. + # + set portal_user_id [db_nextval acs_object_id_seq] + set user_info [acs::test::user::create -user_id $portal_user_id] + # + # Create portal + # + set portal_id [portal::create $portal_user_id] + set portal_exists_p [db_0or1row foo { + select * from portals where portal_id=:portal_id + }] + if {$portal_exists_p} { + aa_log "Portal created (portal_id: $portal_id)" + if {[dotlrn_applet::get_applet_id_from_key -applet_key [dotlrn_news::applet_key]] ne ""} { + # + # Remove the applet in advance, if it already exists + # + dotlrn_news::remove_applet + aa_log "Removed existing applet" + } + # + # Add applet + # + dotlrn_news::add_applet + aa_true "Add applet" "[expr {[dotlrn_applet::get_applet_id_from_key -applet_key [dotlrn_news::applet_key]] ne ""}]" + # + # Add portlet to portal + # + dotlrn_news::add_portlet $portal_id + aa_equals "Number of portal elements after addition" "[portal_elements $portal_id]" "1" + # + # Remove portlet from portal + # + set args [ns_set create] + ns_set put $args package_id 0 + dotlrn_news::remove_portlet $portal_id $args + aa_equals "Number of portal elements after removal" "[portal_elements $portal_id]" "0" + # + # Add portlet to portal using directly the helper + # + dotlrn_news::add_portlet_helper $portal_id $args + aa_equals "Number of portal elements after addition" "[portal_elements $portal_id]" "1" + # + # Remove applet + # + dotlrn_news::remove_applet + aa_equals "Remove applet" "[dotlrn_applet::get_applet_id_from_key -applet_key [dotlrn_news::applet_key]]" "" + } else { + aa_error "Portal creation failed" + } + } +} + # Local variables: # mode: tcl # tcl-indent-level: 4