sambal-kuali 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|