- Publicity: Public Only All
forums-procs.tcl
Automated tests.
- Location:
- packages/forums/tcl/test/forums-procs.tcl
- Created:
- 15 November 2003
- Authors:
- Simon Carstensen
- Gerardo Morales
- Mounir Lallali
- CVS Identification:
$Id: forums-procs.tcl,v 1.11.2.12 2023/03/21 13:51:37 antoniop Exp $
Procedures in this file
Detailed information
[ hide source ] | [ make this the default ]Content File Source
ad_library { Automated tests. @author Simon Carstensen @creation-date 15 November 2003 @author Gerardo Morales @author Mounir Lallali @cvs-id $Id: forums-procs.tcl,v 1.11.2.12 2023/03/21 13:51:37 antoniop Exp $ } aa_register_case \ -cats {api smoke} \ -procs { forum::new callback::forum::forum_new::contract forum::flush_templating_cache forum::list_forums forum::valid_forum_id_p } \ forum_new { Test the forum::new proc. } { aa_run_with_teardown \ -rollback \ -test_code { set package_id [subsite::main_site_id] set no_package_id [db_string get_not_package_id { select min(package_id) - 1 from apm_packages }] # Create a couple of forums set forums [list] lappend forums \ [list [forum::new \ -name "foo" \ -package_id $package_id] "foo"] lappend forums \ [list [forum::new \ -name "bar" \ -package_id $package_id] "bar"] aa_equals "No forums retrieved for an invalid package" \ [forum::list_forums -package_id $no_package_id] "" set api_forums [list] foreach s [forum::list_forums -package_id $package_id] { aa_equals "Set has the expected keys" \ [lsort [ns_set keys $s]] {forum_id name posting_policy presentation_type} set forum_id [ns_set get $s forum_id] lappend api_forums \ [list $forum_id [ns_set get $s name]] aa_true "Forum id '$forum_id' is valid (without package)" \ [forum::valid_forum_id_p \ -forum_id $forum_id] aa_true "Forum id '$forum_id' is valid (with package)" \ [forum::valid_forum_id_p \ -forum_id $forum_id \ -package_id $package_id] aa_false "Forum id '$forum_id' is not valid (wrong package)" \ [forum::valid_forum_id_p \ -forum_id $forum_id \ -package_id $no_package_id] } aa_equals "Api retrieves the expected forums" \ [lsort -index 0 $forums] [lsort -index 0 $api_forums] } } aa_register_case \ -cats {api smoke} \ -procs { forum::message::new forum::new forum::message::do_notifications forum::message::get forum::attachments_enabled_p forum::message::notify_users forum::message::notify_moderators forum::message::approve forum::message::reject forum::message::open forum::message::close forum::message::set_format } \ forum_message_new { Test the forum::message::new proc. } { aa_run_with_teardown \ -rollback \ -test_code { set main_site [site_node::get -url "/test"] set package_id [dict get $main_site object_id] aa_log "Require the attachments package" if {![site_node_apm_integration::child_package_exists_p \ -package_id $package_id \ -package_key attachments]} { site_node::instantiate_and_mount \ -package_key attachments \ -parent_node_id [dict get $main_site node_id] } # Create forum set forum_id [forum::new \ -name "foo" \ -posting_policy "moderated" \ -attachments_allowed_p false \ -package_id $package_id] aa_false "Attachments are disabled" \ [forum::attachments_enabled_p -forum_id $forum_id] aa_log "Enable attachments on the forum" forum::edit -forum_id $forum_id -attachments_allowed_p true aa_true "Attachments are enabled" \ [forum::attachments_enabled_p -forum_id $forum_id] # Create message set message_id [forum::message::new \ -forum_id $forum_id \ -subject "foo" \ -content "foo"] set child_message_id [forum::message::new \ -forum_id $forum_id \ -parent_id $message_id \ -format text/plain \ -subject "bar" \ -content "bar"] aa_equals "There are no attachments on message '$message_id'" \ [llength [attachments::get_attachments -object_id $message_id]] 0 set attachments [db_list any_objects { select object_id from acs_objects where object_id not in (:message_id, :child_message_id, :forum_id, :package_id) order by object_id desc fetch first 3 rows only }] foreach attachment_id $attachments { attachments::attach \ -object_id $message_id \ -attachment_id $attachment_id \ -approved_p true } aa_equals "There are now 3 attachments on message '$message_id'" \ [llength [attachments::get_attachments -object_id $message_id]] 3 forum::message::get -message_id $message_id -array m aa_equals "Message '$message_id' is waiting for approval" \ $m(state) "pending" forum::message::get -message_id $child_message_id -array cm aa_equals "Message '$child_message_id' is waiting for approval" \ $cm(state) "pending" aa_equals "Message '$child_message_id' is child of '$message_id'" \ $cm(parent_id) $message_id aa_equals "Message '$child_message_id' is in format 'text/plain'" \ $cm(format) text/plain aa_log "Change the format of message '$child_message_id'" forum::message::set_format -message_id $child_message_id -format text/html forum::message::get -message_id $child_message_id -array cm aa_equals "Message '$child_message_id' is now in format 'text/html'" \ $cm(format) text/html aa_log "Reject message '$message_id'" forum::message::reject -message_id $message_id forum::message::get -message_id $message_id -array m aa_equals "Message '$message_id' is rejected" \ $m(state) "rejected" forum::message::get -message_id $child_message_id -array cm aa_equals "Message '$child_message_id' is still waiting for approval" \ $cm(state) "pending" aa_log "Approve message '$message_id'" forum::message::approve -message_id $message_id forum::message::get -message_id $message_id -array m aa_equals "Message '$message_id' is approved" \ $m(state) "approved" forum::message::get -message_id $child_message_id -array cm aa_equals "Message '$child_message_id' is still waiting for approval" \ $cm(state) "pending" aa_log "Close message '$message_id' (meant as subthread)" forum::message::close -message_id $message_id forum::message::get -message_id $message_id -array m aa_false "Message '$message_id' is closed" $m(open_p) forum::message::get -message_id $child_message_id -array cm aa_false "Message '$child_message_id' is also closed" $cm(open_p) aa_log "Open message '$message_id' (meant as subthread)" forum::message::open -message_id $message_id forum::message::get -message_id $message_id -array m aa_true "Message '$message_id' is open" $m(open_p) forum::message::get -message_id $child_message_id -array cm aa_true "Message '$child_message_id' is also open" $cm(open_p) } } aa_register_case \ -cats {db smoke} \ -procs { forum::get forum::message::delete forum::message::get forum::flush_cache forum::flush_namespaced_cache forum::message::new forum::message::do_notifications forum::message::notify_moderators forum::message::notify_users forum::message::set_state forum::new } \ forum_count_test { Test the thread count and reply count tracking code. } { aa_run_with_teardown \ -rollback \ -test_code { set package_id [subsite::main_site_id] # Create open forum set forum_id [forum::new \ -name foo \ -package_id $package_id] forum::get -forum_id $forum_id -array forum aa_equals "New forum has zero approved threads" $forum(approved_thread_count) 0 aa_equals "New forum has zero threads" $forum(thread_count) 0 # Create message set message_id [forum::message::new \ -forum_id $forum_id \ -subject foo \ -content foo] forum::get -forum_id $forum_id -array forum aa_equals "After post forum has one approved thread" $forum(approved_thread_count) 1 aa_equals "After post forum has one threads" $forum(thread_count) 1 forum::message::get -message_id $message_id -array message aa_equals "New post has zero approved replies" $message(approved_reply_count) 0 aa_equals "New post has zero threads" $message(reply_count) 0 set reply_id [forum::message::new \ -forum_id $forum_id \ -parent_id $message_id \ -subject foo \ -content foo] forum::get -forum_id $forum_id -array forum aa_equals "After reply forum has one approved thread" $forum(approved_thread_count) 1 aa_equals "After reply forum has one thread" $forum(thread_count) 1 forum::message::get -message_id $message_id -array message aa_equals "After reply post has one approved replies" $message(approved_reply_count) 1 aa_equals "After reply post has one reply" $message(reply_count) 1 # Create moderated forum set forum_id [forum::new \ -name bar \ -posting_policy moderated \ -package_id $package_id] # Create message set message_id [forum::message::new \ -forum_id $forum_id \ -subject "foo" \ -content "foo"] forum::get -forum_id $forum_id -array forum aa_equals "After post moderated forum has zero approved threads" $forum(approved_thread_count) 0 aa_equals "After post moderated forum has one thread" $forum(thread_count) 1 set reply_id [forum::message::new \ -forum_id $forum_id \ -parent_id $message_id \ -subject "foo" \ -content "foo"] forum::message::get -message_id $message_id -array message aa_equals "After reply moderated post has zero approved replies" $message(approved_reply_count) 0 aa_equals "After reply moderated post has one reply" $message(reply_count) 1 forum::message::set_state -message_id $message_id -state approved forum::get -forum_id $forum_id -array forum aa_equals "After approval moderated forum has one approved thread" $forum(approved_thread_count) 1 aa_equals "After approval moderated forum has one thread" $forum(thread_count) 1 forum::message::set_state -message_id $reply_id -state approved forum::message::get -message_id $message_id -array message aa_equals "After reply approval post has one approved reply" $message(approved_reply_count) 1 aa_equals "After reply approval post has one reply" $message(reply_count) 1 forum::message::delete -message_id $message_id forum::get -forum_id $forum_id -array forum aa_equals "After deletion moderated forum has zero approved threads" $forum(approved_thread_count) 0 aa_equals "After deletion moderated forum has zero threads" $forum(thread_count) 0 } } aa_register_case \ -cats {api web smoke} \ -procs { forum::new forum::delete aa_get_first_url acs_community_member_admin_url ds_adp_start_box ds_adp_end_box forums::form::forum } \ -urls { /admin/forum-new } web_forum_new { Testing the creation of a forum via web } { set forum_id 0 aa_run_with_teardown -test_code { # # Create a new admin user # set user_info [acs::test::user::create -admin] set user_id [dict get $user_info user_id] # # Create a new forum # set name [ad_generate_random_string] set d [forums::test::new -user_info $user_info $name] set forum_id [dict get $d payload forum_id] } -teardown_code { # # In order to be able to delete the user, we have first to # delete the fresh forum (via API). # if {$forum_id != 0} { forum::delete -forum_id $forum_id } acs::test::user::delete -user_id [dict get $user_info user_id] } } aa_register_case \ -cats {web smoke} \ -procs { aa_get_first_url acs_community_member_admin_url ad_context_node_list forum::delete forum::get forum::new forums::form::forum forums::form::search } \ -urls { /admin/forum-new /forum-view } web_forum_view { Testing the creation of a forum via web } { set forum_id 0 aa_run_with_teardown -test_code { # # Create a new admin user # set user_info [acs::test::user::create -admin] set user_id [dict get $user_info user_id] # # Create a new forum # set name [ad_generate_random_string] set d [forums::test::new -user_info $user_info $name] set forum_id [dict get $d payload forum_id] aa_log "Created forum with id $forum_id" # # View a forum via name. # set response [forums::test::view \ -last_request $d \ -name $name ] # # View a forum via forum_id. # set response [forums::test::view \ -last_request $d \ -forum_id $forum_id ] } -teardown_code { # # Delete the forum. # if {$forum_id != 0} { forum::delete -forum_id $forum_id } acs::test::user::delete -user_id [dict get $user_info user_id] } } aa_register_case \ -cats {web smoke} \ -procs { aa_get_first_url acs_community_member_admin_url ad_context_node_list ds_adp_end_box ds_adp_start_box forum::delete forum::edit forum::get forum::new forums::form::forum forums::form::search } \ -urls { /admin/forum-new /admin/forum-edit } \ web_forum_edit { Testing the editing of an existing forum. } { set forum_id 0 aa_run_with_teardown -test_code { # # Create a new admin user # set user_info [acs::test::user::create -admin] set user_id [dict get $user_info user_id] # # Create a new forum # set name [ad_generate_random_string] set d [forums::test::new -user_info $user_info $name] set forum_id [dict get $d payload forum_id] # # Edit the meta info of the created forum # set response [forums::test::edit \ -last_request $d \ -forum_id $forum_id ] } -teardown_code { if {$forum_id != 0} { forum::delete -forum_id $forum_id } acs::test::user::delete -user_id [dict get $user_info user_id] } } aa_register_case \ -cats {web smoke} \ -procs { forum::delete forum::edit forum::get forum::message::delete forum::message::delete forum::message::edit forum::message::get forum::message::new forum::message::set_state forum::new forum::security::require_post_forum aa_get_first_url acs_community_member_admin_url ad_context_node_list ds_adp_start_box ds_adp_end_box ad_form forum::format::emoticons forum::security::can_post_forum_p forum::security::permissions forum::security::require_moderate_forum forum::security::require_read_forum forum::security::require_post_forum forum::use_ReadingInfo_p forum::valid_forum_id_p forums::form::forum forums::form::message forums::form::search } \ -urls { /message-post /forum-view /message-view /message-post /moderate/message-edit /moderate/message-delete } \ web_forums_message_and_reply { Do various operations in a longer test: - create a forum - add a forums entry - reply to the forum - edit the forums entry - delete the forums entry } { set forum_id 0 set message_id 0 aa_run_with_teardown -test_code { # # Create a new admin user # set user_info [acs::test::user::create -admin] set user_id [dict get $user_info user_id] # # Create a new forum # set name [ad_generate_random_string] set d [forums::test::new -user_info $user_info $name] set forum_id [dict get $d payload forum_id] # Post a message in the created forum set message_id [forums::test::new_postings \ -last_request $d \ -forum_id $forum_id ] } -teardown_code { if {$message_id != 0} { forum::message::delete -message_id $message_id } if {$forum_id != 0} { forum::delete -forum_id $forum_id } acs::test::user::delete -user_id [dict get $user_info user_id] } } aa_register_case -cats { api } -procs { forum::new forum::enable forum::disable } forum_enable_disable { Test forum enabling and disabling. } { # # Helper proc to check if the forum is enabled # proc forum_enabled_p {forum_id} { return [db_string enabled_p { select enabled_p from forums_forums where forum_id = :forum_id } -default "0"] } # # Start the tests # aa_run_with_teardown -rollback -test_code { # # Create forum # set package_id [subsite::main_site_id] set forum_id [forum::new \ -name "foo" \ -package_id $package_id] # # Enable forum if it is disabled # if {![forum_enabled_p $forum_id]} { forum::enable -forum_id $forum_id } aa_true "Forum $forum_id is enabled" [forum_enabled_p $forum_id] # # Disable # forum::disable -forum_id $forum_id aa_false "Forum $forum_id is enabled" [forum_enabled_p $forum_id] # # Enable again # forum::enable -forum_id $forum_id aa_true "Forum $forum_id is enabled" [forum_enabled_p $forum_id] } } # Local variables: # mode: tcl # tcl-indent-level: 4 # indent-tabs-mode: nil # End: