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.
- data/Gemfile +1 -1
- data/Gemfile.lock +16 -18
- data/chromedriver.log +46 -0
- data/features/grants_gov/grants_gov_forms/code_and_form_mapping.feature +26 -0
- data/features/grants_gov/grants_gov_forms/forms_validation.feature +1 -0
- data/features/grants_gov/grants_gov_forms/s2s_questionnaire.feature +19 -0
- data/features/grants_gov/s2s_submission.feature +30 -0
- data/features/grants_gov/s2s_validation.feature +36 -0
- data/features/proposal_development/create_budget_versions.feature +31 -0
- data/features/proposal_development/create_proposal.feature +25 -0
- data/features/proposal_development/key_personnel_validations.feature +41 -0
- data/features/proposal_development/proposal_actions_validations.feature +46 -0
- data/features/proposal_development/proposal_permissions.feature +73 -0
- data/features/proposal_development/proposal_workflow.feature +105 -0
- data/features/proposal_development/special_review_validations.feature +12 -0
- data/features/step_definitions/action_list.rb +12 -0
- data/features/step_definitions/awards/create_award.rb +3 -0
- data/features/step_definitions/grants_gov/forms.rb +34 -0
- data/features/step_definitions/grants_gov/s2s_submission.rb +51 -0
- data/features/step_definitions/institutional_proposals/create_institutional_proposal.rb +3 -0
- data/features/step_definitions/proposal_development/budget_versions.rb +102 -0
- data/features/step_definitions/proposal_development/create_proposal.rb +157 -0
- data/features/step_definitions/proposal_development/edit_proposal.rb +79 -0
- data/features/step_definitions/proposal_development/institute_rates.rb +21 -0
- data/features/step_definitions/proposal_development/key_personnel_validations.rb +74 -0
- data/features/step_definitions/proposal_development/proposal_actions_validations.rb +73 -0
- data/features/step_definitions/proposal_development/proposal_permissions.rb +141 -0
- data/features/step_definitions/proposal_development/proposal_workflow.rb +81 -0
- data/features/step_definitions/proposal_development/s2s_validation.rb +30 -0
- data/features/step_definitions/proposal_development/special_review_validations.rb +7 -0
- data/features/step_definitions/test.rb +3 -0
- data/features/step_definitions/users.rb +65 -0
- data/features/support/env.rb +35 -0
- data/features/test.feature +13 -0
- data/kuality-coeus.gemspec +1 -1
- data/lib/chromedriver.log +4483 -0
- data/lib/kuality-coeus.rb +5 -2
- data/lib/kuality-coeus/core_extensions.rb +10 -0
- data/lib/kuality-coeus/data_objects/award/award.rb +126 -0
- data/lib/kuality-coeus/data_objects/award/award_transaction.rb +57 -0
- data/lib/kuality-coeus/data_objects/budget/budget_periods.rb +114 -0
- data/lib/kuality-coeus/data_objects/budget/budget_versions.rb +221 -0
- data/lib/kuality-coeus/data_objects/budget/subaward_budget.rb +65 -0
- data/lib/kuality-coeus/data_objects/committee_document/committee_document.rb +65 -0
- data/lib/kuality-coeus/data_objects/committee_document/committee_members.rb +30 -0
- data/lib/kuality-coeus/data_objects/committee_document/committee_schedule.rb +27 -0
- data/lib/kuality-coeus/data_objects/committee_document/member_roles.rb +28 -0
- data/lib/kuality-coeus/data_objects/conflict_of_interest/financial_entity.rb +48 -0
- data/lib/kuality-coeus/data_objects/grants_gov/phs_fellowship_questionnaire.rb +90 -0
- data/lib/kuality-coeus/data_objects/grants_gov/phs_training_budget_questionnaire.rb +5 -0
- data/lib/kuality-coeus/data_objects/institutional_proposal/institutional_proposal.rb +20 -0
- data/lib/kuality-coeus/data_objects/institutional_proposal/intellectual_property_review.rb +62 -0
- data/lib/kuality-coeus/data_objects/navigation.rb +64 -0
- data/lib/kuality-coeus/data_objects/proposal_development/compliance_questions.rb +47 -0
- data/lib/kuality-coeus/data_objects/proposal_development/custom_data.rb +41 -0
- data/lib/kuality-coeus/data_objects/proposal_development/degrees.rb +40 -0
- data/lib/kuality-coeus/data_objects/proposal_development/key_personnel.rb +299 -0
- data/lib/kuality-coeus/data_objects/proposal_development/kuali_university_questions.rb +58 -0
- data/lib/kuality-coeus/data_objects/proposal_development/permissions.rb +107 -0
- data/lib/kuality-coeus/data_objects/proposal_development/personnel_attachments.rb +46 -0
- data/lib/kuality-coeus/data_objects/proposal_development/proposal_attachments.rb +41 -0
- data/lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb +301 -0
- data/lib/kuality-coeus/data_objects/proposal_development/proposal_questions.rb +52 -0
- data/lib/kuality-coeus/data_objects/proposal_development/s2s_questionnaire.rb +129 -0
- data/lib/kuality-coeus/data_objects/proposal_development/special_review.rb +79 -0
- data/lib/kuality-coeus/data_objects/rates/institute_rate.rb +209 -0
- data/lib/kuality-coeus/data_objects/user.rb +303 -33
- data/lib/kuality-coeus/gem_extensions.rb +26 -0
- data/lib/kuality-coeus/page_objects/000_base_page.rb +196 -14
- data/lib/kuality-coeus/page_objects/action_list.rb +32 -0
- data/lib/kuality-coeus/page_objects/award/award.rb +25 -0
- data/lib/kuality-coeus/page_objects/award/award_actions.rb +7 -0
- data/lib/kuality-coeus/page_objects/award/award_budget_versions.rb +9 -0
- data/lib/kuality-coeus/page_objects/award/commitments.rb +27 -0
- data/lib/kuality-coeus/page_objects/award/contacts.rb +19 -0
- data/lib/kuality-coeus/page_objects/award/custom_data.rb +6 -0
- data/lib/kuality-coeus/page_objects/award/payment_reports_terms.rb +26 -0
- data/lib/kuality-coeus/page_objects/award/special_review.rb +7 -0
- data/lib/kuality-coeus/page_objects/award/time_and_money.rb +36 -0
- data/lib/kuality-coeus/page_objects/budget/budget_actions.rb +31 -0
- data/lib/kuality-coeus/page_objects/budget/budget_versions.rb +13 -0
- data/lib/kuality-coeus/page_objects/budget/modular_budget.rb +16 -0
- data/lib/kuality-coeus/page_objects/budget/non-personnel.rb +11 -0
- data/lib/kuality-coeus/page_objects/budget/parameters.rb +65 -0
- data/lib/kuality-coeus/page_objects/budget/personnel.rb +56 -0
- data/lib/kuality-coeus/page_objects/budget/rates.rb +7 -0
- data/lib/kuality-coeus/page_objects/budget/summary.rb +5 -0
- data/lib/kuality-coeus/page_objects/budget_document.rb +19 -0
- data/lib/kuality-coeus/page_objects/central_admin.rb +4 -2
- data/lib/kuality-coeus/page_objects/committee/committee.rb +10 -10
- data/lib/kuality-coeus/page_objects/committee/members.rb +4 -4
- data/lib/kuality-coeus/page_objects/committee_document.rb +1 -6
- data/lib/kuality-coeus/page_objects/confirmation.rb +16 -0
- data/lib/kuality-coeus/page_objects/disclosure/disclosure.rb +56 -0
- data/lib/kuality-coeus/page_objects/disclosure/disclosure_actions.rb +9 -0
- data/lib/kuality-coeus/page_objects/document_header.rb +5 -0
- data/lib/kuality-coeus/page_objects/financial_entities.rb +1 -4
- data/lib/kuality-coeus/page_objects/financial_entities/my_financial_entities.rb +6 -0
- data/lib/kuality-coeus/page_objects/financial_entities/new_financial_entity.rb +11 -0
- data/lib/kuality-coeus/page_objects/financial_entities/reporter.rb +5 -3
- data/lib/kuality-coeus/page_objects/identity/person.rb +57 -0
- data/lib/kuality-coeus/page_objects/institute_rates_maintenance.rb +18 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal.rb +18 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/contacts.rb +32 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/custom_data.rb +6 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/distribution.rb +20 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal.rb +27 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal_actions.rb +7 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/intellectual_property_review.rb +20 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/special_review.rb +6 -0
- data/lib/kuality-coeus/page_objects/kc_awards.rb +48 -0
- data/lib/kuality-coeus/page_objects/kc_protocol.rb +15 -0
- data/lib/kuality-coeus/page_objects/login.rb +4 -5
- data/lib/kuality-coeus/page_objects/lookup_pages/000_lookups.rb +10 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/action_list_filter.rb +6 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/address_book_lookup.rb +4 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/development_proposal_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/document_search.rb +10 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/group_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/institute_rates_lookup.rb +12 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/opportunity_lookup.rb +6 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/organization_lookup.rb +5 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/person_extended_attributes.rb +5 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/person_lookup.rb +10 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/role_lookup.rb +6 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/sponsor_lookup.rb +9 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/unit_admin_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/unit_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/maintenance.rb +7 -0
- data/lib/kuality-coeus/page_objects/notification_editor.rb +6 -0
- data/lib/kuality-coeus/page_objects/proposal_development.rb +7 -2
- data/lib/kuality-coeus/page_objects/proposal_development/abstracts_and_attachments.rb +54 -0
- data/lib/kuality-coeus/page_objects/proposal_development/key_personnel.rb +126 -0
- data/lib/kuality-coeus/page_objects/proposal_development/pd_custom_data.rb +6 -0
- data/lib/kuality-coeus/page_objects/proposal_development/permissions.rb +44 -0
- data/lib/kuality-coeus/page_objects/proposal_development/phs_fellowship_questionnaire.rb +44 -0
- data/lib/kuality-coeus/page_objects/proposal_development/phs_training_budget_questionnaire.rb +50 -0
- data/lib/kuality-coeus/page_objects/proposal_development/proposal.rb +47 -8
- data/lib/kuality-coeus/page_objects/proposal_development/proposal_actions.rb +62 -0
- data/lib/kuality-coeus/page_objects/proposal_development/proposal_summary.rb +9 -0
- data/lib/kuality-coeus/page_objects/proposal_development/questions.rb +111 -0
- data/lib/kuality-coeus/page_objects/proposal_development/s2s.rb +35 -0
- data/lib/kuality-coeus/page_objects/proposal_development/special_review.rb +6 -0
- data/lib/kuality-coeus/page_objects/protocol/custom_data.rb +6 -0
- data/lib/kuality-coeus/page_objects/protocol/permissions.rb +5 -0
- data/lib/kuality-coeus/page_objects/protocol/personnel.rb +5 -0
- data/lib/kuality-coeus/page_objects/protocol/protocol.rb +11 -0
- data/lib/kuality-coeus/page_objects/protocol/questionnaire.rb +5 -0
- data/lib/kuality-coeus/page_objects/protocol/special_review.rb +6 -0
- data/lib/kuality-coeus/page_objects/rejection_confirmation.rb +5 -0
- data/lib/kuality-coeus/page_objects/researcher.rb +4 -2
- data/lib/kuality-coeus/page_objects/shared/unit_administrator.rb +13 -0
- data/lib/kuality-coeus/page_objects/system/person_extended_attributes.rb +18 -0
- data/lib/kuality-coeus/page_objects/system_admin.rb +7 -0
- data/lib/kuality-coeus/page_objects/unit.rb +2 -4
- data/lib/kuality-coeus/utilities.rb +39 -0
- data/libpeerconnection.log +0 -0
- metadata +140 -5
- data/lib/kuality-coeus/data_objects/committee_document.rb +0 -65
- data/lib/kuality-coeus/data_objects/proposal_development.rb +0 -53
- 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,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
|