_calendar__cal_item_add_delete (private)
_calendar__cal_item_add_delete
Defined in packages/calendar/tcl/test/cal-item-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 {{ try { set user_id [ad_conn user_id] # create a test calendar set calendar_id [calendar::create $user_id t] aa_true "User '$user_id' has the new calendar" { [string first $calendar_id [calendar::calendar_list -user_id $user_id -privilege calendar_read]] >= 0 } set another_user [dict get [acs::test::user::create] user_id] aa_equals "User '$another_user' has no private calendars" [calendar::calendar_list -user_id $another_user -privilege calendar_read] [list] aa_equals "User '$another_user' has no public calendars" [calendar::calendar_list -user_id $another_user -privilege read] [list] aa_false "User '$another_user' has no 'calendar_read' permission on calendar '$calendar_id'" [permission::permission_p -party_id $another_user -object_id $calendar_id -privilege calendar_read] aa_false "The public has no 'calendar_read' permission on calendar '$calendar_id'" [permission::permission_p -party_id [acs_magic_object "the_public"] -object_id $calendar_id -privilege calendar_read] aa_log "Assign permission on user" permission::grant -object_id $calendar_id -party_id $another_user -privilege calendar_read aa_true "User '$another_user' has 'calendar_read' permission on calendar '$calendar_id'" [permission::permission_p -party_id $another_user -object_id $calendar_id -privilege calendar_read] aa_false "The public has no 'calendar_read' permission on calendar '$calendar_id'" [permission::permission_p -party_id [acs_magic_object "the_public"] -object_id $calendar_id -privilege calendar_read] aa_equals "User '$another_user' has no private calendars" [calendar::calendar_list -user_id $another_user -privilege read] [list] aa_equals "User '$another_user' has no public calendars" [calendar::calendar_list -user_id $another_user -privilege calendar_read] [list] aa_false "User '$another_user' has no private calendar" [calendar::have_private_p -party_id $another_user] aa_log "Create a private test calendar belonging to the other user" set calendar_id_2 [calendar::create $another_user t] aa_log "Create a calendar item belonging to the other user" set ci_start_date [clock format [clock seconds] -format "%Y-%m-%d"] set ci_end_date [clock format [clock scan "tomorrow" -base [clock seconds]] -format "%Y-%m-%d"] # # Note: the creation_user can only be specified by altering # the connection information. This is not great. # set old_user [ad_conn user_id] ad_conn -set user_id $another_user set another_cal_item_id [calendar::item::new -start_date $ci_start_date -end_date $ci_end_date -name Test -description {Test Desc} -calendar_id $calendar_id_2] ad_conn -set user_id $old_user foreach priv {cal_item_read read write delete admin} { aa_true "Other user has privilege '$priv' on the cal item '$another_cal_item_id'" [permission::permission_p -party_id $another_user -object_id $another_cal_item_id -privilege $priv] } aa_true "User '$another_user' has now a private calendar" [calendar::have_private_p -party_id $another_user] aa_true "Calendar '$calendar_id_2' is personal to '$another_user'" [calendar::personal_p -calendar_id $calendar_id_2 -user_id $another_user] aa_false "Calendar '$calendar_id_2' is not personal to current user" [calendar::personal_p -calendar_id $calendar_id_2 -user_id [ad_conn user_id]] aa_equals "User '$another_user' has the new calendar" [calendar::have_private_p -party_id $another_user -return_id 1] $calendar_id_2 aa_true "User '$another_user' has the new calendar" { [string first $calendar_id_2 [calendar::calendar_list -user_id $another_user -privilege calendar_read]] >= 0 } aa_log "Create a public test calendar belonging to the current user" set calendar_id_3 [calendar::create $user_id f] permission::grant -object_id $calendar_id_3 -party_id $another_user -privilege calendar_read aa_true "User '$another_user' has the new calendar" { [string first $calendar_id_3 [calendar::calendar_list -user_id $another_user -privilege calendar_read]] >= 0 } aa_log "Revoking permission on user" permission::revoke -object_id $calendar_id_3 -party_id $another_user -privilege calendar_read aa_false "User '$another_user' has no 'calendar_read' permission on calendar '$calendar_id_3'" [permission::permission_p -party_id $another_user -object_id $calendar_id_3 -privilege calendar_read] aa_false "The public has no 'calendar_read' permission on calendar '$calendar_id'" [permission::permission_p -party_id [acs_magic_object "the_public"] -object_id $calendar_id_3 -privilege calendar_read] aa_log "Assign permission to the public" permission::grant -object_id $calendar_id -party_id [acs_magic_object "the_public"] -privilege calendar_read set cache_p [parameter::get -package_id [ad_acs_kernel_id] -parameter PermissionCacheP -default 0] if { $cache_p } { aa_log "Caching is activated, we flush it for [acs_magic_object the_public]" permission::cache_flush -party_id [acs_magic_object "the_public"] } aa_true "User '$another_user' has 'calendar_read' permission on calendar '$calendar_id'" [permission::permission_p -party_id $another_user -object_id $calendar_id -privilege calendar_read] aa_true "The public has 'calendar_read' permission on calendar '$calendar_id'" [permission::permission_p -party_id [acs_magic_object "the_public"] -object_id $calendar_id -privilege calendar_read] # # Creating a new calendar item will fire a notification, but # only if the notification object has at least 1 subscriber. # aa_log "Subscribing user '$another_user' to the calendar notification" notification::request::new -type_id [notification::type::get_type_id -short_name calendar_notif] -user_id $another_user -object_id [ad_conn package_id] -interval_id [notification::interval::get_id_from_name -name "instant"] -delivery_method_id [notification::delivery::get_id -short_name "email"] # # create a simple calendar item without recurrence # set ci_start_date [clock format [clock seconds] -format "%Y-%m-%d"] set ci_end_date [clock format [clock scan "tomorrow" -base [clock seconds]] -format "%Y-%m-%d"] set ci_name "name" set ci_description "description" set cal_item_id [calendar::item::new -start_date $ci_start_date -end_date $ci_end_date -name $ci_name -description $ci_description -calendar_id $calendar_id] # # Check that the calendar item can be exported as .ics. We use # an admin to avoid permission checks. # set admin_user_info [acs::test::user::create -admin] set admin_user_id [dict get $admin_user_info user_id] set cal_item_ics_url [aa_get_first_url -package_key calendar]ics/${cal_item_id}.ics set d [acs::test::http -user_info $admin_user_info $cal_item_ics_url] acs::test::reply_has_status_code $d 200 aa_true "Content type is .ics" [regexp {^application/x-msoutlook.*$} [ns_set iget [dict get $d headers] Content-type]] set mode_pretty [_ calendar.New] aa_true "Notification was generated" [db_0or1row check { select 1 from notifications where notif_subject like '%' || :mode_pretty || '%' and response_id = :cal_item_id }] aa_equals "The notification URL is correct" [calendar::notification::get_url [ad_conn package_id]] [site_node::get_url_from_object_id -object_id [ad_conn package_id]] calendar::item::get -cal_item_id $cal_item_id -array cal_item aa_equals "Name is correct" $ci_name $cal_item(name) aa_equals "Description is correct" $ci_description $cal_item(description) set activity_id [db_string get_activity_id { select activity_id from acs_events where event_id = :cal_item_id } -default ""] aa_true "activity_id ($activity_id) is not empty" {$activity_id ne ""} calendar::item::delete -cal_item_id $cal_item_id aa_log "deleted item calendar item $cal_item_id" set activity_id [db_string get_activity_id { select activity_id from acs_activities where activity_id = :activity_id } -default ""] aa_true "activity_id ($activity_id) is gone" {$activity_id eq ""} # # Create now a recurring calendar item # aa_log "create a recurreinig calendar item" set ci_start_date [clock format [clock seconds] -format "%Y-%m-%d"] set ci_end_date [clock format [clock scan "tomorrow" -base [clock seconds]] -format "%Y-%m-%d"] set recur_until [clock format [clock scan "10 days" -base [clock seconds]] -format "%Y-%m-%d"] set ci_name "name" set ci_description "description" set cal_item_id [calendar::item::new -start_date $ci_start_date -end_date $ci_end_date -name $ci_name -description $ci_description -calendar_id $calendar_id] # # Add a recurrence # set recurrence_id [calendar::item::add_recurrence -cal_item_id $cal_item_id -interval_type "day" -every_n 1 -days_of_week "" -recur_until $recur_until] aa_log "calendar item $cal_item_id, recurrence_id = '${recurrence_id}'" set activity_id [db_string get_activity_id { select activity_id from acs_events where event_id = :cal_item_id } -default ""] aa_true "activity_id ($activity_id) is not empty" {$activity_id ne ""} aa_true "recurrence_id ($recurrence_id) is not empty" {$recurrence_id ne ""} calendar::item::get -cal_item_id $cal_item_id -array cal_item aa_equals "item::get returns the same recurrence_id" $cal_item(recurrence_id) $recurrence_id set cal_item_ids [db_list get_event_ids { select event_id from acs_events where activity_id = :activity_id }] aa_true "cal_item_ids ($cal_item_ids) of recurring event" {[llength $cal_item_ids] == 11} calendar::item::delete -cal_item_id $cal_item_id aa_log "deleted item calendar item $cal_item_id" set cal_item_ids [db_list get_event_ids { select event_id from acs_events where activity_id = :activity_id }] aa_true "cal_item_ids ($cal_item_ids) of recurring event" {[llength $cal_item_ids] == 10} set activity_id [db_string get_activity_id { select activity_id from acs_activities where activity_id = :activity_id } -default ""] aa_false "activity_id ($activity_id) is gone" {$activity_id eq ""} set recurrence_id [db_string get_activity_id { select recurrence_id from recurrences where recurrence_id = :recurrence_id } -default ""] aa_false "recurrence_id ($recurrence_id) is gone" {$recurrence_id eq ""} # # Now delete all remaining cal items # foreach cid $cal_item_ids { calendar::item::delete -cal_item_id $cid } set cal_item_ids [db_list get_event_ids { select event_id from acs_events where activity_id = :activity_id }] aa_true "cal_item_ids ($cal_item_ids) of recurring event" {[llength $cal_item_ids] == 0} # # ... and check, if the activity and recurrence was deleted # set activity_id [db_string get_activity_id { select activity_id from acs_activities where activity_id = :activity_id } -default ""] aa_true "activity_id ($activity_id) is gone" {$activity_id eq ""} set recurrence_id [db_string get_activity_id { select recurrence_id from recurrences where recurrence_id = :recurrence_id } -default ""] aa_true "recurrence_id ($recurrence_id) is gone" {$recurrence_id eq ""} } on error {errorMsg} { aa_true "Error msg: $errorMsg" 0 } finally { # # Finally, clean up the calendar # calendar::delete -calendar_id $calendar_id calendar::delete -calendar_id $calendar_id_2 calendar::delete -calendar_id $calendar_id_3 foreach user_id [list $another_user $admin_user_id] { acs::test::user::delete -user_id $user_id -delete_created_acs_objects } } # # .. and check, if the calendar is gone. # set n_calendar_id [db_string get_calendar_id { select calendar_id from calendars where calendar_id = :calendar_id } -default ""] aa_true "calendar_id ($n_calendar_id) is gone" {$n_calendar_id eq ""} }} { 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" "cal_item_add_delete (body $body_count): Error during execution: $msg, stack trace: \n$::errorInfo" } incr body_count }XQL Not present: Generic, PostgreSQL, Oracle