kuality-coeus 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +8 -8
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +2 -2
  4. data/features/grants_gov/grants_gov_forms/code_and_form_mapping.feature +1 -1
  5. data/features/grants_gov/grants_gov_forms/s2s_questionnaire.feature +8 -12
  6. data/features/grants_gov/s2s_submission.feature +7 -4
  7. data/features/grants_gov/s2s_validation.feature +3 -3
  8. data/features/proposal_development/create_proposal.feature +2 -9
  9. data/features/proposal_development/key_personnel_validations.feature +1 -7
  10. data/features/proposal_development/proposal_permissions.feature +1 -28
  11. data/features/proposal_development/proposal_workflow.feature +1 -7
  12. data/features/roles/roles.feature +14 -0
  13. data/features/step_definitions/awards/create_award.rb +15 -0
  14. data/features/step_definitions/budget_versions/budget_versions.rb +8 -1
  15. data/features/step_definitions/grants_gov/s2s_submission.rb +2 -2
  16. data/features/step_definitions/groups.rb +13 -0
  17. data/features/step_definitions/maintenance.rb +7 -0
  18. data/features/step_definitions/proposal_development/budget_versions.rb +98 -0
  19. data/features/step_definitions/proposal_development/edit_proposal.rb +4 -0
  20. data/features/step_definitions/proposal_development/key_personnel_validations.rb +7 -7
  21. data/features/step_definitions/proposal_development/proposal_permissions.rb +20 -2
  22. data/features/step_definitions/proposal_logs/create_proposal_log.rb +13 -0
  23. data/features/step_definitions/protocol_development/irb_create_protocol.rb +28 -0
  24. data/features/step_definitions/roles.rb +17 -0
  25. data/features/step_definitions/users.rb +42 -7
  26. data/features/support/env.rb +16 -1
  27. data/kuality-coeus.gemspec +2 -2
  28. data/lib/kuality-coeus.rb +1 -0
  29. data/lib/kuality-coeus/data_objects/award/award.rb +13 -14
  30. data/lib/kuality-coeus/data_objects/award/award_transaction.rb +3 -1
  31. data/lib/kuality-coeus/data_objects/budget/budget_periods.rb +17 -3
  32. data/lib/kuality-coeus/data_objects/budget/budget_versions.rb +9 -12
  33. data/lib/kuality-coeus/data_objects/budget/cost_sharing.rb +56 -0
  34. data/lib/kuality-coeus/data_objects/budget/personnel.rb +3 -3
  35. data/lib/kuality-coeus/data_objects/budget/subaward_budget.rb +2 -2
  36. data/lib/kuality-coeus/data_objects/committee_document/committee_document.rb +2 -2
  37. data/lib/kuality-coeus/data_objects/committee_document/committee_members.rb +4 -2
  38. data/lib/kuality-coeus/data_objects/committee_document/committee_schedule.rb +3 -1
  39. data/lib/kuality-coeus/data_objects/committee_document/member_roles.rb +3 -1
  40. data/lib/kuality-coeus/data_objects/compliance_and_protocol/irb_protocol_development.rb +86 -0
  41. data/lib/kuality-coeus/data_objects/identity/group.rb +22 -8
  42. data/lib/kuality-coeus/{page_objects/identity/assignee.rb → data_objects/identity/group_assignee.rb} +4 -4
  43. data/lib/kuality-coeus/data_objects/identity/role.rb +124 -0
  44. data/lib/kuality-coeus/data_objects/identity/role_assignee.rb +43 -0
  45. data/lib/kuality-coeus/data_objects/institutional_proposal/institutional_proposal.rb +87 -4
  46. data/lib/kuality-coeus/data_objects/institutional_proposal/ip_cost_sharing.rb +61 -0
  47. data/lib/kuality-coeus/data_objects/institutional_proposal/project_personnel.rb +35 -0
  48. data/lib/kuality-coeus/data_objects/institutional_proposal/unrecovered_fa.rb +64 -0
  49. data/lib/kuality-coeus/data_objects/maintenance/budget_column.rb +89 -0
  50. data/lib/kuality-coeus/data_objects/navigation.rb +12 -0
  51. data/lib/kuality-coeus/data_objects/proposal_development/degrees.rb +2 -2
  52. data/lib/kuality-coeus/data_objects/proposal_development/key_personnel.rb +6 -5
  53. data/lib/kuality-coeus/data_objects/proposal_development/personnel_attachments.rb +3 -3
  54. data/lib/kuality-coeus/data_objects/proposal_development/proposal_attachments.rb +3 -3
  55. data/lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb +28 -34
  56. data/lib/kuality-coeus/data_objects/proposal_development/special_review.rb +3 -1
  57. data/lib/kuality-coeus/data_objects/proposal_log/proposal_log.rb +73 -0
  58. data/lib/kuality-coeus/data_objects/rates/institute_rate.rb +1 -0
  59. data/lib/kuality-coeus/data_objects/{user.rb → user/user.rb} +164 -146
  60. data/lib/kuality-coeus/data_objects/user/user_group.rb +36 -0
  61. data/lib/kuality-coeus/data_objects/user/user_role.rb +45 -0
  62. data/lib/kuality-coeus/page_objects/000_base_page.rb +27 -6
  63. data/lib/kuality-coeus/page_objects/budget/distribution_income.rb +14 -0
  64. data/lib/kuality-coeus/page_objects/central_admin.rb +2 -3
  65. data/lib/kuality-coeus/page_objects/identity/group.rb +2 -2
  66. data/lib/kuality-coeus/page_objects/identity/person.rb +7 -3
  67. data/lib/kuality-coeus/page_objects/identity/role.rb +38 -0
  68. data/lib/kuality-coeus/page_objects/institute_rates_maintenance.rb +18 -0
  69. data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal.rb +2 -0
  70. data/lib/kuality-coeus/page_objects/kc_protocol.rb +2 -0
  71. data/lib/kuality-coeus/page_objects/login.rb +1 -1
  72. data/lib/kuality-coeus/page_objects/lookup_pages/000_lookups.rb +1 -0
  73. data/lib/kuality-coeus/page_objects/lookup_pages/award_lookup.rb +5 -0
  74. data/lib/kuality-coeus/page_objects/lookup_pages/award_status_lookup.rb +5 -0
  75. data/lib/kuality-coeus/page_objects/lookup_pages/budget_columns_to_alter_lookup.rb +7 -0
  76. data/lib/kuality-coeus/page_objects/lookup_pages/campus_lookup.rb +10 -0
  77. data/lib/kuality-coeus/page_objects/lookup_pages/campus_type_lookup.rb +6 -0
  78. data/lib/kuality-coeus/page_objects/lookup_pages/group_lookup.rb +2 -0
  79. data/lib/kuality-coeus/page_objects/lookup_pages/institutional_proposal_lookup.rb +9 -0
  80. data/lib/kuality-coeus/page_objects/lookup_pages/institutional_proposal_person_lookup.rb +3 -0
  81. data/lib/kuality-coeus/page_objects/lookup_pages/kim_type_lookup.rb +6 -0
  82. data/lib/kuality-coeus/page_objects/lookup_pages/proposal_development_document_lookup.rb +5 -0
  83. data/lib/kuality-coeus/page_objects/lookup_pages/proposal_log_lookup.rb +5 -0
  84. data/lib/kuality-coeus/page_objects/lookup_pages/proposal_status_lookup.rb +5 -0
  85. data/lib/kuality-coeus/page_objects/lookup_pages/proposal_type_lookup.rb +5 -0
  86. data/lib/kuality-coeus/page_objects/lookup_pages/research_areas_lookup.rb +5 -0
  87. data/lib/kuality-coeus/page_objects/lookup_pages/role_lookup.rb +2 -2
  88. data/lib/kuality-coeus/page_objects/lookup_pages/sponsor_type_lookup.rb +6 -0
  89. data/lib/kuality-coeus/page_objects/lookup_pages/unit_lookup.rb +2 -0
  90. data/lib/kuality-coeus/page_objects/maintenance.rb +1 -1
  91. data/lib/kuality-coeus/page_objects/maintenance/budget_column_to_alter.rb +12 -0
  92. data/lib/kuality-coeus/page_objects/proposal_development/proposal_actions.rb +9 -0
  93. data/lib/kuality-coeus/page_objects/proposal_development/s2s.rb +1 -1
  94. data/lib/kuality-coeus/page_objects/proposal_log/proposal_log.rb +23 -0
  95. data/lib/kuality-coeus/page_objects/protocol/protocol_actions.rb +7 -0
  96. data/lib/kuality-coeus/page_objects/protocol/protocol_overview.rb +55 -0
  97. data/lib/kuality-coeus/page_objects/researcher.rb +1 -1
  98. data/lib/kuality-coeus/page_objects/system_admin.rb +1 -1
  99. data/lib/kuality-coeus/utilities.rb +8 -1
  100. metadata +45 -10
  101. data/features/proposal_development/special_review_validations.feature +0 -12
  102. data/features/step_definitions/delete_proposals.rb +0 -9
  103. data/features/step_definitions/test.rb +0 -12
  104. data/features/test.feature +0 -8
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzNjNDI3MmRjZjFkNDc3MjNhNmNkOTFmYWE1MjdjNTM2MGZkNDA5ZA==
4
+ MmI0OGVlNGE1YzE0MDJiYzFkMjBjMzBhZWE5NmIwMDExNGIxNjRlYg==
5
5
  data.tar.gz: !binary |-
6
- ZDlhYzIzYjllYTc1ZWI2MTcwYTBhNzZjZGNkOTgzMmM1OWRiYWRmOA==
6
+ YmVhZTk2Y2M3YjI4MmU4MGJjZDQ5MzJlZTQ4ZTcwMzNiMDI5MTQ5Mw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YjBhZjM5NzRhMTJlNDlhYWEzMTVjNWIwOTExOTU2MjJlMTgxMGNiNDk5MGMw
10
- NzYwYjExZjcxZTlkNjQ2OTQzODkxMjQ4YTkyNGZiOTNkZDA4MGJhNjY5OGYx
11
- ZmVlZDY5MjVlMjVjMjAyM2NlZGRjM2UxOTI4NjY0YmJkZjk1ZjA=
9
+ MDc2OTIxMTQwODBlYmE0ODUxNTkyOGYxMjRmOWJhOTIzODFhOWRjMmViMmQx
10
+ NTk5MjgzNmM0N2EwZjdmOWRkMWExMTc3MjM0MzVkZWU5YmU3MmQ1Mjg3NjE1
11
+ ZTg5NWZmOTVlNTIwZWIwNmNhMmJjZGM5NWE4YmE4NzUxMTUxYzc=
12
12
  data.tar.gz: !binary |-
13
- NWE0MDkxODJmNzgxODNiN2VjOTA0MGE2OWQ4YzIzOWMyODRlMTJiOWQ5YTFj
14
- YjYyMzAwYTM2NjUwZTg0NTU2NDQxMGJiZmE5YTY4NWE4NmM5ZjI4NGJmZmJj
15
- NzcwNzE3NDQ2YTgyYWIxMzY3NWY1NzRiMzA0ZjIyMDc0M2Q4Nzc=
13
+ YTkzNGFmOWE4YjFiNzlkNmRiMGNhYWViMDc5YjkwMTcxYjI3NjA4ZDNkZDJh
14
+ NDAwOTY2ZjQ5MjEzOWNmYTQ4Y2YxNDIxMjRiMDM3MzUzNDM3MTQ0ODZlODRh
15
+ ZjNiMTU1OThmZDUxMjBkODUxYjJjYmE0MDBjMzc0M2IzOTA1YzQ=
data/Gemfile CHANGED
@@ -2,5 +2,5 @@ source "http://rubygems.org"
2
2
 
3
3
  gem "rspec"
4
4
  gem "cucumber"
5
- gem "test-factory", ">=0.1.3"
5
+ gem "test-factory", ">=0.3.1"
6
6
  gem "watir-webdriver", ">=0.6.4"
data/Gemfile.lock CHANGED
@@ -30,7 +30,7 @@ GEM
30
30
  multi_json (~> 1.0)
31
31
  rubyzip
32
32
  websocket (~> 1.0.4)
33
- test-factory (0.2.9)
33
+ test-factory (0.3.1)
34
34
  watir-webdriver (>= 0.6.2)
35
35
  watir-webdriver (0.6.4)
36
36
  selenium-webdriver (>= 2.18.0)
@@ -42,5 +42,5 @@ PLATFORMS
42
42
  DEPENDENCIES
43
43
  cucumber
44
44
  rspec
45
- test-factory (>= 0.1.3)
45
+ test-factory (>= 0.3.1)
46
46
  watir-webdriver (>= 0.6.4)
@@ -11,7 +11,7 @@ Feature: Opportunity Code and S2S Form Mapping
11
11
  Given a user exists with the system role: 'Proposal Creator'
12
12
  And I log in with the Proposal Creator user
13
13
  And initiate a proposal with NIH as the sponsor
14
- @test
14
+
15
15
  Scenario Outline: Selecting opportunities brings different forms
16
16
  Given I initiate a proposal with NIH as the sponsor
17
17
  When I add the Grants.Gov opportunity id of <Opportunity> to the proposal
@@ -1,20 +1,16 @@
1
1
  Feature: S2S Questionnaire Population and Functionality
2
2
 
3
- Background: Logged in with a proposal creator; have other necessary user
3
+ As a proposal creator, I want to create proposals with the relevant set of
4
+ questions available to be answered.
5
+
6
+ Background: Logged in with a proposal creator; have other necessary users
4
7
  Given a user exists with the system role: 'Proposal Creator'
5
8
  And a user exists that can be a PI for Grants.gov proposals
6
9
  And an AOR user exists
7
10
  And I log in with the Proposal Creator user
8
11
 
9
12
  Scenario: Initiate a proposal with PHS forms attached
10
- Given I initiate a proposal with NIH as the sponsor
11
- And add the Grants.Gov opportunity id of PA-B2-ALL to the proposal
12
- When I attach the PHS training and fellowship forms to the proposal
13
- Then the PHS training and fellowship questionnaires should appear in the proposal
14
-
15
- Scenario: Attach the PHS Fellowship and Training forms, and complete the questionnaires
16
- Given I initiate a proposal with NIH as the sponsor
17
- And add the Grants.Gov opportunity id of PA-B2-ALL to the proposal
18
- When I attach the PHS training and fellowship forms to the proposal
19
- And complete their respective questionnaires
20
- Then the questionnaire titles should indicate that the questionnaires have been completed
13
+ Given I initiate a proposal with NIH as the sponsor
14
+ And add the Grants.Gov opportunity id of PA-B2-ALL to the proposal
15
+ When I attach the PHS training and fellowship forms to the proposal
16
+ Then the PHS training and fellowship questionnaires should appear in the proposal
@@ -15,12 +15,12 @@ Feature: Submitting Proposals via s2s to Grants.gov
15
15
  And add the <Provider> user as the proposal's PI
16
16
  And set valid credit splits for the proposal
17
17
  And add and mark complete all the required attachments
18
- And create, finalize, and mark complete a budget version for the proposal
18
+ And create a final and complete budget version for the proposal
19
19
  And complete the required custom fields on the proposal
20
20
  And answer the S2S questions
21
21
  And submit the proposal
22
- And log in with the AOR user
23
- When I submit the proposal to S2S
22
+ When I log in with the AOR user
23
+ And submit the proposal to S2S
24
24
  Then the S2S tab's submission details will say the proposal is submitted
25
25
  And within a couple minutes the submission status will be updated
26
26
 
@@ -30,4 +30,7 @@ Feature: Submitting Proposals via s2s to Grants.gov
30
30
  | Grants.Gov | NIH | RR-FORMFAMILY-009-2010 |
31
31
  | Grants.Gov | DOD-Agency | CAL-TEST-DOD2 |
32
32
  | Grants.Gov | DOD-Agency | CSS-120809-SF424RR-V12 |
33
- | Grants.Gov | NASA - Washington | RR-FORMFAMILY-004-2010 |
33
+ | Grants.Gov | NASA - Washington | RR-FORMFAMILY-004-2010 |
34
+
35
+
36
+
@@ -1,7 +1,7 @@
1
1
  Feature: Validating content of s2s proposals
2
2
 
3
- As someone who submits proposals to the federal government for grant money
4
- I want to ensure the proposals are free of errors prior to submission
3
+ As a Proposal creator for federal grant money, I want to ensure my
4
+ proposals are free of errors, prior to submission
5
5
 
6
6
  Background: Logged in with a proposal creator; initiate a proposal for grants.gov
7
7
  Given a user exists with the system role: 'Proposal Creator'
@@ -33,4 +33,4 @@ Feature: Validating content of s2s proposals
33
33
  Scenario: Resubmission proposal type selected inappropriately
34
34
  Given I set the proposal type to either 'Resubmission', 'Renewal', or 'Continuation'
35
35
  When I activate a validation check
36
- Then one of the validation errors should say that the prior award number is required
36
+ Then one of the validation errors should say that the prior award number is required
@@ -1,4 +1,4 @@
1
- Feature: Creating proposals
1
+ Feature: Creating a proposal development document
2
2
 
3
3
  As a researcher I want the ability to create a proposal,
4
4
  so that I can get funding for my research.
@@ -6,7 +6,7 @@ Feature: Creating proposals
6
6
  Background: Logged in with a proposal creator user
7
7
  Given a user exists with the system role: 'Proposal Creator'
8
8
  And I log in with the Proposal Creator user
9
- @test
9
+
10
10
  Scenario: Attempt to save a proposal missing a required field
11
11
  When I initiate a proposal but miss a required field
12
12
  Then I should see an error that says the field is required
@@ -18,10 +18,3 @@ Feature: Creating proposals
18
18
  Scenario: Successful initiation of proposal with federal sponsor type
19
19
  When I initiate a proposal with a 'Federal' sponsor type
20
20
  Then The S2S tab should become available
21
-
22
- Scenario: Successful submission of a Private Profit proposal document into routing
23
- When I complete a valid simple proposal for a 'Private Profit' organization
24
- And submit the proposal
25
- Then The proposal should immediately have a status of 'Approval Pending'
26
- And The proposal route log's 'Actions Taken' should include 'COMPLETED'
27
- And The proposal's 'Future Action Requests' should include 'PENDING APPROVE' for the principal investigator
@@ -33,10 +33,4 @@ Feature: Key Personnel Validations
33
33
 
34
34
  Scenario: Error when adding a key person with an invalid unit
35
35
  When I add a key person with an invalid unit type
36
- Then a key personnel error should say to select a valid unit
37
-
38
- Scenario: Error when adding the same user as a PI and Co-Investigator
39
- Given a user exists with the system role: 'Unassigned'
40
- When I add the Unassigned user as a Principal Investigator to the key personnel proposal roles
41
- And I add the Unassigned user as a Co-Investigator to the key personnel proposal roles
42
- Then there should be an error that says the Unassigned user already holds investigator role
36
+ Then a key personnel error should say to select a valid unit
@@ -46,31 +46,4 @@ Feature: Permissions in a Proposal
46
46
  | Narrative Writer |
47
47
  | Aggregator |
48
48
  | approver |
49
- | Delete Proposal |
50
-
51
- Scenario Outline: Users who are assigned the Aggregator role cannot be assigned additional roles
52
- Given a user exists with the system role: '<Role>'
53
- And I assign the <Role> user as an aggregator in the proposal permissions
54
- When I attempt to add an additional proposal role to the <Role> user
55
- Then there should be an error message that says not to select other roles alongside aggregator
56
-
57
- Examples:
58
- | Role |
59
- | Unassigned |
60
- | Proposal Creator |
61
-
62
- Scenario Outline: Users with the appropriate permissions can edit proposals that have been recalled for revisions
63
- Given a user exists with the system role: 'Unassigned'
64
- And assign the Unassigned user as a <Role> in the proposal permissions
65
- And complete the proposal
66
- And submit the proposal
67
- When I recall the proposal
68
- Then the Unassigned user can access the proposal
69
- And their proposal permissions allow them to <Permissions>
70
-
71
- Examples:
72
- | Role | Permissions |
73
- | Aggregator | edit all parts of the proposal |
74
- | Budget Creator | only update the budget |
75
- | Delete Proposal | delete the proposal |
76
- | Viewer | only read the proposal |
49
+ | Delete Proposal |
@@ -4,9 +4,6 @@ Feature: Proposal Workflows and Routing
4
4
  take actions against a proposal that will navigate it through various routes
5
5
  in workflow.
6
6
 
7
- #=================
8
- # Proposal Actions
9
- #=================
10
7
  Scenario Outline: Proposal is successfully routed to PI for action
11
8
  Given users exist with the following roles: OSPApprover, Proposal Creator, Unassigned
12
9
  And I log in with the Proposal Creator user
@@ -55,7 +52,7 @@ Feature: Proposal Workflows and Routing
55
52
  And I submit a new development proposal into routing
56
53
  When I blanket approve the proposal
57
54
  Then the proposal status should be Approval Granted
58
- @test
55
+
59
56
  Scenario: Aggregator successfully recalls a routed proposal
60
57
  Given a user exists with the system role: 'Proposal Creator'
61
58
  And I log in with the Proposal Creator user
@@ -63,9 +60,6 @@ Feature: Proposal Workflows and Routing
63
60
  When I recall the proposal
64
61
  Then the proposal status should be Revisions Requested
65
62
 
66
- #=================
67
- # Notifications
68
- #=================
69
63
  Scenario: Successful delivery of an FYI from a development proposal
70
64
  Given users exist with the following roles: Proposal Creator, OSPApprover
71
65
  And I log in with the Proposal Creator user
@@ -0,0 +1,14 @@
1
+ Feature: Roles Administration
2
+
3
+ As an administrator, I want to be able to set up
4
+ roles in the system, so that I can control what
5
+ the system users can do.
6
+
7
+ Scenario: Adding an unassigned user to a Group in a Proposal Aggregator Role
8
+ Given I'm in as the admin
9
+ And I create a group
10
+ And create an 'unassigned' user
11
+ And create a role with permission to create proposals
12
+ And add the group to the role
13
+ When I add the user to the group
14
+ Then the user should be able to create a proposal
@@ -1,3 +1,18 @@
1
1
  When /^I? ?create an award for the institutional_proposal$/ do
2
2
  @award = create AwardObject, funding_proposal: @institutional_proposal.proposal_number
3
+ end
4
+
5
+ When /^I? ?initiate an award document$/ do
6
+ @award = create AwardObject
7
+ end
8
+
9
+ When /^I ? ?initiate an award document with a missing required field$/ do
10
+ @required_field = ['Description', 'Transaction Type', 'Award Status', 'Award Title',
11
+ 'Activity Type', 'Award Type', 'Project Start Date', 'Project End Date',
12
+ 'Lead Unit', 'Obligation Start Date', 'Obligation End Date',
13
+ 'Anticipated Amount', 'Obligated Amount', 'Transactions'
14
+ ].sample
15
+ @required_field=~/Type/ ? value='select' : value=''
16
+ field = snake_case(@required_field)
17
+ @proposal = create AwardObject, field=>value
3
18
  end
@@ -17,7 +17,7 @@ When /^correcting the Budget Version date will remove the warning$/ do
17
17
  on(Parameters).warnings.size.should be 0
18
18
  end
19
19
 
20
- Given /^I? ?create, finalize, and mark complete a budget version for the proposal$/ do
20
+ Given /^I? ?create a final and complete budget version for the proposal$/ do
21
21
  @proposal.add_budget_version status: 'Complete', final: :set
22
22
  end
23
23
 
@@ -100,3 +100,10 @@ end
100
100
  Then /^I see an error that only one version can be final$/ do
101
101
  on(BudgetVersions).errors.should include 'Only one Budget Version can be marked "Final".'
102
102
  end
103
+
104
+ When /^I? ?create a budget version with cost sharing for the proposal$/ do
105
+ @proposal.add_budget_version
106
+ @budget_version = @proposal.budget_versions[0]
107
+ @budget_version.edit_period(1, cost_sharing: random_dollar_value(1000000).to_f)
108
+ @budget_version.budget_periods.period(1).cost_sharing_distribution_list[0].edit source_account: random_alphanums
109
+ end
@@ -12,14 +12,14 @@ end
12
12
  Then /^within a couple minutes the submission status will be updated$/ do
13
13
  on S2S do |page|
14
14
  x = 0
15
- while page.submission_status=='Submitted to S2S'
15
+ while page.s2s_submission_status=='Submitted to S2S'
16
16
  sleep 5
17
17
  page.refresh_submission_details
18
18
  x += 1
19
19
  break if x == 24
20
20
  end
21
21
  # We don't care what it is. Only that it's updated...
22
- page.submission_status.should_not == 'Submitted to S2S'
22
+ page.s2s_submission_status.should_not == 'Submitted to S2S'
23
23
  end
24
24
  end
25
25
 
@@ -0,0 +1,13 @@
1
+ When /^I? ?create a group$/ do
2
+ @group = create GroupObject
3
+ end
4
+
5
+ When /^I? ?add the user to the group$/ do
6
+ # Note that this step is assuming you're adding the user that was
7
+ # last created in the scenario...
8
+ @group.add_assignee member_identifier: $users[-1].principal_id
9
+ end
10
+
11
+ Given /^I? ?add the group to the user$/ do
12
+ $users[-1].add_group id: @group.id
13
+ end
@@ -0,0 +1,7 @@
1
+ Given /^the Budget Column's '(.*)' has a lookup for '(.*)' that returns '(.*)'$/ do |name, look, ret|
2
+ create BudgetColumnObject, name: name, lookup_argument: look, lookup_return: ret
3
+ end
4
+
5
+ Given /^the Budget Editable Column's include '(.*)'$/ do |column|
6
+ create BudgetColumnObject, name: column
7
+ end
@@ -0,0 +1,98 @@
1
+ When /^I? ?create a budget version for the proposal$/ do
2
+ @proposal.add_budget_version
3
+ @budget_version = @proposal.budget_versions[0]
4
+ end
5
+
6
+ Then /^opening the Budget Version will display a warning about the date change$/ do
7
+ @budget_version.open_budget
8
+ on(Parameters).warnings.should include 'The Project Start and/or End Dates have changed from the previous version of this budget. Please update the Project Start and/or End Dates.'
9
+ end
10
+
11
+ When /^correcting the Budget Version date will remove the warning$/ do
12
+ @budget_version.default_periods
13
+ on(Parameters).warnings.size.should be 0
14
+ end
15
+
16
+ Given /^I? ?create, finalize, and mark complete a budget version for the proposal$/ do
17
+ @proposal.add_budget_version(status: 'Complete', final: :set)
18
+ end
19
+
20
+ When /^I? ?copy the budget version \(all periods\)$/ do
21
+ @copied_budget_version = @proposal.budget_versions.copy_all_periods(@budget_version.name, random_alphanums)
22
+ end
23
+
24
+ When /^I? ?enter dollar amounts for all the budget periods$/ do
25
+ @budget_version.budget_periods.each do |p|
26
+ randomized_values = {}
27
+ p.dollar_fields[1..-1].each { |f| randomized_values.store(f, random_dollar_value(500000)) }
28
+ p.edit randomized_values
29
+ end
30
+ end
31
+
32
+ Then /^the copied budget's values are all as expected$/ do
33
+ @copied_budget_version.open_budget
34
+ @copied_budget_version.budget_periods.each do |period|
35
+ on Parameters do |page|
36
+ page.start_date_period(period.number).value.should==period.start_date
37
+ page.end_date_period(period.number).value.should==period.end_date
38
+ page.total_sponsor_cost_period(period.number).value.should==(period.direct_cost+period.f_and_a_cost).commas
39
+ page.direct_cost_period(period.number).value.should==period.direct_cost.commas
40
+ page.fa_cost_period(period.number).value.should==period.f_and_a_cost.commas
41
+ page.unrecovered_fa_period(period.number).value.should==period.unrecovered_f_and_a.commas
42
+ page.cost_sharing_period(period.number).value.should==period.cost_sharing.commas
43
+ page.cost_limit_period(period.number).value.should==period.cost_limit.commas
44
+ page.direct_cost_limit_period(period.number).value.should==period.direct_cost_limit.commas
45
+ end
46
+ end
47
+ end
48
+
49
+ When /^I? ?delete one of the budget periods$/ do
50
+ @budget_version.delete_period(rand(@budget_version.budget_periods.size)+1)
51
+ end
52
+
53
+ When /^I? ?change the date range for one of the periods$/ do
54
+ period = @budget_version.budget_periods.sample
55
+ new_start_date = '03'+period.start_date[/\/\d+\/\d+$/]
56
+ new_end_date = '10'+period.end_date[/\/\d+\/\d+$/]
57
+ period.edit start_date: new_start_date, end_date: new_end_date
58
+ on(Confirmation).yes
59
+ end
60
+
61
+ When /^I? ?select the default periods for the budget version$/ do
62
+ @budget_version.default_periods
63
+ end
64
+
65
+ Then /^all budget periods get recreated, zeroed, and given default date ranges$/ do
66
+ default_start_dates={1=>@proposal.project_start_date}
67
+ default_end_dates={@years=>@proposal.project_end_date}
68
+ 1.upto(@years-1) do |i|
69
+ default_start_dates.store(i+1, "01/01/#{@proposal.project_start_date[/\d+$/].to_i+i}")
70
+ default_end_dates.store(@years-i, "12/31/#{@proposal.project_end_date[/\d+$/].to_i-i}")
71
+ end
72
+ on(Parameters).period_count.should==@years
73
+ on Parameters do |page|
74
+ 1.upto(@years) do |x|
75
+ page.start_date_period(x).value.should==default_start_dates[x]
76
+ page.end_date_period(x).value.should==default_end_dates[x]
77
+ page.total_sponsor_cost_period(x).value.should=='0.00'
78
+ page.direct_cost_period(x).value.should=='0.00'
79
+ page.fa_cost_period(x).value.should=='0.00'
80
+ page.unrecovered_fa_period(x).value.should=='0.00'
81
+ page.cost_sharing_period(x).value.should=='0.00'
82
+ page.cost_limit_period(x).value.should=='0.00'
83
+ page.direct_cost_limit_period(x).value.should=='0.00'
84
+ end
85
+ end
86
+ end
87
+
88
+ When /^I? ?finalize the budget version$/ do
89
+ @budget_version.edit final: :set
90
+ end
91
+
92
+ When /^I? ?mark the budget version complete$/ do
93
+ @budget_version.edit status: 'Complete'
94
+ end
95
+
96
+ Then /^I see an error that only one version can be final$/ do
97
+ on(BudgetVersions).errors.should include 'Only one Budget Version can be marked "Final".'
98
+ end
@@ -2,6 +2,10 @@ When /^I? ?recall the proposal$/ do
2
2
  @proposal.recall
3
3
  end
4
4
 
5
+ When /^I? ?reject the proposal$/ do
6
+ @proposal.reject
7
+ end
8
+
5
9
  When /^I? ?complete a valid simple proposal for a '(.*)' organization$/ do |org|
6
10
  @proposal = create ProposalDevelopmentObject, sponsor_type_code: org
7
11
  @proposal.add_principal_investigator
@@ -6,7 +6,10 @@ end
6
6
 
7
7
  When /^I? ?add (.*) as a Key Person with a role of (.*)$/ do |user_name, kp_role|
8
8
  user = get(user_name)
9
- @proposal.add_key_person first_name: user.first_name, last_name: user.last_name, role: 'Key Person', key_person_role: kp_role
9
+ @proposal.add_key_person first_name: user.first_name,
10
+ last_name: user.last_name,
11
+ role: 'Key Person',
12
+ key_person_role: kp_role
10
13
  end
11
14
 
12
15
  And /^I? ?add a (.*) with a (.*) credit split of (.*)$/ do |role, cs_type, amount|
@@ -28,7 +31,9 @@ When /^I? ?add a co-investigator without a unit$/ do
28
31
  end
29
32
 
30
33
  When /^I? ?add a key person with an invalid unit type$/ do
31
- @proposal.add_key_person role: 'Key Person', key_person_role: 'king', units: [{number: 'invalid'}]
34
+ @proposal.add_key_person role: 'Key Person',
35
+ key_person_role: 'king',
36
+ units: [{number: 'invalid'}]
32
37
  end
33
38
 
34
39
  Then /^a key personnel error should say (.*)$/ do |error|
@@ -73,11 +78,6 @@ end
73
78
  When /^the (.*) user approves the proposal$/ do |role|
74
79
  get(role).sign_in
75
80
  @proposal.open_proposal
76
-
77
-
78
- sleep 20
79
-
80
-
81
81
  on(ProposalSummary).approve
82
82
  on(Confirmation).yes
83
83
  end