Index: openacs-4/packages/tlf-assignments/tcl/test/tlf-assignment-test-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/tlf-assignments/tcl/test/tlf-assignment-test-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/tlf-assignments/tcl/test/tlf-assignment-test-procs.tcl 22 Nov 2023 12:23:01 -0000 1.1 @@ -0,0 +1,187 @@ +namespace eval ::tlf_cassignments { + aa_register_init_class \ + tlf_assignment_require_test_instance { + Make sure the test instance is there and create it if necessary. + } { + aa_export_vars {_test_instance_name _test_instance_package_id _user_id _user_info} + set _test_instance_name /tlf-assignments-test + set package_id [::acs::test::require_package_instance \ + -package_key tlf-assignments \ + -instance_name $_test_instance_name \ + -empty] + + set _test_instance_package_id $package_id + aa_log "Test instance package_id: $_test_instance_package_id" + set _user_id [db_nextval acs_object_id_seq] + set _user_info [acs::test::user::create -user_id $_user_id -admin] + acs::test::confirm_email -user_id $_user_id + } { + # + # Cleanup: unmount the test instance + # + set node_id [site_node::get_node_id_from_object_id -object_id $_test_instance_package_id] + site_node::unmount -node_id $node_id + site_node::delete -node_id $node_id -delete_package + # + # Delete the test user + # + ::xo::dc list delete { + select acs_object__delete(object_id) + from acs_objects + where creation_user in (:_user_id) + } + acs::test::user::delete -user_id $_user_id + } + + aa_register_case -init_classes {tlf_assignment_require_test_instance} -cats {web} -procs { + "::xowiki::Package lookup" + } tlf_assignment_items_exist { + Check if workflow items are available after correct installation + } { + set user_id $_user_id + set user_info $_user_info + set instance $_test_instance_name + ::xo::Package initialize -url $instance/ + set submit_item [::$package_id lookup -name abgabe-stud.wf] + aa_true "submission wf item is not 0" {$submit_item != 0} + set create_item [::$package_id lookup -name create-assignment.wf] + aa_true "create wf item is not 0" {$create_item != 0} + } + + aa_register_case -procs { + tlf_assignment_portlet::add_self_to_page + tlf_assignment_portlet::remove_self_from_page + } -cats { + api + } tlf_assignment_add_remove_from_page { + Test add/remove portlet procs. + } { + # + # Helper proc to check portal elements + # + proc portlet_exists_p {portal_id} { + set portlet_name [tlf_assignment_portlet::get_my_name] + return [db_0or1row portlet_in_portal { + select 1 from dual where exists ( + select 1 + from portal_element_map pem, + portal_pages pp + where pp.portal_id = :portal_id + and pp.page_id = pem.page_id + and pem.name = :portlet_name + ) + }] + } + + aa_run_with_teardown -rollback -test_code { + set community_id [dotlrn_community::new -community_type dotlrn_community -pretty_name test] + if {$community_id eq ""} { + aa_error "Community creation failed" + } + set portal_id [dotlrn_community::get_admin_portal_id -community_id $community_id] + set package_id [dotlrn::instantiate_and_mount $community_id [ast_installer package_key]] + + #add portlet + tlf_assignment_portlet::add_self_to_page \ + -portal_id $portal_id \ + -package_id $package_id \ + -param_action "" + aa_true "Portlet is in community portal after addition" "[portlet_exists_p $portal_id]" + #remove portlet + tlf_assignment_portlet::remove_self_from_page \ + -portal_id $portal_id \ + -package_id $package_id + aa_false "Portlet is in community portal after removal" "[portlet_exists_p $portal_id]" + #re-add portlet + tlf_assignment_portlet::add_self_to_page \ + -portal_id $portal_id \ + -package_id $package_id \ + -param_action "" + aa_true "Portlet is in community portal after addition" "[portlet_exists_p $portal_id]" + } + } + + aa_register_case -procs { + "tlf_assignment_portlet::show" + } -cats { + api + smoke + } tlf_assignment_render_portlet { + Test rendering of the portlet + } { + set package_id [db_string get_any_bm { + select max(package_id) from apm_packages + where package_key = 'tlf-assignments' + }] + aa_log "package_id $package_id" + set cf [list \ + package_id $package_id \ + shaded_p false \ + scoped_p false \ + ] + set portlet [acs_sc::invoke \ + -contract portal_datasource \ + -operation Show \ + -impl tlf_assignment_portlet \ + -call_args [list $cf]] + + aa_log "Portlet returns: [ns_quotehtml $portlet]" + + aa_false "No error was returned" { + [string first "Error in include template" $portlet] >= 0 + } + } + + aa_register_case -procs { + "AssignmentCoreWFprocs www-submit" + } -init_classes { + tlf_assignment_require_test_instance + } -cats { + api smoke + } tlf_assignment_create_new_assignment { + creates a new assignment and submits it + } { + set user_id $_user_id + set user_info $_user_info + set instance $_test_instance_name + ::xo::Package initialize -url $instance/ + set request_info [acs::test::login $user_info] + #create new assignment + set testassignment [::xowiki::test::create_form_page \ + -user_id $user_id \ + -last_request $request_info \ + -instance $instance \ + -parent_id [$package_id set folder_id] \ + -form_name create-assignment.wf \ + -path "" \ + -update { + _title "Test Assignment" + _name create_assignment1 + __action_create_new "" + exercise_form "textarea" + beurteilung "sofort" + modus "passed" + }] + set assignment_item [dict get $testassignment item_id] + aa_equals item_state "[$assignment_item state]" "assign" + #publish new assignment + set page [::xowiki::test::edit_form_page \ + -user_id $user_id \ + -last_request $request_info \ + -instance $instance \ + -refetch=false \ + -path create_assignment1 \ + -update { + __action_saveZB "" + zuweisen "alle" + } + ] + #submit assignment + set d [acs::test::http \ + -user_id $user_id \ + -depth 2 \ + -last_request $request_info \ + [export_vars -base $instance/create_assignment1 {{m submit}}]] + aa_equals submit_status [dict get $d status] 200 + } +}