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
|