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
@@ -0,0 +1,65 @@
1
+ class SubawardBudgetObject
2
+
3
+ include Foundry
4
+ include DataFactory
5
+ include StringFactory
6
+ include Navigation
7
+
8
+ attr_accessor :organization_name, :organization_id, :file_name, :direct_cost,
9
+ :f_and_a_cost, :cost_sharing, :total_cost
10
+
11
+ def initialize(browser, opts={})
12
+ @browser = browser
13
+
14
+ defaults = {
15
+ file_name: 'test.pdf',
16
+ direct_cost: random_dollar_value(10000),
17
+ f_and_a_cost: random_dollar_value(10000),
18
+ cost_sharing: random_dollar_value(10000)
19
+ }
20
+ set_options(defaults.merge(opts))
21
+ end
22
+
23
+ def create
24
+ # As this is a nested object, it should be created
25
+ # by its parent. So, we're having the
26
+ # parent BudgetVersionsObject
27
+ # do the navigation for us...
28
+ on(BudgetActions).expand_all
29
+ if @organization_id.nil?
30
+ on(BudgetActions).look_up_organization
31
+ on OrganizationLookup do |look|
32
+ look.search
33
+ look.return_random
34
+ end
35
+ on BudgetActions do |add|
36
+ @organization_id=add.add_organization_id.value
37
+ # The next two lines are needed because
38
+ # otherwise the organization name will not
39
+ # appear in the div...
40
+ add.add_organization_id.focus
41
+ add.add_comments.focus
42
+ @organization_name=add.organization_name
43
+ end
44
+ else
45
+ # TODO Write this else clause when it's necessary
46
+ end
47
+ on BudgetActions do |add|
48
+ add.add_file_name.set($file_folder+@file_name)
49
+ add.add_subaward_budget
50
+ add.show_details @organization_name
51
+ add.direct_cost(@organization_name).fit @direct_cost
52
+ add.f_and_a_cost(@organization_name).fit @f_and_a_cost
53
+ add.cost_sharing(@organization_name).fit @cost_sharing
54
+ @total_cost=add.total_cost(@organization_name)
55
+ add.save
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ class SubawardBudgetCollection < Array
62
+
63
+
64
+
65
+ end
@@ -0,0 +1,65 @@
1
+ class CommitteeDocumentObject
2
+
3
+ include Foundry
4
+ include DataFactory
5
+ include StringFactory
6
+ include Navigation
7
+
8
+ attr_accessor :description, :committee_id, :document_id, :status, :committee_name,
9
+ :home_unit, :min_members_for_quorum, :maximum_protocols,
10
+ :adv_submission_days, :review_type, :last_updated, :updated_user,
11
+ :initiator, :members, :areas_of_research, :type
12
+
13
+ def initialize(browser, opts={})
14
+ @browser = browser
15
+
16
+ defaults = {
17
+ description: random_alphanums,
18
+ committee_id: random_alphanums,
19
+ home_unit: '000001',
20
+ committee_name: random_alphanums,
21
+ min_members_for_quorum: rand(100).to_s,
22
+ maximum_protocols: rand(100).to_s,
23
+ adv_submission_days: rand(365).to_s,
24
+ review_type: 'Full',
25
+ members: CommitteeMemberCollection.new,
26
+ areas_of_research: [],
27
+ schedule: CommitteeScheduleCollection.new
28
+ }
29
+
30
+ set_options(defaults.merge(opts))
31
+ end
32
+
33
+ def create
34
+ visit(Research).central_admin
35
+ on(CentralAdmin).add_irb_committee
36
+ on Committee do |comm|
37
+ @document_id=comm.document_id
38
+ @initiator=comm.initiator
39
+ @status=comm.status
40
+ fill_out comm, :description, :committee_id, :committee_name,
41
+ :type, :home_unit, :min_members_for_quorum,
42
+ :maximum_protocols, :adv_submission_days, :review_type
43
+ comm.save
44
+ end
45
+ end
46
+
47
+ def submit
48
+ navigate
49
+ on(Committee).submit
50
+ end
51
+
52
+ # =======
53
+ private
54
+ # =======
55
+
56
+ # Nav Aids...
57
+
58
+ def navigate
59
+ open_document 'Committee Document' # TODO: Does this really need to be hard coded?
60
+ on(Committee).committee unless on_page?(on(Committee).committee_id_field)
61
+ end
62
+
63
+ end
64
+
65
+
@@ -0,0 +1,30 @@
1
+ class CommitteeMemberObject
2
+
3
+ include Foundry
4
+ include DataFactory
5
+
6
+ attr_accessor :document_id, :name, :membership_type, :paid_member, :term_start_date, :term_end_date,
7
+ :roles
8
+
9
+ def initialize(browser, opts={})
10
+ @browser = browser
11
+
12
+ defaults = {
13
+ roles: MemberRolesCollection.new
14
+ }
15
+
16
+ set_options(defaults.merge(opts))
17
+ requires :document_id
18
+ end
19
+
20
+ def create
21
+
22
+ end
23
+
24
+
25
+
26
+ end # CommitteeMemberObject
27
+
28
+ class CommitteeMemberCollection < Array
29
+
30
+ end # CommitteeMemberCollection
@@ -0,0 +1,27 @@
1
+ class CommitteeScheduleObject
2
+
3
+ include Foundry
4
+ include DataFactory
5
+
6
+ attr_accessor :document_id
7
+
8
+ def initialize(browser, opts={})
9
+ @browser = browser
10
+
11
+ defaults = {
12
+
13
+ }
14
+
15
+ set_options(defaults.merge(opts))
16
+ requires :document_id
17
+ end
18
+
19
+ def create
20
+
21
+ end
22
+
23
+ end # CommitteeScheduleObject
24
+
25
+ class CommitteeScheduleCollection < Array
26
+
27
+ end
@@ -0,0 +1,28 @@
1
+ class MemberRolesObject
2
+
3
+ include Foundry
4
+ include DataFactory
5
+ include StringFactory
6
+
7
+ attr_accessor :document_id, :name, :role, :start_date, :end_date
8
+
9
+ def initialize(browser, opts={})
10
+ @browser = browser
11
+
12
+ defaults = {
13
+
14
+ }
15
+
16
+ set_options(defaults.merge(opts))
17
+ requires :name, :document_id
18
+ end
19
+
20
+ def create
21
+
22
+ end
23
+
24
+ end # MemberRolesObject
25
+
26
+ class MemberRolesCollection < Array
27
+
28
+ end # MemberRolesCollection
@@ -0,0 +1,48 @@
1
+ class FinancialEntityObject
2
+
3
+ include Foundry
4
+ include DataFactory
5
+ include StringFactory
6
+ include Navigation
7
+
8
+ attr_accessor :entity_name, :type, :sponsor_code, :status_code, :held,
9
+ :address_line_1, :sponsor_research, :city, :country, :postal_code,
10
+ :principal_activity
11
+
12
+ def initialize(browser, opts={})
13
+ @browser=browser
14
+ defaults = {
15
+ entity_name: random_alphanums,
16
+ type: '::random::',
17
+ address_line_1: random_alphanums,
18
+ sponsor_research: 'Y',
19
+ status_code: '::random::',
20
+ held: '::random::',
21
+ city: random_alphanums,
22
+ country: '::random::',
23
+ postal_code: '85028',
24
+ principal_activity: random_multiline
25
+ }
26
+ set_options(defaults.merge(opts))
27
+ end
28
+
29
+ def create
30
+ navigate
31
+ on NewFinancialEntity do |page|
32
+ fill_out page, :entity_name, :type, :address_line_1, :sponsor_research,
33
+ :status_code, :city, :postal_code, :principal_activity, :held,
34
+ :sponsor_research
35
+ page.country_code.pick! @country
36
+ page.submit
37
+ end
38
+ end
39
+
40
+ # =========
41
+ private
42
+ # =========
43
+
44
+ def navigate
45
+
46
+ end
47
+
48
+ end
@@ -0,0 +1,90 @@
1
+ class PHSFellowshipQuestionnaireObject
2
+
3
+ YN_QUESTIONS = [:indefinite_human_subjects, :clinical_trial, :phase_3_trial, :indefinite_vertebrates,
4
+ :human_stem_cells, :specific_cell_line, :seeking_degree_during_proposed_award,
5
+ :have_kirchstein_support, :have_kirschstein_support_start_date, :have_kirschstein_support_end_date,
6
+ :have_nih_grant_number, :have_additional_kirschstein_support, :previous_submission,
7
+ :senior_fellowship_application, :supplement_funding]
8
+ include Foundry
9
+ include DataFactory
10
+ include StringFactory
11
+ include Navigation
12
+ include Utilities
13
+
14
+ attr_accessor :indefinite_human_subjects, :clinical_trial, :phase_3_trial, :indefinite_vertebrates,
15
+ :human_stem_cells, :specific_cell_line, :field_of_training, :seeking_degree_during_proposed_award,
16
+ :expected_degree_completion_date, :type_of_degree_during_proposed_award, :have_kirchstein_support,
17
+ :kirschstein_support_level, :kirschstein_support_recipient, :have_kirschstein_support_start_date,
18
+ :kirschstein_support_start_date, :have_kirschstein_support_end_date, :kirschstein_support_end_date,
19
+ :have_nih_grant_number, :nih_grant_number, :additional_kirschstein_support, :previous_submission,
20
+ :former_institution, :senior_fellowship_application, :present_institutional_base_salary, :salary_period,
21
+ :supplement_funding, :supplemental_funding_amount, :supplemental_funding_receipt_period, :supplemental_funding_type,
22
+ :supplemental_funding_source
23
+ # More instance variable definitions.
24
+ # These make instance variables such as:
25
+ # @stem_cell_line_1 (up to 20)
26
+ 1.upto(20) do |x|
27
+ attr_accessor("stem_cell_line_#{x}".to_sym)
28
+ end
29
+
30
+ def initialize(browser, opts={})
31
+ @browser = browser
32
+
33
+ defaults = {
34
+ indefinite_human_subjects: 'N',
35
+ clinical_trial: 'N',
36
+ indefinite_vertebrates: 'N',
37
+ human_stem_cells: 'N',
38
+ field_of_training: '1110 Biological Chemistry',
39
+ seeking_degree_during_proposed_award: 'N',
40
+ have_kirchstein_support: 'N',
41
+ previous_submission: 'N',
42
+ senior_fellowship_application: 'N'
43
+ }
44
+
45
+ set_options(defaults.merge(opts))
46
+ requires :document_id, :doc_type
47
+ end
48
+
49
+ def create
50
+ navigate
51
+ on(S2S).questions
52
+ on(Questions).expand_all
53
+ on PHSFellowshipQuestionnaire do |phs_fellowship|
54
+
55
+ # Answers all of the Yes/No questions first (in random order)
56
+ YN_QUESTIONS.shuffle.each do |q|
57
+ var = get(q)
58
+ phs_fellowship.send(q, var) if var != nil && phs_fellowship.send("#{q}_element".to_sym, var).present?
59
+ end
60
+
61
+ # Next we answer the questions that are conditional, based on the above answers...
62
+ 1.upto(20) do |n|
63
+ scl = "phs_stem_cell_line_#{n}"
64
+ phs_fellowship.send(scl).fit get(scl)
65
+ end
66
+
67
+ fill_out phs_fellowship, :expected_degree_completion_date,
68
+ :kirschstein_support_start_date, :kirschstein_support_end_date, :nih_grant_number, :former_institution,
69
+ :present_institutional_base_salary, :salary_receipt_period, :supplemental_funding_amount,
70
+ :supplemental_funding_receipt_period, :supplemental_funding_type, :supplemental_funding_source
71
+
72
+ phs_fellowship.save
73
+ end
74
+
75
+ end
76
+
77
+ # =======
78
+ private
79
+ # =======
80
+
81
+ # Nav Aids...
82
+
83
+ def navigate
84
+ open_document @doc_type
85
+ on(Proposal).questions unless on_page?(on(Questions).questions_header)
86
+ end
87
+ end
88
+
89
+
90
+
@@ -0,0 +1,5 @@
1
+ class PHSTrainingQuestionnaireObject
2
+
3
+
4
+
5
+ end
@@ -0,0 +1,20 @@
1
+ class InstitutionalProposalObject
2
+
3
+ include Foundry
4
+ include DataFactory
5
+ include StringFactory
6
+ include DateFactory
7
+ include Navigation
8
+
9
+ attr_accessor :document_id, :proposal_number, :dev_proposal_number, :project_title, :doc_status, :sponsor_id, :activity_type,
10
+ :proposal_type, :proposal_status, :project_personnel, :custom_data, :special_review,
11
+ :initiator
12
+
13
+ def initialize(browser, opts={})
14
+ @browser = browser
15
+ set_options(opts)
16
+ end
17
+
18
+
19
+
20
+ end
@@ -0,0 +1,62 @@
1
+ class IPReviewObject
2
+
3
+ include Foundry
4
+ include DataFactory
5
+ include StringFactory
6
+ include DateFactory
7
+ include Navigation
8
+
9
+ attr_accessor :document_id, :activities, :submitted_for_review, :reviewer
10
+
11
+ def initialize(browser, opts={})
12
+ @browser = browser
13
+ defaults = {
14
+ reviewer: '::random::',
15
+ submitted_for_review: right_now, # Note: this is the date hash, not the string with slashes
16
+ activities: [{number: '1', type_code: '::random::'}]
17
+ }
18
+ set_options(defaults.merge(opts))
19
+ requires :document_id
20
+ end
21
+
22
+ # This method only "saves" the IPReview.
23
+ # You must submit or blanket approve it before it actually does anything useful
24
+ def create
25
+ # TODO: Add helper navigation method(s) here
26
+ on IPReview do |page|
27
+ page.description.set random_alphanums # Note: The description field on this page is required, but seems irrelevant to anything important, at least at the moment
28
+ page.submitted_for_review.set @submitted_for_review[:date_w_slashes]
29
+ @activities.each do |activity|
30
+ page.activity_number.set activity[:number]
31
+ page.ip_review_activity_type_code.pick! activity[:type_code]
32
+ # TODO: Obviously add more here as needed
33
+ end
34
+ end
35
+ set_reviewer
36
+ on(IPReview).save
37
+ end
38
+
39
+ def submit
40
+ on(IPReview).submit
41
+ end
42
+
43
+ # ==========
44
+ private
45
+ # ==========
46
+
47
+ def set_reviewer
48
+ if @reviewer=='::random::'
49
+ on(IPReview).find_reviewer
50
+ on PersonLookup do |search|
51
+ search.search
52
+ search.return_random
53
+ end
54
+ @reviewer=on(IPReview).reviewer.value
55
+ else
56
+ on(IPReview).reviewer.fit @reviewer
57
+ end
58
+ end
59
+
60
+ # TODO: Add navigational and other helper methods
61
+
62
+ end