Browse Source

Allow releasing resources to users

pull/2683/head
Kat 2 years ago
parent
commit
97aa8c029a
  1. 13
      app/controllers/collection_resources_controller.rb
  2. 11
      app/services/mandatory_collection_resources_service.rb
  3. 68
      spec/requests/collection_resources_controller_spec.rb

13
app/controllers/collection_resources_controller.rb

@ -78,6 +78,19 @@ class CollectionResourcesController < ApplicationController
render "collection_resources/confirm_mandatory_collection_resources_release"
end
def release_mandatory_collection_resources
return render_not_found unless current_user.support?
year = params[:year].to_i
return render_not_found unless editable_collection_resource_years.include?(year)
MandatoryCollectionResourcesService.release_resources(year)
flash[:notice] = "The #{text_year_range_format(year)} collection resources are now available to users."
redirect_to collection_resources_path
end
private
def resource_params

11
app/services/mandatory_collection_resources_service.rb

@ -30,6 +30,17 @@ class MandatoryCollectionResourcesService
)
end
def self.release_resources(year)
sales_resources = resources_per_year(year, "sales")
lettings_resources = resources_per_year(year, "lettings")
(sales_resources + lettings_resources).each do |resource|
resource.released_to_user = true
resource.mandatory = true
resource.save!
end
end
def self.display_name(resource, year, log_type)
year_range = "#{year} to #{year + 1}"
case resource

68
spec/requests/collection_resources_controller_spec.rb

@ -401,4 +401,72 @@ RSpec.describe CollectionResourcesController, type: :request do
end
end
end
describe "PATCH #release_mandatory_collection_resources_path" do
let(:some_file) { File.open(file_fixture("blank_bulk_upload_sales.csv")) }
before do
allow(UploadCollectionResourcesService).to receive(:upload_collection_resource)
end
context "when user is not signed in" do
it "redirects to the sign in page" do
patch release_mandatory_collection_resources_path(year: 2024)
expect(response).to redirect_to(new_user_session_path)
end
end
context "when user is signed in as a data coordinator" do
let(:user) { create(:user, :data_coordinator) }
before do
sign_in user
end
it "returns page not found" do
patch release_mandatory_collection_resources_path(year: 2024)
expect(response).to have_http_status(:not_found)
end
end
context "when user is signed in as a data provider" do
let(:user) { create(:user, :data_provider) }
before do
sign_in user
end
it "returns page not found" do
patch release_mandatory_collection_resources_path(year: 2024)
expect(response).to have_http_status(:not_found)
end
end
context "when user is signed in as a support user" do
let(:user) { create(:user, :support) }
before do
# rubocop:disable RSpec/AnyInstance
allow_any_instance_of(CollectionResourcesHelper).to receive(:editable_collection_resource_years).and_return([2025])
# rubocop:enable RSpec/AnyInstance
allow(user).to receive(:need_two_factor_authentication?).and_return(false)
sign_in user
end
it "saves resources as released to users" do
expect(CollectionResource.where(year: 2025, mandatory: true, released_to_user: true).count).to eq(0)
patch release_mandatory_collection_resources_path(year: 2025)
expect(CollectionResource.all.count).to eq(6)
expect(CollectionResource.where(year: 2025, mandatory: true, released_to_user: true, log_type: "sales", resource_type: "paper_form").count).to eq(1)
expect(CollectionResource.where(year: 2025, mandatory: true, released_to_user: true, log_type: "sales", resource_type: "bulk_upload_template").count).to eq(1)
expect(CollectionResource.where(year: 2025, mandatory: true, released_to_user: true, log_type: "sales", resource_type: "bulk_upload_specification").count).to eq(1)
expect(CollectionResource.where(year: 2025, mandatory: true, released_to_user: true, log_type: "lettings", resource_type: "paper_form").count).to eq(1)
expect(CollectionResource.where(year: 2025, mandatory: true, released_to_user: true, log_type: "lettings", resource_type: "bulk_upload_template").count).to eq(1)
expect(CollectionResource.where(year: 2025, mandatory: true, released_to_user: true, log_type: "lettings", resource_type: "bulk_upload_specification").count).to eq(1)
expect(response).to redirect_to(collection_resources_path)
expect(flash[:notice]).to eq("The 2025 to 2026 collection resources are now available to users.")
end
end
end
end

Loading…
Cancel
Save