kuality-coeus 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (161) hide show
  1. data/Gemfile +1 -1
  2. data/Gemfile.lock +16 -18
  3. data/chromedriver.log +46 -0
  4. data/features/grants_gov/grants_gov_forms/code_and_form_mapping.feature +26 -0
  5. data/features/grants_gov/grants_gov_forms/forms_validation.feature +1 -0
  6. data/features/grants_gov/grants_gov_forms/s2s_questionnaire.feature +19 -0
  7. data/features/grants_gov/s2s_submission.feature +30 -0
  8. data/features/grants_gov/s2s_validation.feature +36 -0
  9. data/features/proposal_development/create_budget_versions.feature +31 -0
  10. data/features/proposal_development/create_proposal.feature +25 -0
  11. data/features/proposal_development/key_personnel_validations.feature +41 -0
  12. data/features/proposal_development/proposal_actions_validations.feature +46 -0
  13. data/features/proposal_development/proposal_permissions.feature +73 -0
  14. data/features/proposal_development/proposal_workflow.feature +105 -0
  15. data/features/proposal_development/special_review_validations.feature +12 -0
  16. data/features/step_definitions/action_list.rb +12 -0
  17. data/features/step_definitions/awards/create_award.rb +3 -0
  18. data/features/step_definitions/grants_gov/forms.rb +34 -0
  19. data/features/step_definitions/grants_gov/s2s_submission.rb +51 -0
  20. data/features/step_definitions/institutional_proposals/create_institutional_proposal.rb +3 -0
  21. data/features/step_definitions/proposal_development/budget_versions.rb +102 -0
  22. data/features/step_definitions/proposal_development/create_proposal.rb +157 -0
  23. data/features/step_definitions/proposal_development/edit_proposal.rb +79 -0
  24. data/features/step_definitions/proposal_development/institute_rates.rb +21 -0
  25. data/features/step_definitions/proposal_development/key_personnel_validations.rb +74 -0
  26. data/features/step_definitions/proposal_development/proposal_actions_validations.rb +73 -0
  27. data/features/step_definitions/proposal_development/proposal_permissions.rb +141 -0
  28. data/features/step_definitions/proposal_development/proposal_workflow.rb +81 -0
  29. data/features/step_definitions/proposal_development/s2s_validation.rb +30 -0
  30. data/features/step_definitions/proposal_development/special_review_validations.rb +7 -0
  31. data/features/step_definitions/test.rb +3 -0
  32. data/features/step_definitions/users.rb +65 -0
  33. data/features/support/env.rb +35 -0
  34. data/features/test.feature +13 -0
  35. data/kuality-coeus.gemspec +1 -1
  36. data/lib/chromedriver.log +4483 -0
  37. data/lib/kuality-coeus.rb +5 -2
  38. data/lib/kuality-coeus/core_extensions.rb +10 -0
  39. data/lib/kuality-coeus/data_objects/award/award.rb +126 -0
  40. data/lib/kuality-coeus/data_objects/award/award_transaction.rb +57 -0
  41. data/lib/kuality-coeus/data_objects/budget/budget_periods.rb +114 -0
  42. data/lib/kuality-coeus/data_objects/budget/budget_versions.rb +221 -0
  43. data/lib/kuality-coeus/data_objects/budget/subaward_budget.rb +65 -0
  44. data/lib/kuality-coeus/data_objects/committee_document/committee_document.rb +65 -0
  45. data/lib/kuality-coeus/data_objects/committee_document/committee_members.rb +30 -0
  46. data/lib/kuality-coeus/data_objects/committee_document/committee_schedule.rb +27 -0
  47. data/lib/kuality-coeus/data_objects/committee_document/member_roles.rb +28 -0
  48. data/lib/kuality-coeus/data_objects/conflict_of_interest/financial_entity.rb +48 -0
  49. data/lib/kuality-coeus/data_objects/grants_gov/phs_fellowship_questionnaire.rb +90 -0
  50. data/lib/kuality-coeus/data_objects/grants_gov/phs_training_budget_questionnaire.rb +5 -0
  51. data/lib/kuality-coeus/data_objects/institutional_proposal/institutional_proposal.rb +20 -0
  52. data/lib/kuality-coeus/data_objects/institutional_proposal/intellectual_property_review.rb +62 -0
  53. data/lib/kuality-coeus/data_objects/navigation.rb +64 -0
  54. data/lib/kuality-coeus/data_objects/proposal_development/compliance_questions.rb +47 -0
  55. data/lib/kuality-coeus/data_objects/proposal_development/custom_data.rb +41 -0
  56. data/lib/kuality-coeus/data_objects/proposal_development/degrees.rb +40 -0
  57. data/lib/kuality-coeus/data_objects/proposal_development/key_personnel.rb +299 -0
  58. data/lib/kuality-coeus/data_objects/proposal_development/kuali_university_questions.rb +58 -0
  59. data/lib/kuality-coeus/data_objects/proposal_development/permissions.rb +107 -0
  60. data/lib/kuality-coeus/data_objects/proposal_development/personnel_attachments.rb +46 -0
  61. data/lib/kuality-coeus/data_objects/proposal_development/proposal_attachments.rb +41 -0
  62. data/lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb +301 -0
  63. data/lib/kuality-coeus/data_objects/proposal_development/proposal_questions.rb +52 -0
  64. data/lib/kuality-coeus/data_objects/proposal_development/s2s_questionnaire.rb +129 -0
  65. data/lib/kuality-coeus/data_objects/proposal_development/special_review.rb +79 -0
  66. data/lib/kuality-coeus/data_objects/rates/institute_rate.rb +209 -0
  67. data/lib/kuality-coeus/data_objects/user.rb +303 -33
  68. data/lib/kuality-coeus/gem_extensions.rb +26 -0
  69. data/lib/kuality-coeus/page_objects/000_base_page.rb +196 -14
  70. data/lib/kuality-coeus/page_objects/action_list.rb +32 -0
  71. data/lib/kuality-coeus/page_objects/award/award.rb +25 -0
  72. data/lib/kuality-coeus/page_objects/award/award_actions.rb +7 -0
  73. data/lib/kuality-coeus/page_objects/award/award_budget_versions.rb +9 -0
  74. data/lib/kuality-coeus/page_objects/award/commitments.rb +27 -0
  75. data/lib/kuality-coeus/page_objects/award/contacts.rb +19 -0
  76. data/lib/kuality-coeus/page_objects/award/custom_data.rb +6 -0
  77. data/lib/kuality-coeus/page_objects/award/payment_reports_terms.rb +26 -0
  78. data/lib/kuality-coeus/page_objects/award/special_review.rb +7 -0
  79. data/lib/kuality-coeus/page_objects/award/time_and_money.rb +36 -0
  80. data/lib/kuality-coeus/page_objects/budget/budget_actions.rb +31 -0
  81. data/lib/kuality-coeus/page_objects/budget/budget_versions.rb +13 -0
  82. data/lib/kuality-coeus/page_objects/budget/modular_budget.rb +16 -0
  83. data/lib/kuality-coeus/page_objects/budget/non-personnel.rb +11 -0
  84. data/lib/kuality-coeus/page_objects/budget/parameters.rb +65 -0
  85. data/lib/kuality-coeus/page_objects/budget/personnel.rb +56 -0
  86. data/lib/kuality-coeus/page_objects/budget/rates.rb +7 -0
  87. data/lib/kuality-coeus/page_objects/budget/summary.rb +5 -0
  88. data/lib/kuality-coeus/page_objects/budget_document.rb +19 -0
  89. data/lib/kuality-coeus/page_objects/central_admin.rb +4 -2
  90. data/lib/kuality-coeus/page_objects/committee/committee.rb +10 -10
  91. data/lib/kuality-coeus/page_objects/committee/members.rb +4 -4
  92. data/lib/kuality-coeus/page_objects/committee_document.rb +1 -6
  93. data/lib/kuality-coeus/page_objects/confirmation.rb +16 -0
  94. data/lib/kuality-coeus/page_objects/disclosure/disclosure.rb +56 -0
  95. data/lib/kuality-coeus/page_objects/disclosure/disclosure_actions.rb +9 -0
  96. data/lib/kuality-coeus/page_objects/document_header.rb +5 -0
  97. data/lib/kuality-coeus/page_objects/financial_entities.rb +1 -4
  98. data/lib/kuality-coeus/page_objects/financial_entities/my_financial_entities.rb +6 -0
  99. data/lib/kuality-coeus/page_objects/financial_entities/new_financial_entity.rb +11 -0
  100. data/lib/kuality-coeus/page_objects/financial_entities/reporter.rb +5 -3
  101. data/lib/kuality-coeus/page_objects/identity/person.rb +57 -0
  102. data/lib/kuality-coeus/page_objects/institute_rates_maintenance.rb +18 -0
  103. data/lib/kuality-coeus/page_objects/institutional_proposal.rb +18 -0
  104. data/lib/kuality-coeus/page_objects/institutional_proposal/contacts.rb +32 -0
  105. data/lib/kuality-coeus/page_objects/institutional_proposal/custom_data.rb +6 -0
  106. data/lib/kuality-coeus/page_objects/institutional_proposal/distribution.rb +20 -0
  107. data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal.rb +27 -0
  108. data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal_actions.rb +7 -0
  109. data/lib/kuality-coeus/page_objects/institutional_proposal/intellectual_property_review.rb +20 -0
  110. data/lib/kuality-coeus/page_objects/institutional_proposal/special_review.rb +6 -0
  111. data/lib/kuality-coeus/page_objects/kc_awards.rb +48 -0
  112. data/lib/kuality-coeus/page_objects/kc_protocol.rb +15 -0
  113. data/lib/kuality-coeus/page_objects/login.rb +4 -5
  114. data/lib/kuality-coeus/page_objects/lookup_pages/000_lookups.rb +10 -0
  115. data/lib/kuality-coeus/page_objects/lookup_pages/action_list_filter.rb +6 -0
  116. data/lib/kuality-coeus/page_objects/lookup_pages/address_book_lookup.rb +4 -0
  117. data/lib/kuality-coeus/page_objects/lookup_pages/development_proposal_lookup.rb +3 -0
  118. data/lib/kuality-coeus/page_objects/lookup_pages/document_search.rb +10 -0
  119. data/lib/kuality-coeus/page_objects/lookup_pages/group_lookup.rb +3 -0
  120. data/lib/kuality-coeus/page_objects/lookup_pages/institute_rates_lookup.rb +12 -0
  121. data/lib/kuality-coeus/page_objects/lookup_pages/opportunity_lookup.rb +6 -0
  122. data/lib/kuality-coeus/page_objects/lookup_pages/organization_lookup.rb +5 -0
  123. data/lib/kuality-coeus/page_objects/lookup_pages/person_extended_attributes.rb +5 -0
  124. data/lib/kuality-coeus/page_objects/lookup_pages/person_lookup.rb +10 -0
  125. data/lib/kuality-coeus/page_objects/lookup_pages/role_lookup.rb +6 -0
  126. data/lib/kuality-coeus/page_objects/lookup_pages/sponsor_lookup.rb +9 -0
  127. data/lib/kuality-coeus/page_objects/lookup_pages/unit_admin_lookup.rb +3 -0
  128. data/lib/kuality-coeus/page_objects/lookup_pages/unit_lookup.rb +3 -0
  129. data/lib/kuality-coeus/page_objects/maintenance.rb +7 -0
  130. data/lib/kuality-coeus/page_objects/notification_editor.rb +6 -0
  131. data/lib/kuality-coeus/page_objects/proposal_development.rb +7 -2
  132. data/lib/kuality-coeus/page_objects/proposal_development/abstracts_and_attachments.rb +54 -0
  133. data/lib/kuality-coeus/page_objects/proposal_development/key_personnel.rb +126 -0
  134. data/lib/kuality-coeus/page_objects/proposal_development/pd_custom_data.rb +6 -0
  135. data/lib/kuality-coeus/page_objects/proposal_development/permissions.rb +44 -0
  136. data/lib/kuality-coeus/page_objects/proposal_development/phs_fellowship_questionnaire.rb +44 -0
  137. data/lib/kuality-coeus/page_objects/proposal_development/phs_training_budget_questionnaire.rb +50 -0
  138. data/lib/kuality-coeus/page_objects/proposal_development/proposal.rb +47 -8
  139. data/lib/kuality-coeus/page_objects/proposal_development/proposal_actions.rb +62 -0
  140. data/lib/kuality-coeus/page_objects/proposal_development/proposal_summary.rb +9 -0
  141. data/lib/kuality-coeus/page_objects/proposal_development/questions.rb +111 -0
  142. data/lib/kuality-coeus/page_objects/proposal_development/s2s.rb +35 -0
  143. data/lib/kuality-coeus/page_objects/proposal_development/special_review.rb +6 -0
  144. data/lib/kuality-coeus/page_objects/protocol/custom_data.rb +6 -0
  145. data/lib/kuality-coeus/page_objects/protocol/permissions.rb +5 -0
  146. data/lib/kuality-coeus/page_objects/protocol/personnel.rb +5 -0
  147. data/lib/kuality-coeus/page_objects/protocol/protocol.rb +11 -0
  148. data/lib/kuality-coeus/page_objects/protocol/questionnaire.rb +5 -0
  149. data/lib/kuality-coeus/page_objects/protocol/special_review.rb +6 -0
  150. data/lib/kuality-coeus/page_objects/rejection_confirmation.rb +5 -0
  151. data/lib/kuality-coeus/page_objects/researcher.rb +4 -2
  152. data/lib/kuality-coeus/page_objects/shared/unit_administrator.rb +13 -0
  153. data/lib/kuality-coeus/page_objects/system/person_extended_attributes.rb +18 -0
  154. data/lib/kuality-coeus/page_objects/system_admin.rb +7 -0
  155. data/lib/kuality-coeus/page_objects/unit.rb +2 -4
  156. data/lib/kuality-coeus/utilities.rb +39 -0
  157. data/libpeerconnection.log +0 -0
  158. metadata +140 -5
  159. data/lib/kuality-coeus/data_objects/committee_document.rb +0 -65
  160. data/lib/kuality-coeus/data_objects/proposal_development.rb +0 -53
  161. data/lib/kuality-coeus/navigation.rb +0 -3
@@ -1,7 +1,9 @@
1
1
  class CentralAdmin < BasePage
2
2
 
3
- page_url "#{$base_url}selectedTab=portalCentralAdminBody"
3
+ page_url "#{$base_url}portal.do?selectedTab=portalCentralAdminBody"
4
4
 
5
- action(:create_committee) { |b| b.frm.link(title: "Create Committeee").click }
5
+ links 'Create Committee'
6
+
7
+ action(:create_award) { |b| b.frm.link(title: 'Award').click; b.loading }
6
8
 
7
9
  end
@@ -2,20 +2,20 @@ class Committee < CommitteeDocument
2
2
 
3
3
  document_header_elements
4
4
  committee_header_elements
5
+ description_field
5
6
 
6
- element(:description) { |b| b.frm.text_field(id: "document.documentHeader.documentDescription") }
7
- element(:committee_id) { |b| b.frm.text_field(id: "document.committeeList[0].committeeId") }
8
- element(:committee_name) { |b| b.frm.text_field(id: "document.committeeList[0].committeeName") }
9
- element(:home_unit) { |b| b.frm.text_field(id: "document.committeeList[0].homeUnitNumber") }
10
- element(:min_members_for_quorum) { |b| b.frm.text_field(id: "document.committeeList[0].minimumMembersRequired") }
11
- element(:maximum_protocols) { |b| b.frm.text_field(id: "document.committeeList[0].maxProtocols") }
12
- element(:adv_submission_days) { |b| b.frm.text_field(id: "document.committeeList[0].advancedSubmissionDaysRequired") }
13
- element(:review_type) { |b| b.frm.select(id: "document.committeeList[0].reviewTypeCode") }
14
- value(:last_updated) { |p| p.com_table.row(text: /Last Updated:/).cell(index: -1).text }
7
+ element(:committee_id_field) { |b| b.frm.text_field(id: 'document.committeeList[0].committeeId') }
8
+ element(:committee_name_field) { |b| b.frm.text_field(id: 'document.committeeList[0].committeeName') }
9
+ element(:home_unit) { |b| b.frm.text_field(id: 'document.committeeList[0].homeUnitNumber') }
10
+ element(:min_members_for_quorum) { |b| b.frm.text_field(id: 'document.committeeList[0].minimumMembersRequired') }
11
+ element(:maximum_protocols) { |b| b.frm.text_field(id: 'document.committeeList[0].maxProtocols') }
12
+ element(:adv_submission_days) { |b| b.frm.text_field(id: 'document.committeeList[0].advancedSubmissionDaysRequired') }
13
+ element(:review_type) { |b| b.frm.select(id: 'document.committeeList[0].reviewTypeCode') }
14
+ #value(:last_updated) { |p| p.com_table.row(text: /Last Updated:/).cell(index: -1).text }
15
15
  value(:updated_user) { |p| p.com_table.row(text: /Updated User:/).cell(index: -1).text }
16
16
 
17
17
  private
18
18
 
19
- element(:com_table) { |b| b.frm.div(id: "tab-Committee-div").table }
19
+ element(:com_table) { |b| b.frm.div(id: 'tab-Committee-div').table }
20
20
 
21
21
  end
@@ -1,8 +1,8 @@
1
1
  class Members < CommitteeDocument
2
2
 
3
- action(:employee_search) { |b| b.frm.image(name: "methodToCall.performLookup.(!!org.kuali.kra.bo.KcPerson!!).(((personId:committeeHelper.newCommitteeMembership.personId,fullName:committeeHelper.newCommitteeMembership.personName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor").click }
4
- action(:non_employee_search) { |b| b.frm.image(name: "methodToCall.performLookup.(!!org.kuali.kra.bo.NonOrganizationalRolodex!!).(((rolodexId:committeeHelper.newCommitteeMembership.rolodexId,fullName:committeeHelper.newCommitteeMembership.personName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor").click }
5
- action(:clear) { |b| b.frm.image(name: "methodToCall.clearCommitteeMembership").click }
6
- action(:add_member) { |b| b.frm.image(name: "methodToCall.addCommitteeMembership").click }
3
+ action(:employee_search) { |b| b.frm.image(name: 'methodToCall.performLookup.(!!org.kuali.kra.bo.KcPerson!!).(((personId:committeeHelper.newCommitteeMembership.personId,fullName:committeeHelper.newCommitteeMembership.personName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor').click }
4
+ action(:non_employee_search) { |b| b.frm.image(name: 'methodToCall.performLookup.(!!org.kuali.kra.bo.NonOrganizationalRolodex!!).(((rolodexId:committeeHelper.newCommitteeMembership.rolodexId,fullName:committeeHelper.newCommitteeMembership.personName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor').click }
5
+ action(:clear) { |b| b.frm.image(name: 'methodToCall.clearCommitteeMembership').click }
6
+ action(:add_member) { |b| b.frm.image(name: 'methodToCall.addCommitteeMembership').click }
7
7
 
8
8
  end
@@ -1,14 +1,9 @@
1
1
  class CommitteeDocument < BasePage
2
2
 
3
- frame_element
4
- global_buttons
5
-
6
3
  class << self
7
4
 
8
5
  def committee_header_elements
9
- element(:committee) { |b| b.frm.button(value: "Committee") }
10
- element(:members) { |b| b.frm.button(value: "Members") }
11
- element(:schedule) { |b| b.frm.button(value: "Schedule") }
6
+ buttons 'Committee', 'Members', 'Schedule'
12
7
  end
13
8
 
14
9
  end
@@ -0,0 +1,16 @@
1
+ class Confirmation < BasePage
2
+
3
+ global_buttons
4
+
5
+ element(:yes_button) { |b| b.frm.button(name: 'methodToCall.processAnswer.button0', class: 'confirm') }
6
+ element(:reason) { |b| b.frm.text_field(name: 'reason') }
7
+ alias_method :recall_reason, :reason
8
+ action(:yes) { |b| b.yes_button.click; b.loading }
9
+ action(:no) { |b| b.frm.button(class: 'confirm', name: 'methodToCall.processAnswer.button1').click; b.loading }
10
+ action(:return_to_document) { |b| b.frm.button(class: 'confirm', name: 'methodToCall.processAnswer.button2').click; b.loading }
11
+ alias_method :copy_all_periods, :yes
12
+ alias_method :copy_one_period_only, :no
13
+ alias_method :recall_to_action_list, :yes
14
+ alias_method :recall_and_cancel, :no
15
+
16
+ end
@@ -0,0 +1,56 @@
1
+ class Disclosure < BasePage
2
+
3
+ document_header_elements
4
+ error_messages
5
+ tab_buttons
6
+ description_field
7
+
8
+ action(:disclosure_actions) { |b| b.frm.button(value: 'Disclosure Actions').click }
9
+
10
+ element(:unit_number) { |b| b.frm.text_field(name: 'disclosureHelper.newDisclosurePersonUnit.unitNumber') }
11
+ element(:lead_unit) { |b| b.frm.checkbox(name: 'disclosureHelper.newDisclosurePersonUnit.leadUnitFlag') }
12
+ action(:add_unit) { |b| b.frm.button(name: 'methodToCall.addDisclosurePersonUnit.line').click; b.loading }
13
+
14
+ element(:acknowledgement) { |b| b.frm.checkbox(id: 'certCheckbox') }
15
+ action(:submit) { |b| b.frm.button(name: 'methodToCall.submitDisclosureCertification').click; b.loading }
16
+
17
+ element(:event_type) { |b| b.frm.select(name: 'disclosureHelper.newCoiDisclProject.disclosureEventType') }
18
+ element(:award_number) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.coiProjectId') }
19
+ alias_method :project_id, :award_number
20
+ alias_method :protocol_number, :award_number
21
+ alias_method :event_id, :award_number
22
+
23
+ element(:award_title) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.coiProjectTitle') }
24
+ alias_method :project_title, :award_title
25
+ alias_method :protocol_name, :award_title
26
+ alias_method :event_title, :award_title
27
+
28
+ element(:sponsor) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.longTextField1') }
29
+ alias_method :entity_name, :sponsor
30
+
31
+ element(:project_role) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.shortTextField1') }
32
+ alias_method :destination, :project_role
33
+
34
+ element(:travel_sponsor) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.longTextField2') }
35
+
36
+ element(:project_funding_amount) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.numberField1') }
37
+ alias_method :reimbursement, :project_funding_amount
38
+
39
+ element(:purpose_of_travel) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.longTextField3') }
40
+
41
+ element(:award_date) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.dateField1') }
42
+ alias_method :project_start_date, :award_date
43
+ alias_method :start_date, :project_start_date
44
+
45
+ element(:project_end_date) { |b| b.frm.text_field(name: 'disclosureHelper.newCoiDisclProject.dateField2') }
46
+ alias_method :end_date, :project_end_date
47
+
48
+ element(:project_type) { |b| b.frm.select(name: 'selectBox1-placeholder') }
49
+ alias_method :protocol_type, :project_type
50
+
51
+ action(:add_event) { |b| b.frm.button(name: 'methodToCall.addManualProject.anchorManualEventandFinancialEntities').click; b.loading }
52
+
53
+ action(:save) { |b| b.frm.button(class: 'globalbuttons', title: 'save').click; b.loading }
54
+ action(:close) { |b| b.frm.button(class: 'globalbuttons', title: 'close').click; b.loading }
55
+
56
+ end
@@ -0,0 +1,9 @@
1
+ class DisclosureActions < BasePage
2
+
3
+ document_header_elements
4
+
5
+ action(:disclosure) { |b| b.frm.button(value: 'Disclosure').click }
6
+
7
+ action(:turn_on_validation) { |b| b.frm.button(name: 'methodToCall.activate').click }
8
+
9
+ end
@@ -0,0 +1,5 @@
1
+ class DocumentHeader < BasePage
2
+
3
+ document_header_elements
4
+
5
+ end
@@ -1,14 +1,11 @@
1
1
  class FinancialEntities < BasePage
2
2
 
3
- frame_element
4
3
  global_buttons
5
4
 
6
5
  class << self
7
6
 
8
7
  def financial_entities_tabs
9
- action(:reporter) { |b| b.frm.button(value: "Reporter").click }
10
- action(:new_financial_entity) { |b| b.frm.button(value: "New Financial Entity").click }
11
- action(:my_financial_entities) { |b| b.frm.button(value: "My Financial Entities").click }
8
+ buttons 'Reporter', 'New Financial Entity', 'My Financial Entities'
12
9
  end
13
10
 
14
11
  end
@@ -2,4 +2,10 @@ class MyFinancialEntities < FinancialEntities
2
2
 
3
3
  financial_entities_tabs
4
4
 
5
+ action(:edit_attachment) { |name, b| b.fe_row(name).button(title: "Edit").click }
6
+
7
+ private
8
+
9
+ action(:fe_row) { |name, b| b.td(text: name).parent }
10
+
5
11
  end
@@ -2,4 +2,15 @@ class NewFinancialEntity < FinancialEntities
2
2
 
3
3
  financial_entities_tabs
4
4
 
5
+ element(:entity_name) { |b| b.frm.text_field(id: 'financialEntityHelper.newPersonFinancialEntity.entityName') }
6
+ element(:address_line_1) { |b| b.frm.text_field(id: 'financialEntityHelper.newPersonFinancialEntity.finEntityContactInfos[0].addressLine1') }
7
+ element(:city) { |b| b.frm.text_field(id: 'financialEntityHelper.newPersonFinancialEntity.finEntityContactInfos[0].city') }
8
+ element(:country_code) { |b| b.frm.select(id: 'financialEntityHelper.newPersonFinancialEntity.finEntityContactInfos[0].countryCode') }
9
+ element(:postal_code) { |b| b.frm.text_field(id: 'financialEntityHelper.newPersonFinancialEntity.finEntityContactInfos[0].postalCode') }
10
+ element(:type) { |b| b.frm.select(id: 'financialEntityHelper.newPersonFinancialEntity.entityTypeCode') }
11
+ element(:status_code) { |b| b.frm.select(id: 'financialEntityHelper.newPersonFinancialEntity.statusCode') }
12
+ element(:held) { |b| b.frm.select(id: 'financialEntityHelper.newPersonFinancialEntity.entityOwnershipType') }
13
+ element(:principal_activity) { |b| b.frm.text_field(name: 'financialEntityHelper.newPersonFinancialEntity.principalBusinessActivity') }
14
+ action(:sponsor_research) { |answer, b| b.frm.radio(name: 'financialEntityHelper.newPersonFinancialEntity.entitySponsorsResearch', value: answer) }
15
+
5
16
  end
@@ -1,11 +1,13 @@
1
1
  class Reporter < FinancialEntities
2
2
 
3
3
  financial_entities_tabs
4
+ tab_buttons
4
5
 
5
- element(:contact_info) { |b| b.frm.table(id: "response-table").table(class: "tab") }
6
+ element(:contact_info) { |b| b.frm.table(id: 'response-table').table(class: 'tab') }
6
7
  element(:full_name) { |p| p.contact_info[0][1].text }
7
8
 
8
- element(:unit_number) { |b| b.frm.text_field(id: "financialEntityHelper.newFinancialEntityReporterUnit.unitNumber") }
9
-
9
+ element(:unit_number) { |b| b.frm.text_field(id: 'financialEntityHelper.newFinancialEntityReporterUnit.unitNumber') }
10
+ element(:lead_unit) { |b| b.frm.checkbox(name: 'financialEntityHelper.newFinancialEntityReporterUnit.leadUnitFlag') }
11
+ action(:add_unit) { |b| b.frm.button(name: 'methodToCall.addFinancialEntityReporterUnit.line').click; b.loading }
10
12
 
11
13
  end
@@ -0,0 +1,57 @@
1
+ class Person < BasePage
2
+
3
+ document_header_elements
4
+ global_buttons
5
+ tab_buttons
6
+ description_field
7
+
8
+ element(:principal_name) { |b| b.frm.text_field(id: 'document.principalName') }
9
+ value(:principal_id) { |b| b.frm.div(id: 'tab-Overview-div').table[0][3].text }
10
+ element(:affiliation_type) { |b| b.frm.select(id: 'newAffln.affiliationTypeCode') }
11
+ element(:campus_code) { |b| b.frm.select(id: 'newAffln.campusCode') }
12
+ element(:affiliation_default) { |b| b.frm.checkbox(id: 'newAffln.dflt') }
13
+ element(:first_name) { |b| b.frm.text_field(id: 'newName.firstName') }
14
+ element(:last_name) { |b| b.frm.text_field(id: 'newName.lastName') }
15
+ element(:name_default) { |b| b.frm.checkbox(id: 'newName.dflt') }
16
+ action(:add_affiliation) { |b| b.frm.button(name: 'methodToCall.addAffln.anchor').click }
17
+ element(:employee_id) { |b| b.frm.text_field(id: 'document.affiliations[0].newEmpInfo.employeeId') }
18
+ element(:employee_status) { |b| b.frm.select(id: 'document.affiliations[0].newEmpInfo.employmentStatusCode') }
19
+ element(:employee_type) { |b| b.frm.select(id: 'document.affiliations[0].newEmpInfo.employmentTypeCode') }
20
+ element(:primary_employment) { |b| b.frm.checkbox(id: 'document.affiliations[0].newEmpInfo.primary') }
21
+ element(:base_salary) { |b| b.frm.text_field(id: 'document.affiliations[0].newEmpInfo.baseSalaryAmount') }
22
+ element(:primary_dept_code) { |b| b.frm.text_field(name: 'document.affiliations[0].newEmpInfo.primaryDepartmentCode') }
23
+ action(:add_employment_information) { |b| b.frm.button(name: 'methodToCall.addEmpInfo.line0.anchor').click; b.loading }
24
+ action(:add_name) { |b| b.frm.button(name: 'methodToCall.addName.anchor').click }
25
+ element(:address_type) { |b| b.frm.select(id: 'newAddress.addressTypeCode') }
26
+ element(:line_1) { |b| b.frm.text_field(id: 'newAddress.line1') }
27
+ element(:line_2) { |b| b.frm.text_field(id: 'newAddress.line2') }
28
+ element(:line_3) { |b| b.frm.text_field(id: 'newAddress.line3') }
29
+ element(:city) { |b| b.frm.text_field(id: 'newAddress.city') }
30
+ element(:state) { |b| b.frm.select(id: 'newAddress.stateProvinceCode') }
31
+ element(:zip) { |b| b.frm.text_field(id: 'newAddress.postalCode') }
32
+ element(:country) { |b| b.frm.select(id: 'newAddress.countryCode') }
33
+ element(:address_default) { |b| b.frm.checkbox(id: 'newAddress.dflt') }
34
+ action(:add_address) { |b| b.frm.button(name: 'methodToCall.addAddress.anchor').click; b.loading }
35
+ element(:phone_type) { |b| b.frm.select(id: 'newPhone.phoneTypeCode') }
36
+ element(:phone_number) { |b| b.frm.text_field(id: 'newPhone.phoneNumber') }
37
+ element(:phone_default) { |b| b.frm.checkbox(id: 'newPhone.dflt') }
38
+ action(:add_phone) { |b| b.frm.button(name: 'methodToCall.addPhone.anchor').click; b.loading }
39
+ element(:email) { |b| b.frm.text_field(name: 'newEmail.emailAddress') }
40
+ element(:email_type) { |b| b.frm.select(name: 'newEmail.emailTypeCode') }
41
+ element(:email_default) { |b| b.frm.checkbox(name: 'newEmail.dflt') }
42
+ action(:add_email) { |b| b.frm.button(name: 'methodToCall.addEmail.anchor').click; b.loading }
43
+ element(:role_id) { |b| b.frm.text_field(id: 'newRole.roleId') }
44
+ action(:add_role) { |b| b.frm.button(name: 'methodToCall.addRole.anchor').click; b.loading }
45
+ element(:group_id) { |b| b.frm.text_field(id: 'newGroup.groupId') }
46
+ action(:add_group) { |b| b.frm.button(name: 'methodToCall.addGroup.anchor').click; b.loading }
47
+
48
+ action(:unit_number) { |role, b| b.frm.div(id: 'tab-Roles-div').table(index: 0).rows[b.role_row(role)+1].text_field(title: '* Unit Number') }
49
+ action(:add_role_qualifier) { |role, b| b.frm.div(id: 'tab-Roles-div').table(index: 0).rows[b.role_row(role)+1].button(name: /methodToCall.addRoleQualifier.line\d+.anchor/).click; b.loading }
50
+
51
+ # =========
52
+ private
53
+ # =========
54
+
55
+ action(:role_row) { |role, b| b.frm.div(id: 'tab-Roles-div').table(index: 0).rows.find_index{ |row| row.text.include?(role.to_s) } }
56
+
57
+ end
@@ -0,0 +1,18 @@
1
+ class InstituteRatesMaintenance < BasePage
2
+
3
+ global_buttons
4
+ document_header_elements
5
+ error_messages
6
+ description_field
7
+
8
+ element(:activity_type_code) { |b| b.frm.text_field(name: 'document.newMaintainableObject.activityTypeCode') }
9
+ element(:fiscal_year) { |b| b.frm.text_field(name: 'document.newMaintainableObject.fiscalYear') }
10
+ element(:on_off_campus_flag) { |b| b.frm.checkbox(name: 'document.newMaintainableObject.onOffCampusFlag') }
11
+ element(:rate_class_code) { |b| b.frm.text_field(name: 'document.newMaintainableObject.rateClassCode') }
12
+ element(:rate_type_code) { |b| b.frm.text_field(name: 'document.newMaintainableObject.rateTypeCode') }
13
+ element(:start_date) { |b| b.frm.text_field(name: 'document.newMaintainableObject.startDate') }
14
+ element(:unit_number) { |b| b.frm.text_field(name: 'document.newMaintainableObject.unitNumber') }
15
+ element(:rate) { |b| b.frm.text_field(name: 'document.newMaintainableObject.instituteRate') }
16
+ element(:active) { |b| b.frm.checkbox(name: 'document.newMaintainableObject.active') }
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+ class KCInstitutionalProposal < BasePage
2
+
3
+ document_header_elements
4
+ tab_buttons
5
+ global_buttons
6
+ error_messages
7
+
8
+ class << self
9
+
10
+ def inst_prop_header_elements
11
+ buttons 'Institutional Proposal', 'Contacts', 'Custom Data', 'Special Review',
12
+ 'Intellectual Property Review', 'Distribution', 'Medusa',
13
+ 'Institutional Proposal Actions'
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -0,0 +1,32 @@
1
+ class IPContacts < KCInstitutionalProposal
2
+
3
+ inst_prop_header_elements
4
+
5
+ # Combined Credit Split
6
+ {
7
+ 'recognition'=>1,
8
+ 'responsibility'=>2,
9
+ 'space'=>3,
10
+ 'financial'=>4
11
+ }.each do |key, value|
12
+ # Makes methods for the person's 3 credit splits (doesn't have to take the full name of the person to work)
13
+ # Example: page.responsibility('Joe Schmoe').set '100.00'
14
+ action(key.to_sym) { |name, b| b.credit_split_div_table.row(text: /#{name}/)[value].text_field }
15
+ # Makes methods for the person's units' credit splits
16
+ # Example: page.unit_financial('Jane Schmoe', 'Unit').set '50.0'
17
+ action("unit_#{key}".to_sym) { |full_name, unit_name, p| p.target_unit_row(full_name, unit_name)[value].text_field }
18
+ end
19
+
20
+ # =======
21
+ private
22
+ # =======
23
+
24
+ element(:credit_split_div_table) { |b| b.frm.h3(text: 'Combined Credit Split').parent.table }
25
+
26
+ action(:target_unit_row) do |full_name, unit_number, p|
27
+ trows = p.credit_split_div_table.rows
28
+ index = trows.find_index { |row| row.text=~/#{full_name}/ }
29
+ trows[index..-1].find { |row| row.text=~/#{unit_number}/ }
30
+ end
31
+
32
+ end
@@ -0,0 +1,6 @@
1
+ class IPCustomData < KCInstitutionalProposal
2
+
3
+ inst_prop_header_elements
4
+ custom_data
5
+
6
+ end
@@ -0,0 +1,20 @@
1
+ class Distribution < KCInstitutionalProposal
2
+
3
+ inst_prop_header_elements
4
+
5
+ element(:add_cost_share_project_period) { |b| b.frm.text_field(name: 'institutionalProposalCostShareBean.newInstitutionalProposalCostShare.projectPeriod') }
6
+ element(:add_cost_share_type) { |b| b.frm.select(name: 'institutionalProposalCostShareBean.newInstitutionalProposalCostShare.costShareTypeCode') }
7
+ element(:add_cost_share_percentage) { |b| b.frm.text_field(name: 'institutionalProposalCostShareBean.newInstitutionalProposalCostShare.costSharePercentage') }
8
+ element(:add_cost_share_source_account) { |b| b.frm.text_field(name: 'institutionalProposalCostShareBean.newInstitutionalProposalCostShare.sourceAccount') }
9
+ element(:add_cost_share_amount) { |b| b.frm.text_field(name: 'institutionalProposalCostShareBean.newInstitutionalProposalCostShare.amount') }
10
+ action(:add_cost_share) { |b| b.frm.button(name: 'methodToCall.addCostShare.anchorCostSharing').click; b.loading }
11
+
12
+ element(:add_unrec_f_a_fiscal_year) { |b| b.frm.text_field(name: 'institutionalProposalUnrecoveredFandABean.newInstitutionalProposalUnrecoveredFandA.fiscalYear') }
13
+ element(:add_rate_type) { |b| b.frm.select(name: 'institutionalProposalUnrecoveredFandABean.newInstitutionalProposalUnrecoveredFandA.indirectcostRateTypeCode') }
14
+ element(:add_fa_applicable_rate) { |b| b.frm.text_field(name: 'institutionalProposalUnrecoveredFandABean.newInstitutionalProposalUnrecoveredFandA.applicableIndirectcostRate') }
15
+ element(:add_fa_campus_flag) { |b| b.frm.checkbox(name: 'institutionalProposalUnrecoveredFandABean.newInstitutionalProposalUnrecoveredFandA.onCampusFlag') }
16
+ element(:add_fa_source_account) { |b| b.frm.text_field(name: 'institutionalProposalUnrecoveredFandABean.newInstitutionalProposalUnrecoveredFandA.sourceAccount') }
17
+ element(:add_fa_amount) { |b| b.frm.text_field(name: 'institutionalProposalUnrecoveredFandABean.newInstitutionalProposalUnrecoveredFandA.underrecoveryOfIndirectcost') }
18
+ action(:add_unrecovered_f_a) { |b| b.frm.button(name: 'methodToCall.addUnrecoveredFandA.anchorUnrecoveredFA').click; b.loading }
19
+
20
+ end
@@ -0,0 +1,27 @@
1
+ class InstitutionalProposal < KCInstitutionalProposal
2
+
3
+ inst_prop_header_elements
4
+ description_field
5
+
6
+ value(:institutional_proposal_number) { |b| b.institutional_proposal_tab.table[0][1].text }
7
+ value(:status_ro) { |b| b.institutional_proposal_tab.table[2][3].text }
8
+ element(:status) { |b| b.frm.select(name: 'document.institutionalProposal.statusCode') }
9
+ element(:proposal_type) { |b| b.frm.select(name: 'document.institutionalProposalList[0].proposalTypeCode') }
10
+ element(:activity_type) { |b| b.frm.select(name: 'document.institutionalProposalList[0].activityTypeCode') }
11
+ element(:project_title) { |b| b.frm.text_field(name: 'document.institutionalProposalList[0].title') }
12
+ element(:sponsor_id) { |b| b.frm.text_field(name: 'document.institutionalProposalList[0].sponsorCode') }
13
+
14
+ # ===========
15
+ private
16
+ # ===========
17
+
18
+ element(:document_overview_tab) { |b| b.frm.div(id: 'tab-DocumentOverview-div') }
19
+ element(:institutional_proposal_tab) { |b| b.frm.div(id: 'tab-InstitutionalProposal-div') }
20
+ element(:sponsor_program_info_tab) { |b| b.frm.div(id: 'tab-SponsorProgramInformation-div') }
21
+ element(:financial_tab) { |b| b.frm.div(id: 'tab-Financial-div') }
22
+ element(:graduate_students_tab) { |b| b.frm.div(id: 'tab-GraduateStudents-div') }
23
+ element(:notes_and_attachments_tab) { |b| b.frm.div(id: 'tab-NotesandAttachments-div') }
24
+ element(:delivery_info_tab) { |b| b.frm.div(id: 'tab-DeliveryInfo-div') }
25
+ element(:keywords_tab) { |b| b.frm.div(id: 'tab-Keywords-div') }
26
+
27
+ end
@@ -0,0 +1,7 @@
1
+ class InstitutionalProposalActions < KCInstitutionalProposal
2
+
3
+ inst_prop_header_elements
4
+ route_log
5
+ validation_elements
6
+
7
+ end
@@ -0,0 +1,20 @@
1
+ class IPReview < KCInstitutionalProposal
2
+
3
+ inst_prop_header_elements
4
+ route_log
5
+ description_field
6
+
7
+ glbl 'Edit IP Review'
8
+
9
+ # TODO: Determine if this is the right structure for this class, given that to edit the page
10
+ # results in taking the user out of the context of the Institutional Proposal
11
+
12
+ element(:submitted_for_review) { |b| b.frm.text_field(name: 'document.newMaintainableObject.reviewSubmissionDate') }
13
+ element(:reviewer) { |b| b.frm.text_field(name: 'document.newMaintainableObject.person.userName') }
14
+ action(:find_reviewer) { |b| b.frm.button(name: 'methodToCall.performLookup.(!!org.kuali.rice.kim.api.identity.Person!!).((())).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor4').click }
15
+
16
+ element(:activity_number) { |b| b.frm.text_field(name: 'document.newMaintainableObject.add.ipReviewActivities.activityNumber') }
17
+ element(:ip_review_activity_type_code) { |b| b.frm.select(name: 'document.newMaintainableObject.add.ipReviewActivities.ipReviewActivityTypeCode') }
18
+ action(:add_activity) { |b| b.frm.button(id: 'methodToCall.addLine.ipReviewActivities.(!!org.kuali.kra.institutionalproposal.ipreview.IntellectualPropertyReviewActivity!!)').click; b.loading }
19
+
20
+ end