kuality-coeus 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/features/grants_gov/grants_gov_forms/code_and_form_mapping.feature +3 -3
- data/features/grants_gov/grants_gov_forms/forms_validation.feature +5 -1
- data/features/grants_gov/grants_gov_forms/s2s_questionnaire.feature +5 -3
- data/features/grants_gov/s2s_submission.feature +7 -4
- data/features/proposal_development/create_budget_versions.feature +2 -1
- data/features/proposal_development/create_proposal.feature +21 -19
- data/features/proposal_development/key_personnel_validations.feature +4 -3
- data/features/proposal_development/proposal_actions_validations.feature +9 -17
- data/features/proposal_development/proposal_permissions.feature +25 -22
- data/features/proposal_development/proposal_workflow.feature +8 -37
- data/features/step_definitions/{proposal_development → budget_versions}/budget_versions.rb +9 -9
- data/features/step_definitions/budget_versions/project_personnel.rb +11 -0
- data/features/step_definitions/delete_proposals.rb +9 -0
- data/features/step_definitions/grants_gov/forms.rb +27 -0
- data/features/step_definitions/grants_gov/s2s_submission.rb +30 -5
- data/features/step_definitions/proposal_development/create_proposal.rb +2 -9
- data/features/step_definitions/proposal_development/edit_proposal.rb +3 -4
- data/features/step_definitions/proposal_development/key_personnel_validations.rb +10 -1
- data/features/step_definitions/proposal_development/proposal_actions_validations.rb +7 -6
- data/features/step_definitions/proposal_development/proposal_permissions.rb +51 -65
- data/features/step_definitions/proposal_development/proposal_workflow.rb +0 -15
- data/features/step_definitions/test.rb +1 -3
- data/features/step_definitions/users.rb +6 -6
- data/features/support/env.rb +1 -1
- data/features/test.feature +3 -1
- data/kuality-coeus.gemspec +1 -1
- data/lib/kuality-coeus.rb +5 -5
- data/lib/kuality-coeus/data_objects/budget/budget_periods.rb +5 -4
- data/lib/kuality-coeus/data_objects/budget/budget_versions.rb +18 -7
- data/lib/kuality-coeus/data_objects/budget/personnel.rb +135 -0
- data/lib/kuality-coeus/data_objects/budget/subaward_budget.rb +1 -3
- data/lib/kuality-coeus/data_objects/identity/group.rb +19 -0
- data/lib/kuality-coeus/data_objects/navigation.rb +23 -0
- data/lib/kuality-coeus/data_objects/proposal_development/degrees.rb +1 -2
- data/lib/kuality-coeus/data_objects/proposal_development/key_personnel.rb +3 -6
- data/lib/kuality-coeus/data_objects/proposal_development/permissions.rb +16 -4
- data/lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb +7 -5
- data/lib/kuality-coeus/data_objects/user.rb +23 -17
- data/lib/kuality-coeus/page_objects/000_base_page.rb +2 -1
- data/lib/kuality-coeus/page_objects/budget/non-personnel.rb +0 -2
- data/lib/kuality-coeus/page_objects/budget/parameters.rb +4 -1
- data/lib/kuality-coeus/page_objects/budget/personnel.rb +18 -26
- data/lib/kuality-coeus/page_objects/confirmation.rb +0 -2
- data/lib/kuality-coeus/page_objects/identity/group.rb +7 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/000_lookups.rb +6 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/job_code_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/non_org_address_lookup.rb +14 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/person_lookup.rb +4 -2
- data/lib/kuality-coeus/page_objects/lookup_pages/to_be_named_lookup.rb +9 -0
- data/lib/kuality-coeus/page_objects/{institute_rates_maintenance.rb → maintenance/institute_rates_maintenance.rb} +0 -0
- data/lib/kuality-coeus/page_objects/proposal_development/permissions.rb +9 -1
- data/lib/kuality-coeus/page_objects/system_admin.rb +1 -1
- data/lib/kuality-coeus/utilities.rb +5 -6
- data/lib/resources/NSF_CoverPage_1_3-V1.3.pdf +0 -0
- data/lib/resources/NSF_DATA_MANAGEMENT_PLAN.pdf +0 -0
- data/lib/resources/PHS_Fellowship_Supplemental_1_1-V1.1.pdf +0 -0
- data/lib/resources/test.pdf +0 -0
- metadata +16 -4
@@ -33,19 +33,44 @@ end
|
|
33
33
|
Then /^the PHS training and fellowship questionnaires should appear in the proposal$/ do
|
34
34
|
on(S2S).questions
|
35
35
|
on Questions do |page|
|
36
|
-
|
37
|
-
'PHS Fellowship Form V1-2'
|
36
|
+
['PHS398 Training Budget V1-0',
|
37
|
+
'PHS Fellowship Form V1-2'].each { |title| page.form_tab(title).should be_present }
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
When /^I? ?complete their respective questionnaires$/ do
|
42
|
-
#on(PHS398TrainingBudgetQuestionnaire).complete_phs_training_questionnaire
|
43
42
|
@proposal.complete_phs_fellowship_questionnaire
|
44
43
|
end
|
45
44
|
|
46
45
|
Then /^the questionnaire titles should indicate that the questionnaires have been completed$/ do
|
46
|
+
on(S2S).questions
|
47
47
|
on Questions do |page|
|
48
|
-
|
49
|
-
PHS Fellowship Form V1-2
|
48
|
+
['PHS398 Training Budget V1-0',
|
49
|
+
'PHS Fellowship Form V1-2'].each { |form_tab| page.form_status(form_tab).should=='Complete'}
|
50
50
|
end
|
51
|
+
end
|
52
|
+
|
53
|
+
When /^I? ?add and mark complete all the required attachments$/ do
|
54
|
+
attachments = {
|
55
|
+
'RR-TEST-NIH-FORMS2' =>
|
56
|
+
%w{Equipment Bibliography BudgetJustification ProjectSummary Narrative Facilities
|
57
|
+
PHS_ResearchPlan_SpecificAims PHS_ResearchPlan_ResearchStrategy PHS_Cover_Letter},
|
58
|
+
'RR-FORMFAMILY-009-2010' =>
|
59
|
+
%w{BudgetJustification ProjectSummary Narrative},
|
60
|
+
'CAL-TEST-DOD2' =>
|
61
|
+
%w{BudgetJustification ProjectSummary Narrative},
|
62
|
+
'CAL-FDP-JAD' =>
|
63
|
+
%w{BudgetJustification},
|
64
|
+
'CSS-120809-SF424RR-V12' =>
|
65
|
+
%w{BudgetJustification ProjectSummary Narrative Budget_Justification_10YR
|
66
|
+
Budget_Justification_10YR_Fed_NonFed},
|
67
|
+
'RR-FORMFAMILY-004-2010' =>
|
68
|
+
%w{}
|
69
|
+
}
|
70
|
+
attachments[@proposal.opportunity_id].shuffle.each { |type| @proposal.add_proposal_attachment type: type, file_name: 'test.pdf', status: 'Complete' }
|
71
|
+
@proposal.key_personnel.each { |person| @proposal.add_personnel_attachment person: person.full_name, type: 'Biosketch', file_name: 'test.pdf' }
|
72
|
+
end
|
73
|
+
When(/^add a co-investigator$/) do
|
74
|
+
@proposal.add_key_person role: 'Co-Investigator'
|
75
|
+
on(KeyPersonnel).save
|
51
76
|
end
|
@@ -23,11 +23,11 @@ end
|
|
23
23
|
|
24
24
|
When /^I? ?initiate a proposal but miss a required field$/ do
|
25
25
|
# Pick a field at random for the test...
|
26
|
-
@required_field = ['Description', 'Proposal Type', '
|
26
|
+
@required_field = ['Description', 'Proposal Type', 'Activity Type',
|
27
27
|
'Project Title', 'Sponsor Code', 'Project Start Date', 'Project End Date'
|
28
28
|
].sample
|
29
29
|
# Properly set the nil value depending on the field type...
|
30
|
-
@required_field=~/Type/
|
30
|
+
@required_field=~/Type/ ? value='select' : value=''
|
31
31
|
# Transform the field name to the appropriate symbol...
|
32
32
|
field = snake_case(@required_field)
|
33
33
|
@proposal = create ProposalDevelopmentObject, field=>value
|
@@ -140,13 +140,6 @@ And /^I? ?add and mark complete all the required attachments for an NSF proposal
|
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
143
|
-
When /^I? ?add and mark complete all the required attachments for an NIH proposal$/ do
|
144
|
-
%w{Equipment Bibliography BudgetJustification ProjectSummary Narrative Facilities
|
145
|
-
PHS_ResearchPlan_SpecificAims PHS_ResearchPlan_ResearchStrategy}
|
146
|
-
.shuffle.each { |type| @proposal.add_proposal_attachment type: type, file_name: 'test.pdf', status: 'Complete' }
|
147
|
-
@proposal.key_personnel.each { |person| @proposal.add_personnel_attachment person: person.full_name, type: 'Biosketch', file_name: 'test.pdf' }
|
148
|
-
end
|
149
|
-
|
150
143
|
Then /^I should see an error that says the field is required$/ do
|
151
144
|
text="#{@required_field} is a required field."
|
152
145
|
@required_field=='Description' ? error='Document '+text : error=text
|
@@ -30,7 +30,7 @@ Then /^The proposal route log's 'Pending Action Requests' should include '(.*)'$
|
|
30
30
|
end
|
31
31
|
|
32
32
|
Then /^The S2S tab should become available$/ do
|
33
|
-
@proposal.view
|
33
|
+
@proposal.view 'S2S'
|
34
34
|
on(S2S).s2s_header.should be_present
|
35
35
|
end
|
36
36
|
|
@@ -52,7 +52,7 @@ When /^I? ?push the proposal's project start date ahead a year$/ do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
Then /^I can recall the proposal$/ do
|
55
|
-
@proposal.view
|
55
|
+
@proposal.view 'Proposal'
|
56
56
|
on(Proposal).recall_button.should exist
|
57
57
|
end
|
58
58
|
|
@@ -65,8 +65,7 @@ Given /^I? ?set the proposal type to '(\w+)'$/ do |type|
|
|
65
65
|
end
|
66
66
|
|
67
67
|
When /^I go to the proposal's (.*) page$/ do |page|
|
68
|
-
|
69
|
-
@proposal.view pages[page]
|
68
|
+
@proposal.view page
|
70
69
|
end
|
71
70
|
|
72
71
|
When /^I? ?save the proposal$/ do
|
@@ -1,6 +1,7 @@
|
|
1
1
|
And /^I? ?add the (.*) user as an? (.*) to the key personnel proposal roles$/ do |user_role, proposal_role|
|
2
2
|
user = get(user_role)
|
3
3
|
@proposal.add_key_person first_name: user.first_name, last_name: user.last_name, role: proposal_role
|
4
|
+
@proposal.set_valid_credit_splits
|
4
5
|
end
|
5
6
|
|
6
7
|
When /^I? ?add (.*) as a Key Person with a role of (.*)$/ do |user_name, kp_role|
|
@@ -35,12 +36,15 @@ Then /^a key personnel error should say (.*)$/ do |error|
|
|
35
36
|
'to select a valid unit' => 'Please select a valid Unit.',
|
36
37
|
'a key person role is required' => 'Key Person Role is a required field.',
|
37
38
|
'the credit split is not a valid percentage' => 'Credit Split is not a valid percentage.',
|
38
|
-
'the co-investigator requires at least one unit' => "At least one Unit is required for #{@proposal.key_personnel.co_investigator.full_name}.",
|
39
39
|
'only one PI is allowed' => 'Only one proposal role of Principal Investigator is allowed.'
|
40
40
|
}
|
41
41
|
on(KeyPersonnel).errors.should include errors[error]
|
42
42
|
end
|
43
43
|
|
44
|
+
Then /^a key personnel error should appear, saying the co-investigator requires at least one unit$/ do
|
45
|
+
on(KeyPersonnel).errors.should include "At least one Unit is required for #{@proposal.key_personnel.co_investigator.full_name}."
|
46
|
+
end
|
47
|
+
|
44
48
|
When /^I? ?add a principal investigator$/ do
|
45
49
|
@proposal.add_principal_investigator
|
46
50
|
end
|
@@ -69,6 +73,11 @@ end
|
|
69
73
|
When /^the (.*) user approves the proposal$/ do |role|
|
70
74
|
get(role).sign_in
|
71
75
|
@proposal.open_proposal
|
76
|
+
|
77
|
+
|
78
|
+
sleep 20
|
79
|
+
|
80
|
+
|
72
81
|
on(ProposalSummary).approve
|
73
82
|
on(Confirmation).yes
|
74
83
|
end
|
@@ -12,15 +12,16 @@ end
|
|
12
12
|
|
13
13
|
Then /^a validation error should say (.*)$/ do |error|
|
14
14
|
errors = {'there is no principal investigator' => 'There is no Principal Investigator selected. Please enter a Principal Investigator.',
|
15
|
-
'proposal questions were not answered' => 'Answer is required for Question 1 in group A. Proposal Questions.',
|
16
15
|
'sponsor deadline date not entered' => 'Sponsor deadline date has not been entered.',
|
17
16
|
'questionnaire must be completed' => %|You must complete the questionnaire "S2S FAT & Flat Questionnaire"|,
|
18
|
-
'you must complete the compliance question' => 'Answer is required for Question 1 in group B. Compliance.'
|
19
|
-
'the investigator needs to be certified' => 'The Investigators are not all certified. Please certify Dick COIAdmin.',
|
20
|
-
'the key person needs to be certified' => 'The Investigators are not all certified. Please certify Jeff Covey.'}
|
17
|
+
'you must complete the compliance question' => 'Answer is required for Question 1 in group B. Compliance.'}
|
21
18
|
on(ProposalActions).validation_errors_and_warnings.should include errors[error]
|
22
19
|
end
|
23
20
|
|
21
|
+
Then /^one of the errors should say the investigators aren't all certified$/ do
|
22
|
+
on(ProposalActions).validation_errors_and_warnings.should include "The Investigators are not all certified. Please certify #{@proposal.key_personnel[0].first_name} #{@proposal.key_personnel[0].last_name}."
|
23
|
+
end
|
24
|
+
|
24
25
|
Then /^one of the validation errors should say that (.*)$/ do |error|
|
25
26
|
errors = { 'an original proposal ID is needed'=>'Please provide an original institutional proposal ID that has been previously submitted to Grants.gov for a Change\/Corrected Application.',
|
26
27
|
'the prior award number is required'=>'require the sponsor\'s prior award number in the "sponsor proposal number."'}
|
@@ -37,11 +38,11 @@ When /^I? ?initiate a proposal with an un-certified (.*)$/ do |role|
|
|
37
38
|
@proposal.add_key_person role: @role, certified: false
|
38
39
|
end
|
39
40
|
|
40
|
-
Given /^I? ?initiate a proposal where the un-certified key person has certification questions$/ do
|
41
|
+
Given /^I? ?initiate a proposal where the un-certified key person has included certification questions$/ do
|
41
42
|
@role = 'Key Person'
|
42
43
|
@proposal = create ProposalDevelopmentObject
|
43
44
|
@proposal.add_key_person role: @role, key_person_role: 'default', certified: false
|
44
|
-
on(KeyPersonnel).include_certification_questions @proposal.key_personnel.
|
45
|
+
on(KeyPersonnel).include_certification_questions @proposal.key_personnel.uncertified_person(@role).full_name
|
45
46
|
end
|
46
47
|
|
47
48
|
Then /^checking the key personnel page shows an error that says (.*)$/ do |error|
|
@@ -1,10 +1,5 @@
|
|
1
1
|
When /^I? ?visit the proposal's (.*) page$/ do |page|
|
2
|
-
|
3
|
-
@proposal.open_document
|
4
|
-
# Be sure that the page name used in the scenario
|
5
|
-
# will be converted to the snake case value of
|
6
|
-
# the method that clicks on the proposal's page tab.
|
7
|
-
on(Proposal).send(snake_case(page))
|
2
|
+
@proposal.view page
|
8
3
|
end
|
9
4
|
|
10
5
|
Then /^the (.*) user is listed as an? (.*) in the proposal permissions$/ do |username, role|
|
@@ -23,20 +18,10 @@ Then /^the (.*) user can access the proposal$/ do |role|
|
|
23
18
|
on(Researcher).error_table.should_not be_present
|
24
19
|
end
|
25
20
|
|
26
|
-
Then /^
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
page.document_title.set @proposal.project_title
|
31
|
-
page.filter
|
32
|
-
end
|
33
|
-
on(ActionList).item_row(@proposal.document_id).should exist
|
34
|
-
end
|
35
|
-
|
36
|
-
And /^their proposal permissions allow them to only update the Abstracts and Attachments page$/ do
|
37
|
-
on(Proposal).abstracts_and_attachments
|
38
|
-
@proposal.close
|
39
|
-
on(Confirmation).yes
|
21
|
+
Then /^their proposal permissions do not allow them to edit budget details$/ do
|
22
|
+
expect{@proposal.edit(project_title: 'edit')}.not_to raise_error
|
23
|
+
expect{@budget_version.open_budget}.not_to raise_error
|
24
|
+
expect{@budget_version.edit(total_direct_cost_limit: '100')}.should raise_error(Watir::Exception::UnknownObjectException, /unable to locate element/)
|
40
25
|
end
|
41
26
|
|
42
27
|
And /^their proposal permissions allow them to edit all parts of the proposal$/ do
|
@@ -61,10 +46,6 @@ And /^their proposal permissions allow them to edit all parts of the proposal$/
|
|
61
46
|
page.proposal_actions
|
62
47
|
end
|
63
48
|
on ProposalActions do |page|
|
64
|
-
page.save_button.should be_present
|
65
|
-
page.questions
|
66
|
-
end
|
67
|
-
on Questions do |page|
|
68
49
|
page.save_button.should be_present
|
69
50
|
page.special_review
|
70
51
|
end
|
@@ -73,62 +54,67 @@ And /^their proposal permissions allow them to edit all parts of the proposal$/
|
|
73
54
|
end
|
74
55
|
end
|
75
56
|
|
76
|
-
And /^their proposal permissions allow them to
|
77
|
-
|
78
|
-
|
79
|
-
|
57
|
+
And /^their proposal permissions allow them to update the budget, not the narrative$/ do
|
58
|
+
expect{
|
59
|
+
@proposal.add_proposal_attachment file_name: 'test.pdf', type: 'Narrative'
|
60
|
+
}.should raise_error
|
61
|
+
expect{@proposal.add_budget_version}.not_to raise_error
|
80
62
|
end
|
81
63
|
|
82
64
|
And /^their proposal permissions allow them to only read the proposal$/ do
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
end
|
111
|
-
on SpecialReview do |page|
|
112
|
-
page.save_button.should_not be_present
|
113
|
-
end
|
65
|
+
on Proposal do |page|
|
66
|
+
page.save_button.should_not be_present
|
67
|
+
page.abstracts_and_attachments
|
68
|
+
end
|
69
|
+
on AbstractsAndAttachments do |page|
|
70
|
+
page.save_button.should_not be_present
|
71
|
+
page.custom_data
|
72
|
+
end
|
73
|
+
on PDCustomData do |page|
|
74
|
+
page.save_button.should_not be_present
|
75
|
+
page.key_personnel
|
76
|
+
end
|
77
|
+
on KeyPersonnel do |page|
|
78
|
+
page.save_button.should_not be_present
|
79
|
+
page.permissions
|
80
|
+
end
|
81
|
+
on Permissions do |page|
|
82
|
+
page.save_button.should_not be_present
|
83
|
+
page.proposal_actions
|
84
|
+
end
|
85
|
+
on ProposalActions do |page|
|
86
|
+
page.save_button.should_not be_present
|
87
|
+
page.special_review
|
88
|
+
end
|
89
|
+
on SpecialReview do |page|
|
90
|
+
page.save_button.should_not be_present
|
91
|
+
end
|
114
92
|
end
|
115
93
|
|
116
94
|
And /^their proposal permissions allow them to delete the proposal$/ do
|
117
|
-
|
118
|
-
|
95
|
+
on(Proposal).proposal_actions
|
96
|
+
lambda{@proposal.delete}.should_not raise_error
|
119
97
|
end
|
120
98
|
|
121
99
|
Then /^there should be an error message that says not to select other roles alongside aggregator$/ do
|
122
|
-
|
100
|
+
on(Roles).errors.should include 'Do not select other roles when Aggregator is selected.'
|
123
101
|
end
|
124
102
|
|
125
103
|
When /^I? ?attempt to add an additional proposal role to the (.*) user$/ do |system_role|
|
126
|
-
|
127
|
-
|
104
|
+
if system_role=='Proposal Creator'
|
105
|
+
role='aggregator'
|
106
|
+
else
|
107
|
+
role=system_role
|
108
|
+
end
|
109
|
+
role_to_add = ([:viewer, :budget_creator, :narrative_writer, :aggregator]-[StringFactory.damballa(role)]).sample
|
110
|
+
on(Permissions).edit_role(get(system_role).user_name)
|
128
111
|
on Roles do |page|
|
129
112
|
page.use_new_tab
|
130
|
-
page.send(
|
113
|
+
page.send(role_to_add).set
|
131
114
|
page.save
|
115
|
+
# Note: This step def does not go beyond clicking the Save button here
|
116
|
+
# because the expectation is that the Roles window will not close,
|
117
|
+
# but will instead display an error message.
|
132
118
|
end
|
133
119
|
end
|
134
120
|
|
@@ -21,14 +21,6 @@ When /^I? ?send a notification to the (.*) users?$/ do |role|
|
|
21
21
|
on(NotificationEditor).send_fyi
|
22
22
|
end
|
23
23
|
|
24
|
-
When /^I? ?recall the proposal for revisions$/ do
|
25
|
-
@proposal.recall :revisions
|
26
|
-
end
|
27
|
-
|
28
|
-
When /^I? ?recall and cancel the proposal$/ do
|
29
|
-
@proposal.recall :cancel
|
30
|
-
end
|
31
|
-
|
32
24
|
Then /^the proposal status should be (.*)$/ do |status|
|
33
25
|
@proposal.status.should == status
|
34
26
|
end
|
@@ -62,13 +54,6 @@ Then /^I can acknowledge the requested action list item$/ do
|
|
62
54
|
end
|
63
55
|
|
64
56
|
When /^I? ?submit the routed proposal to the sponsor$/ do
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
sleep 30
|
69
|
-
|
70
|
-
|
71
|
-
|
72
57
|
@proposal.submit :to_sponsor
|
73
58
|
end
|
74
59
|
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# a class instance variable based on the username
|
8
8
|
# 3) Logs that user in (if they're not already)...
|
9
9
|
Given /^I'm logged in with (.*)$/ do |username|
|
10
|
-
user = make_user username
|
10
|
+
user = make_user user: username
|
11
11
|
user.sign_in
|
12
12
|
end
|
13
13
|
|
@@ -26,7 +26,7 @@ end
|
|
26
26
|
# 2) Creates the user in the system if they don't exist already,
|
27
27
|
# by first logging in with the admin user
|
28
28
|
Given /^a user exists with the user name (.*)$/ do |username|
|
29
|
-
user = make_user username
|
29
|
+
user = make_user user: username
|
30
30
|
user.create unless user.exists?
|
31
31
|
end
|
32
32
|
|
@@ -36,7 +36,7 @@ end
|
|
36
36
|
# them if they don't exist in the system (again by first
|
37
37
|
# logging in with the admin user to do the creation).
|
38
38
|
Given /^a user exists with the system role: '(.*)'$/ do |role|
|
39
|
-
user =
|
39
|
+
user = make_user role: role
|
40
40
|
user.create unless user.exists?
|
41
41
|
end
|
42
42
|
|
@@ -46,7 +46,7 @@ end
|
|
46
46
|
|
47
47
|
Given /^users exist with the following roles: (.*)$/ do |roles|
|
48
48
|
roles.split(', ').each do |r|
|
49
|
-
user =
|
49
|
+
user = make_user role: r
|
50
50
|
user.create unless user.exists?
|
51
51
|
end
|
52
52
|
end
|
@@ -54,12 +54,12 @@ end
|
|
54
54
|
Given /^a user exists that can be a PI for Grants.gov proposals$/ do
|
55
55
|
# TODO: Make this more robust when we really know what it takes
|
56
56
|
# to be a grants.gov PI...
|
57
|
-
@grants_gov_pi = make_user UserObject::USERS.era_commons_user('grantsgov')
|
57
|
+
@grants_gov_pi = make_user user: UserObject::USERS.era_commons_user('grantsgov')
|
58
58
|
@grants_gov_pi.create unless @grants_gov_pi.exists?
|
59
59
|
end
|
60
60
|
|
61
61
|
Given /^an AOR user exists$/ do
|
62
62
|
# TODO: Using the quickstart user here is cheating. Fix this.
|
63
|
-
@aor = make_user 'quickstart'
|
63
|
+
@aor = make_user user: 'quickstart'
|
64
64
|
@aor.create unless @aor.exists?
|
65
65
|
end
|
data/features/support/env.rb
CHANGED
@@ -3,7 +3,7 @@ require 'yaml'
|
|
3
3
|
@config = YAML.load_file("#{File.dirname(__FILE__)}/config.yml")[:basic]
|
4
4
|
|
5
5
|
$base_url = @config[:url]
|
6
|
-
$file_folder =
|
6
|
+
$file_folder = "#{File.dirname(__FILE__)}/../../lib/resources/"
|
7
7
|
|
8
8
|
if @config[:browser]==:saucelabs
|
9
9
|
sauce = YAML.load_file("#{File.dirname(__FILE__)}/config.yml")[:saucelabs]
|
data/features/test.feature
CHANGED
@@ -10,4 +10,6 @@ Feature: Submitting Proposals via s2s to Grants.gov
|
|
10
10
|
Scenario: bal
|
11
11
|
Given I initiate a proposal with NIH as the sponsor
|
12
12
|
And create a budget version for the proposal
|
13
|
-
And add
|
13
|
+
And add an employee to the budget's project personnel
|
14
|
+
And add a non-employee to the budget's project personnel
|
15
|
+
And add a to-be-named person to the budget's project personnel
|
data/kuality-coeus.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'kuality-coeus'
|
3
|
-
s.version = '0.0.
|
3
|
+
s.version = '0.0.4'
|
4
4
|
s.summary = %q{rSmart's test framework for BDD testing of Kuali Coeus}
|
5
5
|
s.description = %q{This gem is used for creating test scripts for Kuali Coeus.}
|
6
6
|
s.files = Dir.glob("**/**/**")
|
data/lib/kuality-coeus.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'test-factory'
|
2
2
|
require 'date'
|
3
3
|
require 'yaml'
|
4
|
-
Dir["#{File.dirname(__FILE__)}/kuality-coeus/*.rb"].each {|f| require f }
|
5
|
-
Dir["#{File.dirname(__FILE__)}/kuality-coeus/page_objects/*.rb"].each {|f| require f }
|
6
|
-
Dir["#{File.dirname(__FILE__)}/kuality-coeus/page_objects/*/*.rb"].each {|f| require f }
|
7
|
-
Dir["#{File.dirname(__FILE__)}/kuality-coeus/data_objects/*.rb"].each {|f| require f }
|
8
|
-
Dir["#{File.dirname(__FILE__)}/kuality-coeus/data_objects/*/*.rb"].each {|f| require f }
|
4
|
+
Dir["#{File.dirname(__FILE__)}/kuality-coeus/*.rb"].alphabetize.each {|f| require f }
|
5
|
+
Dir["#{File.dirname(__FILE__)}/kuality-coeus/page_objects/*.rb"].alphabetize.each {|f| require f }
|
6
|
+
Dir["#{File.dirname(__FILE__)}/kuality-coeus/page_objects/*/*.rb"].alphabetize.each {|f| require f }
|
7
|
+
Dir["#{File.dirname(__FILE__)}/kuality-coeus/data_objects/*.rb"].alphabetize.each {|f| require f }
|
8
|
+
Dir["#{File.dirname(__FILE__)}/kuality-coeus/data_objects/*/*.rb"].alphabetize.each {|f| require f }
|
9
9
|
|
10
10
|
# Initialize this class at the start of your test cases to
|
11
11
|
# open the specified test browser at the specified welcome page URL.
|