Browse Source

Save reactivation date

pull/1007/head
Kat 4 years ago
parent
commit
9d6e904065
  1. 23
      app/controllers/locations_controller.rb
  2. 21
      spec/requests/locations_controller_spec.rb

23
app/controllers/locations_controller.rb

@ -54,7 +54,9 @@ class LocationsController < ApplicationController
end
def reactivate
if @location.location_deactivation_periods.deactivations_without_reactivation.update!(reactivation_date:)
flash[:notice] = reactivate_success_notice
end
redirect_to scheme_location_path(@scheme, @location)
end
@ -203,17 +205,26 @@ private
end
def deactivation_date
toggle_date("deactivation_date")
end
def reactivation_date
toggle_date("reactivation_date")
end
def toggle_date(key)
if params[:location].blank?
return
elsif params[:location][:deactivation_date_type] == "default"
elsif params[:location]["#{key}_type".to_sym] == "default"
return FormHandler.instance.current_collection_start_date
elsif params[:location][:deactivation_date].present?
return params[:location][:deactivation_date]
elsif params[:location][key.to_sym].present?
return params[:location][key.to_sym]
end
day = params[:location]["deactivation_date(3i)"]
month = params[:location]["deactivation_date(2i)"]
year = params[:location]["deactivation_date(1i)"]
day = params[:location]["#{key}(3i)"]
month = params[:location]["#{key}(2i)"]
year = params[:location]["#{key}(1i)"]
return nil if [day, month, year].any?(&:blank?)
Time.zone.local(year.to_i, month.to_i, day.to_i) if Date.valid_date?(year.to_i, month.to_i, day.to_i)

21
spec/requests/locations_controller_spec.rb

@ -1470,8 +1470,7 @@ RSpec.describe LocationsController, type: :request do
let(:user) { FactoryBot.create(:user, :data_coordinator) }
let!(:scheme) { FactoryBot.create(:scheme, owning_organisation: user.organisation) }
let!(:location) { FactoryBot.create(:location, scheme:) }
let(:deactivation_date) { Time.utc(2022, 10, 10) }
let(:reactivation_date) { Time.utc(2022, 10, 12) }
let(:deactivation_date) { Time.zone.local(2022, 10, 10) }
let!(:lettings_log) { FactoryBot.create(:lettings_log, :sh, location:, scheme:, startdate:, owning_organisation: user.organisation) }
let(:startdate) { Time.utc(2022, 10, 11) }
@ -1488,7 +1487,7 @@ RSpec.describe LocationsController, type: :request do
end
context "with default date" do
let(:params) { { location: { reactivation_date_type: "default", reactivation_date: } } }
let(:params) { { location: { reactivation_date_type: "default" } } }
it "redirects to the location page and displays a success banner" do
expect(response).to redirect_to("/schemes/#{scheme.id}/locations/#{location.id}")
@ -1497,10 +1496,17 @@ RSpec.describe LocationsController, type: :request do
expect(page).to have_css(".govuk-notification-banner.govuk-notification-banner--success")
expect(page).to have_content("#{location.name} has been reactivated")
end
it "updates existing location deactivations with valid reactivation date" do
follow_redirect!
location.reload
expect(location.location_deactivation_periods.count).to eq(1)
expect(location.location_deactivation_periods.first.reactivation_date).to eq(Time.zone.local(2022, 4, 1))
end
end
context "with other date" do
let(:params) { { location: { deactivation_date_type: "other", "deactivation_date(3i)": "10", "deactivation_date(2i)": "10", "deactivation_date(1i)": "2022" } } }
let(:params) { { location: { reactivation_date_type: "other", "reactivation_date(3i)": "14", "reactivation_date(2i)": "10", "reactivation_date(1i)": "2022" } } }
it "redirects to the location page and displays a success banner" do
expect(response).to redirect_to("/schemes/#{scheme.id}/locations/#{location.id}")
@ -1508,6 +1514,13 @@ RSpec.describe LocationsController, type: :request do
expect(page).to have_css(".govuk-notification-banner.govuk-notification-banner--success")
expect(page).to have_content("#{location.name} has been reactivated")
end
it "updates existing location deactivations with valid reactivation date" do
follow_redirect!
location.reload
expect(location.location_deactivation_periods.count).to eq(1)
expect(location.location_deactivation_periods.first.reactivation_date).to eq(Time.zone.local(2022, 10, 14))
end
end
end
end

Loading…
Cancel
Save