Skip to content

Commit

Permalink
Merge pull request #1706 from DFE-Digital/fix/correct-project-policy
Browse files Browse the repository at this point in the history
Fix project policy
  • Loading branch information
lozette committed Jun 28, 2024
2 parents 4cec6a0 + 831c2b6 commit 6a76b38
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 30 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
minister name and date of decision.
- Revoking DAO ends a project

### Fixed

- The change conversion date and change transfer date buttons only appear on the
appropriate project type.

## [Release-76][release-76]

### Added
Expand Down
4 changes: 4 additions & 0 deletions app/policies/project_policy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,14 @@ def change_significant_date?
end

def change_conversion_date?
return false unless @project.is_a?(Conversion::Project)

change_significant_date?
end

def change_transfer_date?
return false unless @project.is_a?(Transfer::Project)

change_significant_date?
end

Expand Down
51 changes: 21 additions & 30 deletions spec/policies/project_policy_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,41 +68,32 @@
end
end

permissions :change_conversion_date?, :change_transfer_date? do
context "when the conversion date is not provisional" do
it "grants access if project is assigned to the same user" do
expect(subject).to permit(application_user, build(:conversion_project, assigned_to: application_user, conversion_date_provisional: false))
end

it "grants access if the user is service support" do
expect(subject).to permit(build(:user, :service_support), build(:conversion_project, assigned_to: application_user, conversion_date_provisional: false))
end

it "grants access if the project is complete and the user is service support" do
expect(subject).to permit(build(:user, :service_support), build(:conversion_project, completed_at: Date.yesterday, assigned_to: application_user, conversion_date_provisional: false))
end

it "denies access if the project is assigned to another user" do
expect(subject).not_to permit(application_user, build(:conversion_project, assigned_to: build(:user), conversion_date_provisional: false))
end
permissions :change_significant_date? do
it "grants access when the significant date is not provisional" do
expect(subject).to permit(application_user, build(:conversion_project, assigned_to: application_user, conversion_date_provisional: false))
end
it "denies access when the significant date is provisional" do
expect(subject).not_to permit(application_user, build(:conversion_project, assigned_to: application_user, conversion_date_provisional: true))
end
end

it "denies access if project is assigned to nil" do
expect(subject).not_to permit(application_user, build(:conversion_project, assigned_to: nil, conversion_date_provisional: false))
end
permissions :change_conversion_date? do
it "grants access when the project is a conversion" do
expect(subject).to permit(application_user, build(:conversion_project, assigned_to: application_user, conversion_date_provisional: false))
end

context "when the conversion date is provisional" do
it "denies access if project is assigned to the same user" do
expect(subject).not_to permit(application_user, build(:conversion_project, assigned_to: application_user, conversion_date_provisional: true))
end
it "denies access when the project is a transfer" do
expect(subject).not_to permit(application_user, build(:transfer_project, assigned_to: application_user, transfer_date_provisional: false))
end
end

it "denies access if the project is assigned to another user" do
expect(subject).not_to permit(application_user, build(:conversion_project, assigned_to: build(:user), conversion_date_provisional: true))
end
permissions :change_transfer_date? do
it "grants access when the project is a transfer" do
expect(subject).to permit(application_user, build(:transfer_project, assigned_to: application_user, transfer_date_provisional: false))
end

it "denies access if project is assigned to nil" do
expect(subject).not_to permit(application_user, build(:conversion_project, assigned_to: nil, conversion_date_provisional: true))
end
it "denies access when the project is a conversion" do
expect(subject).not_to permit(application_user, build(:conversion_project, assigned_to: application_user, conversion_date_provisional: false))
end
end

Expand Down

0 comments on commit 6a76b38

Please sign in to comment.