sambal-kuali 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +6 -0
 - data/Gemfile.lock +34 -0
 - data/README.md +40 -0
 - data/lib/sambal-kuali/base_page_classes.rb +418 -0
 - data/lib/sambal-kuali/data_objects/academic_calendar.rb +90 -0
 - data/lib/sambal-kuali/data_objects/activity_offering.rb +438 -0
 - data/lib/sambal-kuali/data_objects/activity_offering_cluster.rb +52 -0
 - data/lib/sambal-kuali/data_objects/course_offering.rb +42 -0
 - data/lib/sambal-kuali/data_objects/holiday_calendar.rb +120 -0
 - data/lib/sambal-kuali/data_objects/population.rb +257 -0
 - data/lib/sambal-kuali/data_objects/rollover.rb +67 -0
 - data/lib/sambal-kuali/data_objects/schedule_of_classes.rb +130 -0
 - data/lib/sambal-kuali/kuali_base_page.rb +49 -0
 - data/lib/sambal-kuali/pages/active_population_lookup.rb +22 -0
 - data/lib/sambal-kuali/pages/activity_offering_inquiry.rb +23 -0
 - data/lib/sambal-kuali/pages/activity_offering_lookup.rb +11 -0
 - data/lib/sambal-kuali/pages/activity_offering_maintenance.rb +93 -0
 - data/lib/sambal-kuali/pages/activity_offering_maintenance_view.rb +44 -0
 - data/lib/sambal-kuali/pages/add_hold.rb +11 -0
 - data/lib/sambal-kuali/pages/appointment_window_lookup.rb +12 -0
 - data/lib/sambal-kuali/pages/calendar_search.rb +82 -0
 - data/lib/sambal-kuali/pages/copy_holiday_calendar.rb +20 -0
 - data/lib/sambal-kuali/pages/course_offering_edit.rb +122 -0
 - data/lib/sambal-kuali/pages/course_offering_info_lookup.rb +12 -0
 - data/lib/sambal-kuali/pages/create_acad_calendar.rb +22 -0
 - data/lib/sambal-kuali/pages/create_course_offering.rb +20 -0
 - data/lib/sambal-kuali/pages/create_holiday_calendar.rb +16 -0
 - data/lib/sambal-kuali/pages/create_population.rb +19 -0
 - data/lib/sambal-kuali/pages/create_process.rb +17 -0
 - data/lib/sambal-kuali/pages/delete_term.rb +17 -0
 - data/lib/sambal-kuali/pages/delivery_logistics_edit.rb +37 -0
 - data/lib/sambal-kuali/pages/department_lookup.rb +37 -0
 - data/lib/sambal-kuali/pages/display_schedule_of_classes.rb +132 -0
 - data/lib/sambal-kuali/pages/document_search.rb +37 -0
 - data/lib/sambal-kuali/pages/edit_academic_calendar.rb +57 -0
 - data/lib/sambal-kuali/pages/edit_population.rb +18 -0
 - data/lib/sambal-kuali/pages/enrollment.rb +23 -0
 - data/lib/sambal-kuali/pages/enrollment_fee_lookup.rb +11 -0
 - data/lib/sambal-kuali/pages/format_offering_info_lookup.rb +9 -0
 - data/lib/sambal-kuali/pages/header.rb +5 -0
 - data/lib/sambal-kuali/pages/hold_lookup.rb +34 -0
 - data/lib/sambal-kuali/pages/holiday_calendar_information.rb +25 -0
 - data/lib/sambal-kuali/pages/login_page.rb +15 -0
 - data/lib/sambal-kuali/pages/main_menu.rb +73 -0
 - data/lib/sambal-kuali/pages/manage_course_offerings.rb +72 -0
 - data/lib/sambal-kuali/pages/manage_populations.rb +11 -0
 - data/lib/sambal-kuali/pages/manage_process.rb +20 -0
 - data/lib/sambal-kuali/pages/manage_registration_groups.rb +89 -0
 - data/lib/sambal-kuali/pages/manage_registration_windows.rb +12 -0
 - data/lib/sambal-kuali/pages/organization_lookup.rb +39 -0
 - data/lib/sambal-kuali/pages/perform_rollover.rb +68 -0
 - data/lib/sambal-kuali/pages/personnel_lookup.rb +44 -0
 - data/lib/sambal-kuali/pages/rollover_confirm_release_to_depts.rb +14 -0
 - data/lib/sambal-kuali/pages/rollover_details.rb +40 -0
 - data/lib/sambal-kuali/pages/term_info_lookup.rb +10 -0
 - data/lib/sambal-kuali/pages/term_information.rb +8 -0
 - data/lib/sambal-kuali/pages/term_lookup.rb +15 -0
 - data/lib/sambal-kuali/pages/unknown_term_course_offerings.rb +10 -0
 - data/lib/sambal-kuali/pages/view_population.rb +18 -0
 - data/lib/sambal-kuali/pages/workflow_preferences.rb +34 -0
 - data/lib/sambal-kuali/workflows.rb +121 -0
 - data/lib/sambal-kuali.rb +8 -0
 - data/linux_headless_setup.sh +107 -0
 - data/sambal-kuali.gemspec +12 -0
 - metadata +129 -0
 
| 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class DocumentSearch < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 4 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              element(:search_toggle) { |b| b.frm.button(name: "toggleAdvancedSearch") }
         
     | 
| 
      
 7 
     | 
    
         
            +
              element(:user_toggle) { |b| b.frm.button(name: "toggleSuperUserSearch") }
         
     | 
| 
      
 8 
     | 
    
         
            +
              element(:searches) { |b| b.frm.select(name: "savedSearchToLoadAndExecute") }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              action(:basic_search) { |p| p.search_toggle.click }
         
     | 
| 
      
 11 
     | 
    
         
            +
              action(:detailed_search) { |p| p.search_toggle.click }
         
     | 
| 
      
 12 
     | 
    
         
            +
              action(:clear_saved_searches) { |b| b.frm.button(name: "resetSavedSearch").click }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              element(:document_type) { |b| b.frm.text_field(name: "documentTypeName") }
         
     | 
| 
      
 15 
     | 
    
         
            +
              element(:initiator) { |b| b.frm.text_field(name: "initiatorPrincipalName") }
         
     | 
| 
      
 16 
     | 
    
         
            +
              element(:approver) { |b| b.frm.text_field(name: "approverPrincipalName") }
         
     | 
| 
      
 17 
     | 
    
         
            +
              element(:viewer) { |b| b.frm.text_field(name: "viewerPrincipalName") }
         
     | 
| 
      
 18 
     | 
    
         
            +
              element(:application_document_id) { |b| b.frm.text_field(name: "applicationDocumentId") }
         
     | 
| 
      
 19 
     | 
    
         
            +
              element(:document_id) { |b| b.frm.text_field(name: "documentId") }
         
     | 
| 
      
 20 
     | 
    
         
            +
              element(:document_status) { |b| b.frm.select(name: "statusCode") }
         
     | 
| 
      
 21 
     | 
    
         
            +
              element(:date_created_from) { |b| b.frm.text_field(name: "rangeLowerBoundKeyPrefix_dateCreated") }
         
     | 
| 
      
 22 
     | 
    
         
            +
              element(:date_created_to) { |b| b.frm.text_field(name: "dateCreated") }
         
     | 
| 
      
 23 
     | 
    
         
            +
              element(:date_approved_from) { |b| b.frm.text_field(name: "rangeLowerBoundKeyPrefix_dateApproved") }
         
     | 
| 
      
 24 
     | 
    
         
            +
              element(:date_approved_to) { |b| b.frm.text_field(name: "dateApproved") }
         
     | 
| 
      
 25 
     | 
    
         
            +
              element(:date_last_modified_from) { |b| b.frm.text_field(name: "rangeLowerBoundKeyPrefix_dateLastModified") }
         
     | 
| 
      
 26 
     | 
    
         
            +
              element(:date_last_modified_to) { |b| b.frm.text_field(name: "dateLastModified") }
         
     | 
| 
      
 27 
     | 
    
         
            +
              element(:date_finalized_from) { |b| b.frm.text_field(name: "rangeLowerBoundKeyPrefix_dateFinalized") }
         
     | 
| 
      
 28 
     | 
    
         
            +
              element(:date_finalized_to) { |b| b.frm.text_field(name: "dateFinalized") }
         
     | 
| 
      
 29 
     | 
    
         
            +
              element(:title) { |b| b.frm.text_field(name: "title") }
         
     | 
| 
      
 30 
     | 
    
         
            +
              element(:name_this_search) { |b| b.frm.text_field(name: "saveName") }
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              action(:search) { |b| b.frm.button(name: "methodToCall.search").click }
         
     | 
| 
      
 33 
     | 
    
         
            +
              action(:clear) { |b| b.frm.button(name: "methodToCall.clearValues").click }
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              element(:results_table) { |b| b.frm.table(id: "row", class: "datatable-100") }
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,57 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class EditAcademicCalendar < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              expected_element :academic_calendar_name
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 6 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              action(:information_tab) { |b| b.frm.link(text: "Information").click }
         
     | 
| 
      
 9 
     | 
    
         
            +
              action(:terms_tab) { |b| b.frm.link(text: "Terms").click }
         
     | 
| 
      
 10 
     | 
    
         
            +
              
         
     | 
| 
      
 11 
     | 
    
         
            +
              element(:academic_calendar_name) { |b| b.frm.text_field(name: "academicCalendarInfo.name") }
         
     | 
| 
      
 12 
     | 
    
         
            +
              element(:organization) { |b| b.frm.select(name: "academicCalendarInfo.adminOrgId") }
         
     | 
| 
      
 13 
     | 
    
         
            +
              element(:calendar_start_date) { |b| b.frm.text_field(name: "academicCalendarInfo.startDate") }
         
     | 
| 
      
 14 
     | 
    
         
            +
              element(:calendar_end_date) { |b| b.frm.text_field(name: "academicCalendarInfo.endDate") }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              action(:event_toggle) { |b| b.frm.link(id: "acal-info-event_toggle").click; sleep 1 }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              element(:event_type) { |b| b.frm.select(name: "newCollectionLines['events'].eventTypeKey") }
         
     | 
| 
      
 19 
     | 
    
         
            +
              element(:event_start_date) { |b| b.frm.text_field(name: "newCollectionLines['events'].startDate") }
         
     | 
| 
      
 20 
     | 
    
         
            +
              element(:event_end_date) { |b| b.frm.text_field(name: "newCollectionLines['events'].endDate") }
         
     | 
| 
      
 21 
     | 
    
         
            +
              element(:event_start_time) { |b| b.frm.text_field(name: "newCollectionLines['events'].startTime") }
         
     | 
| 
      
 22 
     | 
    
         
            +
              element(:event_end_time) { |b| b.frm.text_field(name: "newCollectionLines['events'].endTime") }
         
     | 
| 
      
 23 
     | 
    
         
            +
              element(:event_start_ampm) { |b| b.frm.select(name: "newCollectionLines['events'].startTimeAmPm") }
         
     | 
| 
      
 24 
     | 
    
         
            +
              element(:event_end_ampm) { |b| b.frm.select(name: "newCollectionLines['events'].endTimeAmPm") }
         
     | 
| 
      
 25 
     | 
    
         
            +
              element(:all_day) { |b| b.frm.checkbox(name: "newCollectionLines['events'].allDay") }
         
     | 
| 
      
 26 
     | 
    
         
            +
              element(:date_range) { |b| b.frm.checkbox(name: "newCollectionLines['events'].dateRange") }
         
     | 
| 
      
 27 
     | 
    
         
            +
              element(:add_event) { |b| b.frm.button(id: "u177_add") } # Persistent ID needed! Note that there can be multiple Adds on the page. Element identifiers for all need to be helpful
         
     | 
| 
      
 28 
     | 
    
         
            +
              element(:make_official_button) { |b| b.frm.button(text: "Make Official") } # Persistent ID needed!
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              action(:make_official) { |p| p.make_official_button.click; p.loading.wait_while_present }
         
     | 
| 
      
 31 
     | 
    
         
            +
              action(:save) { |b| b.frm.button(text: "Save").click; b.loading.wait_while_present } # Persistent ID needed!
         
     | 
| 
      
 32 
     | 
    
         
            +
              action(:delete_draft) { |b| b.frm.link(text: "Delete Draft").click } # Persistent ID needed!
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              element(:term_type) { |b| b.frm.select(name: "newCollectionLines['termWrapperList'].termType") }
         
     | 
| 
      
 35 
     | 
    
         
            +
              element(:term_start_date) { |b| b.frm.text_field(name: "newCollectionLines['termWrapperList'].startDate") }
         
     | 
| 
      
 36 
     | 
    
         
            +
              element(:term_end_date) { |b| b.frm.text_field(name: "newCollectionLines['termWrapperList'].endDate") }
         
     | 
| 
      
 37 
     | 
    
         
            +
              
         
     | 
| 
      
 38 
     | 
    
         
            +
              action(:add_term) { |b| b.frm.button(id: "u666_add").click; loading.wait_while_present } # Persistent ID needed!
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              element(:term_info_name) { |b| b.frm.text_field(name: "termWrapperList[0].name") }
         
     | 
| 
      
 41 
     | 
    
         
            +
              element(:term_info_start_date) { |b| b.frm.text_field(name: "termWrapperList[0].startDate") }
         
     | 
| 
      
 42 
     | 
    
         
            +
              element(:term_info_end_date) { |b| b.frm.text_field(name: "termWrapperList[0].instructionalDays") }
         
     | 
| 
      
 43 
     | 
    
         
            +
              
         
     | 
| 
      
 44 
     | 
    
         
            +
              element(:key_date_type) { |b| b.frm.select(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].keyDateType") }
         
     | 
| 
      
 45 
     | 
    
         
            +
              element(:key_date_start_date) { |b| b.frm.text_field(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].startDate") }
         
     | 
| 
      
 46 
     | 
    
         
            +
              element(:key_date_start_time) { |b| b.frm.text_field(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].startTime") }
         
     | 
| 
      
 47 
     | 
    
         
            +
              element(:key_date_start_ampm) { |b| b.frm.select(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].startTimeAmPm") }
         
     | 
| 
      
 48 
     | 
    
         
            +
              element(:key_date_end_date) { |b| b.frm.text_field(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].endDate") }
         
     | 
| 
      
 49 
     | 
    
         
            +
              element(:key_date_end_time) { |b| b.frm.text_field(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].endTime") }
         
     | 
| 
      
 50 
     | 
    
         
            +
              element(:key_date_end_ampm) { |b| b.frm.select(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].endTimeAmPm") }
         
     | 
| 
      
 51 
     | 
    
         
            +
              element(:key_date_all_day) { |b| b.frm.checkbox(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].allDay") }
         
     | 
| 
      
 52 
     | 
    
         
            +
              element(:key_date_date_range) { |b| b.frm.checkbox(name: "newCollectionLines['termWrapperList_0_.keyDatesGroupWrappers_0_.keydates'].dateRange") }
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              action(:key_date_add) { |b| b.frm.button(id: "u1326_line0_line0_add").click } # Persistent ID needed!
         
     | 
| 
      
 55 
     | 
    
         
            +
              action(:delete_keydate_group) { |b| b.frm.button(text: "delete keydate group").click } # Persistent ID needed!
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class EditPopulation < PopulationsBase
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              expected_element :active
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 6 
     | 
    
         
            +
              population_attribute_elements
         
     | 
| 
      
 7 
     | 
    
         
            +
              validation_elements
         
     | 
| 
      
 8 
     | 
    
         
            +
              include PopulationEdit
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              element(:active) { |b| b.frm.radio(value: "kuali.population.population.state.active") }
         
     | 
| 
      
 11 
     | 
    
         
            +
              element(:inactive) { |b| b.frm.radio(value: "kuali.population.population.state.inactive") }
         
     | 
| 
      
 12 
     | 
    
         
            +
              element(:operation_element) { |b| b.frm.div(data_label: "Operation").span(index: 1) }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              value(:operation) { |b| b.operation_element.text }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              action(:update) { |b| b.frm.button(id: "button_updatePopulation").click; b.loading.wait_while_present }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Enrollment < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              expected_element :home_link
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 6 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              element(:home_link) { |b| b.frm.link(text: "Home") }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              action(:search_for_calendar_or_term) { |p| p.frm.link(text: "Search for Calendar or Term").click }
         
     | 
| 
      
 11 
     | 
    
         
            +
              action(:create_academic_calendar) { |p| p.frm.link(text: "Create New Calendar (Academic Year)").click }
         
     | 
| 
      
 12 
     | 
    
         
            +
              action(:create_holiday_calendar) { |p| p.frm.link(text: "Create Holiday Calendar").click }
         
     | 
| 
      
 13 
     | 
    
         
            +
              action(:perform_rollover) { |p| p.frm.link(text: "Perform Rollover").click }
         
     | 
| 
      
 14 
     | 
    
         
            +
              action(:manage_populations) { |p| p.frm.link(text: "Manage Populations").click }
         
     | 
| 
      
 15 
     | 
    
         
            +
              action(:view_rollover_details) { |p| p.frm.link(text: "View Rollover Details").click }
         
     | 
| 
      
 16 
     | 
    
         
            +
              action(:create_course_offerings) { |p| p.frm.link(text: "Create Course Offerings").click }
         
     | 
| 
      
 17 
     | 
    
         
            +
              action(:manage_course_offerings) { |p| p.frm.link(text: "Manage Course Offerings").click }
         
     | 
| 
      
 18 
     | 
    
         
            +
              action(:schedule_of_classes) { |p| p.frm.link(text: "Schedule of Classes").click }
         
     | 
| 
      
 19 
     | 
    
         
            +
              action(:manage_registration_windows) { |p| p.frm.link(text: "Manage Registration Windows and Appointments").click }
         
     | 
| 
      
 20 
     | 
    
         
            +
              action(:add_hold) { |b| b.frm.link(text: "Add Hold").click }
         
     | 
| 
      
 21 
     | 
    
         
            +
              action(:manage_hold) { |b| b.frm.link(text: "Manage Hold").click }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class EnrollmentFeeLookup < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
      
 3 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 4 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 5 
     | 
    
         
            +
              green_search_buttons
         
     | 
| 
      
 6 
     | 
    
         
            +
              
         
     | 
| 
      
 7 
     | 
    
         
            +
              element(:identifier) { |b| b.frm.text_field(name: "criteriaFields[id]") }
         
     | 
| 
      
 8 
     | 
    
         
            +
              element(:reference_object_uri) { |b| b.frm.text_field(name: "criteriaFields[refObjectURI]") }
         
     | 
| 
      
 9 
     | 
    
         
            +
              element(:reference_object) { |b| b.frm.text_field(name: "criteriaFields[refObjectId]") }
         
     | 
| 
      
 10 
     | 
    
         
            +
              
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class HoldLookup < HoldBase
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
      
 3 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 4 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 5 
     | 
    
         
            +
              hold_elements
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              element(:active) { |b| b.frm.radio(value: "active") }
         
     | 
| 
      
 8 
     | 
    
         
            +
              element(:inactive) { |b| b.frm.radio(value: "inactive") }
         
     | 
| 
      
 9 
     | 
    
         
            +
              
         
     | 
| 
      
 10 
     | 
    
         
            +
              action(:search) { |b| b.frm.button(text: "Search").click; b.loading.wait_while_present }
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              element(:results_table) { |b| b.frm.table(id: "u115") } # Needs persistent id!
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def view(name)
         
     | 
| 
      
 15 
     | 
    
         
            +
                target_row(name).link(text: "View").click
         
     | 
| 
      
 16 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              def edit(name)
         
     | 
| 
      
 20 
     | 
    
         
            +
                target_row(name).link(text: "Edit").click
         
     | 
| 
      
 21 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              def delete(name)
         
     | 
| 
      
 25 
     | 
    
         
            +
                target_row(name).link(text: "Delete").click
         
     | 
| 
      
 26 
     | 
    
         
            +
                alert.ok
         
     | 
| 
      
 27 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              def target_row(name)
         
     | 
| 
      
 31 
     | 
    
         
            +
                results_table.row(text: /#{Regexp.escape(name)}/)
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class HolidayCalendarInfo < HolidayBase
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              include Holidays
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              expected_element :last_saved_element
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 8 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              element(:last_saved_element) { |b| b.frm.span(id: "u35_span") } # Persistent ID needed!
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              value(:last_saved) { |b| b.last_saved_element.text } # Persistent ID needed!
         
     | 
| 
      
 13 
     | 
    
         
            +
              value(:calendar_name) { |b| b.frm.span(id: "u40").text } # Persistent ID needed!
         
     | 
| 
      
 14 
     | 
    
         
            +
              value(:organization) { |b| b.frm.span(id: "u57").text } # Persistent ID needed!
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              element(:holiday_table) { |b| b.frm.table(id: "u104") } # Persistent ID needed!
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              value(:holiday_calendar_name) { |b| b.frm.span(id: "u404_line0").text } # Persistent ID needed!
         
     | 
| 
      
 19 
     | 
    
         
            +
              value(:holiday_calendar_org) { |b| b.frm.span(id: "u419_line0").text } # Persistent ID needed!
         
     | 
| 
      
 20 
     | 
    
         
            +
              value(:holiday_calendar_start_date) { |b| b.frm.span(id: "u434_line0").text } # Persistent ID needed!
         
     | 
| 
      
 21 
     | 
    
         
            +
              value(:holiday_calendar_end_date) { |b| b.frm.span(id: "u449_line0").text } # Persistent ID needed!
         
     | 
| 
      
 22 
     | 
    
         
            +
              
         
     | 
| 
      
 23 
     | 
    
         
            +
              element(:holidays_table) { |b| b.frm.table(id: "u464_line0") } # Persistent ID needed!
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Login < PageMaker
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              page_url "#{TEST_SITE}/portal.do?selectedTab=main"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              crucial_element(:username_field) { |b| b.text_field(:name=>"j_username") }
         
     | 
| 
      
 6 
     | 
    
         
            +
              crucial_element(:password_field) { |b| b.text_field(:name=>"j_password") }
         
     | 
| 
      
 7 
     | 
    
         
            +
              crucial_element(:login_button) { |b| b.button(:value=>"Login") }
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              def login_with username, password
         
     | 
| 
      
 10 
     | 
    
         
            +
                username_field.set username
         
     | 
| 
      
 11 
     | 
    
         
            +
                password_field.set password
         
     | 
| 
      
 12 
     | 
    
         
            +
                login_button.click
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class MainMenu < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              page_url "#{TEST_SITE}/portal.do?selectedTab=main"
         
     | 
| 
      
 4 
     | 
    
         
            +
              expected_title /Kuali Portal Index/
         
     | 
| 
      
 5 
     | 
    
         
            +
              expected_element :enrollment_home_link
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              element(:enrollment_home_link) { |b| b.link(text: "Enrollment Home") }
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              action(:enrollment_home) { |b| b.enrollment_home_link.click }
         
     | 
| 
      
 12 
     | 
    
         
            +
              action(:kuali_student_home) { |b| b.link(text: "Kuali Student Home").click }
         
     | 
| 
      
 13 
     | 
    
         
            +
              action(:curriculum_management) { |b| b.link(text: "Curriculum Management").click }
         
     | 
| 
      
 14 
     | 
    
         
            +
              action(:organization_management) { |b| b.link(text: "Organization Management").click }
         
     | 
| 
      
 15 
     | 
    
         
            +
              action(:perform_rollover) { |b| b.link(text: "Perform Rollover").click }
         
     | 
| 
      
 16 
     | 
    
         
            +
              action(:rollover_details) { |b| b.link(text: "Rollover Details").click }
         
     | 
| 
      
 17 
     | 
    
         
            +
              action(:manage_course_offerings) { |b| b.link(text: "Manage Course Offerings").click }
         
     | 
| 
      
 18 
     | 
    
         
            +
              action(:delete_target_term) { |b| b.link(text: "Delete Target Term").click }
         
     | 
| 
      
 19 
     | 
    
         
            +
              action(:release_to_departments) { |b| b.link(text: "Release to Departments").click }
         
     | 
| 
      
 20 
     | 
    
         
            +
              action(:activity_offering_lookup) { |b| b.link(text: "Activity Offering Lookup").click }
         
     | 
| 
      
 21 
     | 
    
         
            +
              action(:activity_offering_lookup2) { |b| b.link(text: "Activity Offering Lookup 2").click }
         
     | 
| 
      
 22 
     | 
    
         
            +
              action(:course_offering_info_lookup) { |b| b.link(title: "CourseOfferingInfo Lookup").click }
         
     | 
| 
      
 23 
     | 
    
         
            +
              action(:enrollment_fee_info_lookup) { |b| b.link(title: "Enrollment Fee Info Lookup and Inquiry").click }
         
     | 
| 
      
 24 
     | 
    
         
            +
              action(:format_offering_info_lookup) { |b| b.link(title: "Format Offering Info Lookup").click }
         
     | 
| 
      
 25 
     | 
    
         
            +
              action(:socrolloverresultinfo_lookup) { |b| b.link(title: "SocRolloverResultInfo Lookup").click }
         
     | 
| 
      
 26 
     | 
    
         
            +
              action(:socrolloverresultiteminfo_lookup) { |b| b.link(title: "SocRolloverResultItemInfo Lookup").click }
         
     | 
| 
      
 27 
     | 
    
         
            +
              action(:term_info_lookup) { |b| b.link(title: "Term Info Lookup").click }
         
     | 
| 
      
 28 
     | 
    
         
            +
              action(:course_info_lookup) { |b| b.link(title: "Course Info Lookup").click }
         
     | 
| 
      
 29 
     | 
    
         
            +
              action(:new_course_offering) { |b| b.link(title: "Course Offering (New)").click }
         
     | 
| 
      
 30 
     | 
    
         
            +
              action(:edit_course_offering) { |b| b.link(title: "Course Offering (Edit)").click }
         
     | 
| 
      
 31 
     | 
    
         
            +
              action(:new_enrollment_fee_info) { |b| b.link(title: "Enrollment Fee Info (New)").click }
         
     | 
| 
      
 32 
     | 
    
         
            +
              action(:new_format_offering_info) { |b| b.link(title: "Format Offering Info (New)").click }
         
     | 
| 
      
 33 
     | 
    
         
            +
              action(:manage_registration_windows) { |b| b.link(title: "Manage Registration Windows And Appointments").click }
         
     | 
| 
      
 34 
     | 
    
         
            +
              action(:registration_windows_lookup) { |b| b.link(title: "Registration Windows Lookup and Inquiry ").click }
         
     | 
| 
      
 35 
     | 
    
         
            +
              action(:calendar_search)  { |b| b.link(title: "Calendar Search").click }
         
     | 
| 
      
 36 
     | 
    
         
            +
              action(:create_holiday_calendar) { |b| b.link(title: "Create Holiday Calendar").click }
         
     | 
| 
      
 37 
     | 
    
         
            +
              action(:holiday_calendar_lookup) { |b| b.link(title: "Holiday Calendar Lookup").click }
         
     | 
| 
      
 38 
     | 
    
         
            +
              action(:holiday_calendar_search) { |b| b.link(title: "Holiday Calendar Search (dev link)").click }
         
     | 
| 
      
 39 
     | 
    
         
            +
              action(:create_academic_calendar) { |b| b.link(title: "Create Academic Calendar").click }
         
     | 
| 
      
 40 
     | 
    
         
            +
              action(:copy_academic_calendar) { |b| b.link(title: "Copy Academic Calendar").click }
         
     | 
| 
      
 41 
     | 
    
         
            +
              action(:atp) { |b| b.link(title: "ATP").click }
         
     | 
| 
      
 42 
     | 
    
         
            +
              action(:date_range) { |b| b.link(title: "Date Range").click }
         
     | 
| 
      
 43 
     | 
    
         
            +
              action(:milestone) { |b| b.link(title: "Milestone").click }
         
     | 
| 
      
 44 
     | 
    
         
            +
              action(:enumeration) { |b| b.link(title: "Enumeration").click }
         
     | 
| 
      
 45 
     | 
    
         
            +
              action(:enumerated_value) { |b| b.link(title: "Enumerated Value").click }
         
     | 
| 
      
 46 
     | 
    
         
            +
              action(:message) { |b| b.link(title: "Message").click }
         
     | 
| 
      
 47 
     | 
    
         
            +
              action(:atp_type) { |b| b.link(title: "ATP Type").click }
         
     | 
| 
      
 48 
     | 
    
         
            +
              action(:atp_duration_type) { |b| b.link(title: "ATP Duration Type").click }
         
     | 
| 
      
 49 
     | 
    
         
            +
              action(:atp_seasonal_type) { |b| b.link(title: "ATP Seasonal Type").click }
         
     | 
| 
      
 50 
     | 
    
         
            +
              action(:date_range_type) { |b| b.link(title: "Date Range Type").click }
         
     | 
| 
      
 51 
     | 
    
         
            +
              action(:milestone_type) { |b| b.link(title: "Milestone Type").click }
         
     | 
| 
      
 52 
     | 
    
         
            +
              action(:user_preferences) { |b| b.link(title: "User Preferences").click }
         
     | 
| 
      
 53 
     | 
    
         
            +
              action(:quicklinks) { |b| b.link(title: "Quicklinks").click }
         
     | 
| 
      
 54 
     | 
    
         
            +
              action(:routing_report) { |b| b.link(title: "Routing Report").click }
         
     | 
| 
      
 55 
     | 
    
         
            +
              action(:routing_rules) { |b| b.link(title: "Routing Rules").click }
         
     | 
| 
      
 56 
     | 
    
         
            +
              action(:routing_rules_delegation) { |b| b.link(title: "Routing Rules Delegation").click }
         
     | 
| 
      
 57 
     | 
    
         
            +
              action(:routing_and_id_mgmt_doc_heirarchy) { |b| b.link(title: "Routing and Identity Management Document Type Hierarchy").click }
         
     | 
| 
      
 58 
     | 
    
         
            +
              action(:edoc_lite) { |b| b.link(title: "eDoc Lite").click }
         
     | 
| 
      
 59 
     | 
    
         
            +
              action(:people_flow) { |b| b.link(title: "People Flow").click }
         
     | 
| 
      
 60 
     | 
    
         
            +
              action(:notification_search) { |b| b.link(title: "Notification Search").click }
         
     | 
| 
      
 61 
     | 
    
         
            +
              action(:channel_subscriptions) { |b| b.link(title: "Channel Subscriptions").click }
         
     | 
| 
      
 62 
     | 
    
         
            +
              action(:delivery_types) { |b| b.link(title: "Delivery Types").click }
         
     | 
| 
      
 63 
     | 
    
         
            +
              action(:create_new_agenda) { |b| b.link(title: "Create New Agenda").click }
         
     | 
| 
      
 64 
     | 
    
         
            +
              action(:agenda_lookup) { |b| b.link(title: "Agenda Lookup").click }
         
     | 
| 
      
 65 
     | 
    
         
            +
              action(:attribute_definition_lookup) { |b| b.link(title: "Attribute Definition Lookup").click }
         
     | 
| 
      
 66 
     | 
    
         
            +
              action(:term_lookup) { |b| b.link(title: "Term Lookup").click }
         
     | 
| 
      
 67 
     | 
    
         
            +
              action(:term_specification_lookup) { |b| b.link(title: "Term Specification Lookup").click }
         
     | 
| 
      
 68 
     | 
    
         
            +
              action(:category_lookup) { |b| b.link(title: "Category Lookup").click }
         
     | 
| 
      
 69 
     | 
    
         
            +
              action(:manage_population) { |b| b.link(title: "Manage Population (Lookup)").click }
         
     | 
| 
      
 70 
     | 
    
         
            +
              action(:population_maintenance_edoc) { |b| b.link(title: "Population Maintenance eDoc (New)").click }
         
     | 
| 
      
 71 
     | 
    
         
            +
              action(:schedule_of_classes) { |b| b.link(title: "Schedule of Classes").click }
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,72 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ManageCourseOfferings < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 4 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              expected_element :term
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              element(:term) { |b| b.frm.text_field(name: "termCode") }
         
     | 
| 
      
 9 
     | 
    
         
            +
              element(:course_offering_code) { |b| b.frm.radio(value: "courseOfferingCode") }
         
     | 
| 
      
 10 
     | 
    
         
            +
              element(:subject_code) { |b| b.frm.radio(value: "subjectCode") }
         
     | 
| 
      
 11 
     | 
    
         
            +
              element(:input_code) { |b| b.frm.text_field(name: "inputCode") }
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              element(:manage_offering_links_div) { |b| b.frm.div(id: "KS-CourseOfferingManagement-CourseOfferingLinks")}
         
     | 
| 
      
 14 
     | 
    
         
            +
              action(:manage_registration_groups) { |b| b.manage_offering_links_div.link(text: "Manage Registration Groups").click; b.loading.wait_while_present } # Persistent ID needed!
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              action(:show) { |b| b.frm.button(text: "Show").click; sleep 2; b.loading.wait_while_present } # Persistent ID needed!
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              value(:course_title) { |b| b.frm.div(id: "KS-CourseOfferingManagement-ActivityOfferingResultSection").h3(index: 0).text }
         
     | 
| 
      
 19 
     | 
    
         
            +
              action(:edit_offering) { |b| b.frm.link(id: "u327").click; b.loading.wait_while_present } # Persistent ID needed!
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              element(:format) { |b| b.frm.select(name: "formatIdForNewAO") }
         
     | 
| 
      
 22 
     | 
    
         
            +
              element(:activity_type) { |b| b.frm.select(name: "activityIdForNewAO") }
         
     | 
| 
      
 23 
     | 
    
         
            +
              element(:quantity) { |b| b.frm.text_field(name: "noOfActivityOfferings") }
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
              action(:add) { |b| b.frm.button(text: "Add").click; b.loading.wait_while_present } # Persistent ID needed!
         
     | 
| 
      
 26 
     | 
    
         
            +
              
         
     | 
| 
      
 27 
     | 
    
         
            +
              action(:select_all) { |b| b.frm.link(id: "KS-CourseOfferingManagement-SelectAll").click; b.loading.wait_while_present }
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              AO_CODE = 1
         
     | 
| 
      
 30 
     | 
    
         
            +
              AO_STATUS = 2
         
     | 
| 
      
 31 
     | 
    
         
            +
              AO_TYPE = 3
         
     | 
| 
      
 32 
     | 
    
         
            +
              AO_FORMAT = 4
         
     | 
| 
      
 33 
     | 
    
         
            +
              AO_INSTRUCTOR = 5
         
     | 
| 
      
 34 
     | 
    
         
            +
              AO_MAX_ENR = 6
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              element(:activity_offering_results_table) { |b| b.frm.table(class: "uif-tableCollectionLayout dataTable") } # Persistent ID needed!
         
     | 
| 
      
 37 
     | 
    
         
            +
              element(:selected_offering_actions) { |b| b.frm.select(name: "selectedOfferingAction") }
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              action(:go) { |b| b.frm.button(text: "Go").click; b.loading.wait_while_present }
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def view_activity_offering(code)
         
     | 
| 
      
 42 
     | 
    
         
            +
                activity_offering_results_table.link(text: code).click
         
     | 
| 
      
 43 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              def target_row(code)
         
     | 
| 
      
 47 
     | 
    
         
            +
                activity_offering_results_table.row(text: /\b#{Regexp.escape(code)}\b/)
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              def copy(code)
         
     | 
| 
      
 51 
     | 
    
         
            +
                target_row(code).link(text: "Copy").click
         
     | 
| 
      
 52 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              def edit(code)
         
     | 
| 
      
 56 
     | 
    
         
            +
                target_row(code).link(text: "Edit").click
         
     | 
| 
      
 57 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              def delete(code)
         
     | 
| 
      
 61 
     | 
    
         
            +
                target_row(code).link(text: "Delete").click
         
     | 
| 
      
 62 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              def codes_list
         
     | 
| 
      
 66 
     | 
    
         
            +
                codes = []
         
     | 
| 
      
 67 
     | 
    
         
            +
                activity_offering_results_table.rows.each { |row| codes << row[AO_CODE].text }
         
     | 
| 
      
 68 
     | 
    
         
            +
                codes.delete_if { |code| code == "CODE" }
         
     | 
| 
      
 69 
     | 
    
         
            +
                codes
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ManageProcess < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 4 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 5 
     | 
    
         
            +
              green_search_buttons
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              expected_element :process_name
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              element(:process_name) { |b| b.frm.text_field(name: "name") }
         
     | 
| 
      
 10 
     | 
    
         
            +
              element(:process_category) { |b| b.frm.select(name: "typeKey") }
         
     | 
| 
      
 11 
     | 
    
         
            +
              element(:hold_description) { |b| b.frm.text_area(name: "descr") }
         
     | 
| 
      
 12 
     | 
    
         
            +
              element(:owning_organization) { |b| b.frm.text_field(name: "ownerOrgId") }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              action(:lookup_organization) { |b| b.frm.button(title: "Search Field").click; b.loading.wait_while_present }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              element(:active) { |b| b.frm.radio(value: "active") }
         
     | 
| 
      
 17 
     | 
    
         
            +
              element(:disabled) { |b| b.frm.radio(value: "disabled") }
         
     | 
| 
      
 18 
     | 
    
         
            +
              element(:inactive) { |b| b.frm.radio(value: "inactive") }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,89 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ManageRegistrationGroups < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 4 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              expected_element :subject_code
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              element(:subject_code) { |b| b.frm.div(id: "manageRegistrationGroupsPage").span() } # Persistent ID needed!
         
     | 
| 
      
 9 
     | 
    
         
            +
              element(:format_select) { |b| b.frm.div(data_label: "Select Format").select() }
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              element(:unassigned_ao_table) { |b| b.frm.div(id: "KS-ManageRegistrationGroupsPage-UnassignedActivityOfferingsPerFormatSection").table() }
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def target_ao_row(ao_code)
         
     | 
| 
      
 14 
     | 
    
         
            +
                ao_table.row(text: /\b#{ao_code}\b/)
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def select_ao_row(ao_code)
         
     | 
| 
      
 18 
     | 
    
         
            +
                target_ao_row(ao_code).cells[0].checkbox().set
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              element(:ao_cluster_select) { |b| b.frm.div(id: "KS-ManageRegistrationGroupPage-ClusterForFormat").select() }
         
     | 
| 
      
 22 
     | 
    
         
            +
              action(:ao_cluster_assign_button) { |b| b.frm.div(id: "KS-ManageRegistrationGroupPage-ClusterForFormat").button().click b.loading.wait_while_present}
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              action(:create_new_cluster){ |b|b.frm.button(id: /create_new_cluster_button/).click; b.loading.wait_while_present}
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              action(:add_button) { |b| b.frm.div(id: "createNewClusterSection").button(text: "Create Cluster").click; b.loading.wait_while_present }
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              action(:generate_reg_groups_button) { |b| b.frm.button(id: "generate_unconstrained_rgs_button").click; b.loading.wait_while_present }
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              element(:cluster_list_div)  { |b| b.frm.div(id: "KS-ManageRegistrationGroupPage-HasClusterCondition") }
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              #create cluster dialog
         
     | 
| 
      
 33 
     | 
    
         
            +
              element(:createNewClusterDialog_div)  { |b| b.frm.div(id: "createNewClusterDialog") }
         
     | 
| 
      
 34 
     | 
    
         
            +
              element(:private_name) { |b| b.createNewClusterDialog_div.div(data_label: "Private Name").text_field() }
         
     | 
| 
      
 35 
     | 
    
         
            +
              element(:published_name) { |b| b.createNewClusterDialog_div.div(data_label: "Published Name").text_field() }
         
     | 
| 
      
 36 
     | 
    
         
            +
              action(:create_cluster){ |b|b.createNewClusterDialog_div.checkbox(index: 0).click; b.loading.wait_while_present}
         
     | 
| 
      
 37 
     | 
    
         
            +
              action(:cancel_create_cluster){ |b|b.createNewClusterDialog_div.checkbox(index: 1).click; b.loading.wait_while_present}
         
     | 
| 
      
 38 
     | 
    
         
            +
              #end create cluster dialog
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              def cluster_list_item_div_id(private_name)
         
     | 
| 
      
 41 
     | 
    
         
            +
                img_id = cluster_list_div.span(text: /#{Regexp.escape("(#{private_name})")}/).image().id
         
     | 
| 
      
 42 
     | 
    
         
            +
                img_id[0..-5]    #eg changes  u532_line0_exp to u532_line0
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              def cluster_list_row_name_text(private_name)
         
     | 
| 
      
 46 
     | 
    
         
            +
               div_id = cluster_list_item_div_id(private_name)
         
     | 
| 
      
 47 
     | 
    
         
            +
               cluster_list_div.div(id: "#{div_id}").span().text()
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              def cluster_list_row_generate_reg_groups(private_name)
         
     | 
| 
      
 51 
     | 
    
         
            +
                div_id = cluster_list_item_div_id(private_name)
         
     | 
| 
      
 52 
     | 
    
         
            +
                cluster_list_div.div(id: "#{div_id}").link(text: "Generate Registration Groups").click
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              def cluster_list_row_rename_cluster(private_name)
         
     | 
| 
      
 56 
     | 
    
         
            +
                div_id = cluster_list_item_div_id(private_name)
         
     | 
| 
      
 57 
     | 
    
         
            +
                cluster_list_div.div(id: "#{div_id}").link(text: "Rename Cluster").click
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              def cluster_list_row_remove_cluster(private_name)
         
     | 
| 
      
 61 
     | 
    
         
            +
                div_id = cluster_list_item_div_id(private_name)
         
     | 
| 
      
 62 
     | 
    
         
            +
                cluster_list_div.div(id: "#{div_id}").link(text: "Remove Cluster").click
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              #test script shell
         
     | 
| 
      
 67 
     | 
    
         
            +
              #@course_offering = make CourseOffering
         
     | 
| 
      
 68 
     | 
    
         
            +
              #@course_offering.manage
         
     | 
| 
      
 69 
     | 
    
         
            +
              #on ManageCourseOfferings do |page|
         
     | 
| 
      
 70 
     | 
    
         
            +
              #  page.manage_registration_groups
         
     | 
| 
      
 71 
     | 
    
         
            +
              #end
         
     | 
| 
      
 72 
     | 
    
         
            +
              #on ManageRegistrationGroups do |page|
         
     | 
| 
      
 73 
     | 
    
         
            +
              #  puts page.subject_code.text()
         
     | 
| 
      
 74 
     | 
    
         
            +
              #  #page.private_name.set "test1pri"
         
     | 
| 
      
 75 
     | 
    
         
            +
              #  #page.published_name.set "test1pub"
         
     | 
| 
      
 76 
     | 
    
         
            +
              #  #
         
     | 
| 
      
 77 
     | 
    
         
            +
              #  #puts page.ao_table.rows.count
         
     | 
| 
      
 78 
     | 
    
         
            +
              #  puts page.cluster_list_row_name_text("test1pri")
         
     | 
| 
      
 79 
     | 
    
         
            +
              #  # page.ao_cluster_select.select("test1")
         
     | 
| 
      
 80 
     | 
    
         
            +
              #  #page.cluster_list_row_generate_reg_groups("test1")
         
     | 
| 
      
 81 
     | 
    
         
            +
              #  puts page.target_ao_row("A").cells[1].text
         
     | 
| 
      
 82 
     | 
    
         
            +
              #  puts page.target_ao_row("A").cells[2].text
         
     | 
| 
      
 83 
     | 
    
         
            +
              #  page.select_ao_row("A")
         
     | 
| 
      
 84 
     | 
    
         
            +
              #  page.ao_cluster_select.select("test1pub")
         
     | 
| 
      
 85 
     | 
    
         
            +
              #  page.ao_cluster_assign_button
         
     | 
| 
      
 86 
     | 
    
         
            +
              #end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ManageRegistrationWindows < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 4 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 5 
     | 
    
         
            +
              validation_elements
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              element(:term_type) { |b| b.frm.select(name: "termType") }
         
     | 
| 
      
 8 
     | 
    
         
            +
              element(:year) { |b| b.frm.text_field(name: "termYear") }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              action(:search) { |b| b.frm.button(text: "Search").click; b.loading.wait_while_present } # Persistent ID needed!
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class OrganizationLookup < OrganizationBase
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              expected_element :short_name
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 6 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 7 
     | 
    
         
            +
              green_search_buttons
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              organization_elements
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            class OrgLookupPopUp < OrganizationBase
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              expected_element :short_name
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def frm
         
     | 
| 
      
 18 
     | 
    
         
            +
                self.frame(class: "fancybox-iframe") # Persistent ID needed!
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              element(:results_table) { |b| b.frm.div(id: "uLookupResults").table(index: 0) }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def return_value(short_name)
         
     | 
| 
      
 24 
     | 
    
         
            +
                target_org_row(short_name).wait_until_present
         
     | 
| 
      
 25 
     | 
    
         
            +
                target_org_row(short_name).link(text: "return value").wait_until_present
         
     | 
| 
      
 26 
     | 
    
         
            +
                target_org_row(short_name).link(text: "return value").click
         
     | 
| 
      
 27 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              def target_org_row(short_name)
         
     | 
| 
      
 31 
     | 
    
         
            +
                results_table.row(text: /\b#{Regexp.escape(short_name.to_s)}\b/)
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 35 
     | 
    
         
            +
              green_search_buttons
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              organization_elements
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,68 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class PerformRollover < BasePage
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              wrapper_elements
         
     | 
| 
      
 4 
     | 
    
         
            +
              frame_element
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              expected_element :target_term
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              element(:target_term) { |b| b.frm.text_field(name: "targetTermCode") }
         
     | 
| 
      
 9 
     | 
    
         
            +
              element(:source_term) { |b| b.frm.text_field(name: "sourceTermCode") }
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              element(:target_term_input_div) { |b| b.frm.div(data_label: "Target Term")}
         
     | 
| 
      
 12 
     | 
    
         
            +
              action(:target_term_go) { |b| b.target_term_input_div.button(text: "Go").click; b.loading.wait_while_present }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              value(:target_term_code) { |b| b.frm.div(data_label: "Term Code").span(index: 2).text }
         
     | 
| 
      
 15 
     | 
    
         
            +
              value(:target_term_start_date) { |b| b.frm.div(data_label: "Term Start Date").span(index: 2).text }
         
     | 
| 
      
 16 
     | 
    
         
            +
              value(:target_term_end_date) { |b| b.frm.div(data_label: "Term End Date").span(index: 2).text }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              element(:target_term_validation_msg_list)  { |b| b.target_term_input_div.div(class: "uif-validationMessages uif-groupValidationMessages").ul }
         
     | 
| 
      
 19 
     | 
    
         
            +
              value(:target_term_first_validation_msg) { |b| b.target_term_validation_msg_list.link.text }
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              element(:source_term_input_div) { |b| b.frm.div(data_label: "Source Term")}
         
     | 
| 
      
 22 
     | 
    
         
            +
              element(:source_term_go_element) { |b| b.source_term_input_div.button(text: "Go") }
         
     | 
| 
      
 23 
     | 
    
         
            +
              action(:source_term_go) { |b| b.source_term_go_element.click; b.loading.wait_while_present }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              element(:source_term_validation_msg_list)  { |b| b.source_term_input_div.div(class: "uif-validationMessages uif-groupValidationMessages").ul }
         
     | 
| 
      
 26 
     | 
    
         
            +
              value(:source_term_first_validation_msg) { |b| b.source_term_validation_msg_list.link.text }
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              value(:source_term_code) { |b| b.frm.div(data_label: "Term Code", index: 1).span(index: 2).text }
         
     | 
| 
      
 29 
     | 
    
         
            +
              value(:source_term_start_date) { |b| b.frm.div(data_label: "Term Start Date", index: 1).span(index: 2).text }
         
     | 
| 
      
 30 
     | 
    
         
            +
              value(:source_term_end_date) { |b| b.frm.div(data_label: "Term End Date", index: 1).span(index: 2).text }
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              element(:rollover_button) { |b| b.frm.button(text: /Rollover/) }
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              action(:rollover_course_offerings) { |b| b.rollover_button.click; b.loading.wait_while_present }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              value(:status) { |b| b.frm.div(data_label: "Status").span(index: 2).text } #status shows after rollover initiated
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            # looks for next available target term in the one specified is used - returns actual target term code used
         
     | 
| 
      
 40 
     | 
    
         
            +
              def select_terms(m_target_term,m_source_term)
         
     | 
| 
      
 41 
     | 
    
         
            +
                actual_target_term = m_target_term
         
     | 
| 
      
 42 
     | 
    
         
            +
                select_target_term(actual_target_term)
         
     | 
| 
      
 43 
     | 
    
         
            +
                source_term.set m_source_term
         
     | 
| 
      
 44 
     | 
    
         
            +
                retry_ctr = 0
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                while source_term_go_element.disabled? and retry_ctr < 30
         
     | 
| 
      
 47 
     | 
    
         
            +
                  actual_target_term = increment_term_code_year(target_term.value)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  select_target_term(actual_target_term)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  retry_ctr = retry_ctr + 1
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                source_term_go
         
     | 
| 
      
 53 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 54 
     | 
    
         
            +
                actual_target_term
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              private
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
              def select_target_term(term)
         
     | 
| 
      
 60 
     | 
    
         
            +
                target_term.set term
         
     | 
| 
      
 61 
     | 
    
         
            +
                target_term_go
         
     | 
| 
      
 62 
     | 
    
         
            +
                loading.wait_while_present
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              def increment_term_code_year(term_code)
         
     | 
| 
      
 66 
     | 
    
         
            +
                "#{term_code[0..1]}#{(term_code[2..3].to_i + 1)}#{term_code[4]}"
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
            end
         
     |