diff --git a/spec/features/schemes_spec.rb b/spec/features/schemes_spec.rb
index dd683312e..12bd76697 100644
--- a/spec/features/schemes_spec.rb
+++ b/spec/features/schemes_spec.rb
@@ -1069,7 +1069,7 @@ RSpec.describe "Schemes scheme Features" do
it "lets me see amended details on the check answers page" do
expect(page).to have_content "FooBar"
expect(page).to have_current_path("/schemes/#{scheme.id}/check-answers")
- expect(page).to have_link("Change", href: /schemes\/#{scheme.id}\/edit-name/, count: 2)
+ expect(page).to have_link("Change", href: /schemes\/#{scheme.id}\/edit-name/, count: 3)
end
end
end
diff --git a/spec/helpers/schemes_helper_spec.rb b/spec/helpers/schemes_helper_spec.rb
index 95d3c78e3..cf1d8af4d 100644
--- a/spec/helpers/schemes_helper_spec.rb
+++ b/spec/helpers/schemes_helper_spec.rb
@@ -128,7 +128,7 @@ RSpec.describe SchemesHelper do
{ name: "Intended length of stay", value: "Permanent" },
{ name: "Availability", value: "Active from 1 April 2021" },
]
- expect(display_scheme_attributes(scheme, support_user)).to eq(attributes)
+ expect(display_scheme_attributes(scheme)).to eq(attributes)
end
it "returns correct display attributes for a coordinator user" do
@@ -139,6 +139,7 @@ RSpec.describe SchemesHelper do
{ name: "Confidential information", value: "No", edit: true },
{ name: "Type of scheme", value: "Housing for older people" },
{ name: "Registered under Care Standards Act 2000", value: "Yes – registered care home providing personal care" },
+ { name: "Housing stock owned by", value: "Acme LTD Owning", edit: true},
{ name: "Support services provided by", value: "A registered charity or voluntary organisation" },
{ name: "Primary client group", value: "Rough sleepers" },
{ name: "Has another client group", value: "Yes" },
@@ -147,7 +148,7 @@ RSpec.describe SchemesHelper do
{ name: "Intended length of stay", value: "Permanent" },
{ name: "Availability", value: "Active from 1 April 2021" },
]
- expect(display_scheme_attributes(scheme, coordinator_user)).to eq(attributes)
+ expect(display_scheme_attributes(scheme)).to eq(attributes)
end
end
@@ -173,7 +174,7 @@ RSpec.describe SchemesHelper do
{ name: "Intended length of stay", value: "Permanent" },
{ name: "Availability", value: "Active from 1 April 2021" },
]
- expect(display_scheme_attributes(scheme, support_user)).to eq(attributes)
+ expect(display_scheme_attributes(scheme)).to eq(attributes)
end
it "returns correct display attributes for a coordinator user" do
@@ -184,6 +185,7 @@ RSpec.describe SchemesHelper do
{ name: "Confidential information", value: "No", edit: true },
{ name: "Type of scheme", value: "Housing for older people" },
{ name: "Registered under Care Standards Act 2000", value: "Yes – registered care home providing personal care" },
+ { name: "Housing stock owned by", value: "Acme LTD Owning", edit: true},
{ name: "Support services provided by", value: "A registered charity or voluntary organisation" },
{ name: "Primary client group", value: "Rough sleepers" },
{ name: "Has another client group", value: "Yes" },
@@ -192,7 +194,7 @@ RSpec.describe SchemesHelper do
{ name: "Intended length of stay", value: "Permanent" },
{ name: "Availability", value: "Active from 1 April 2021" },
]
- expect(display_scheme_attributes(scheme, coordinator_user)).to eq(attributes)
+ expect(display_scheme_attributes(scheme)).to eq(attributes)
end
context "when the managing organisation is the owning organisation" do
@@ -206,7 +208,7 @@ RSpec.describe SchemesHelper do
context "with no deactivations" do
it "displays current collection start date as availability date if created_at is later than collection start date" do
scheme.update!(created_at: Time.zone.local(2022, 4, 16))
- availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
+ availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value]
expect(availability_attribute).to eq("Active from 1 April 2021")
end
@@ -221,7 +223,7 @@ RSpec.describe SchemesHelper do
end
it "displays the timeline of availability" do
- availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
+ availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value]
expect(availability_attribute).to eq("Active from 1 April 2021 to 9 August 2022\nDeactivated on 10 August 2022\nActive from 1 September 2022 to 14 September 2022\nDeactivated on 15 September 2022\nActive from 28 September 2022")
end
@@ -235,7 +237,7 @@ RSpec.describe SchemesHelper do
end
it "displays the timeline of availability" do
- availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
+ availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value]
expect(availability_attribute).to eq("Active from 1 April 2021 to 9 August 2022\nDeactivated on 10 August 2022\nActive from 1 September 2022 to 14 September 2022\nDeactivated on 15 September 2022")
end
@@ -251,7 +253,7 @@ RSpec.describe SchemesHelper do
end
it "displays the timeline of availability" do
- availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
+ availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value]
expect(availability_attribute).to eq("Active from 1 April 2021 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 18 June 2022 to 23 September 2022\nDeactivated on 24 September 2022\nActive from 28 September 2022")
end
@@ -265,7 +267,7 @@ RSpec.describe SchemesHelper do
end
it "displays the timeline of availability" do
- availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
+ availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value]
expect(availability_attribute).to eq("Active from 1 April 2021 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 28 September 2022")
end
@@ -282,7 +284,7 @@ RSpec.describe SchemesHelper do
end
it "displays the timeline of availability" do
- availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
+ availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value]
expect(availability_attribute).to eq("Active from 1 April 2021 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 28 September 2022 to 23 October 2022\nDeactivated on 24 October 2022\nActive from 28 October 2022")
end
@@ -297,7 +299,7 @@ RSpec.describe SchemesHelper do
end
it "displays the timeline of availability" do
- availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
+ availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value]
expect(availability_attribute).to eq("Active from 1 April 2021 to 9 October 2022\nDeactivated on 10 October 2022\nActive from 11 December 2022")
end
diff --git a/spec/requests/locations_controller_spec.rb b/spec/requests/locations_controller_spec.rb
index 7dccbec1b..fd3bd48e5 100644
--- a/spec/requests/locations_controller_spec.rb
+++ b/spec/requests/locations_controller_spec.rb
@@ -179,7 +179,7 @@ RSpec.describe LocationsController, type: :request do
get "/schemes/#{scheme.id}/locations"
end
- context "when coordinator attempts to see scheme belonging to a different organisation" do
+ context "when coordinator attempts to see scheme belonging to a different (and not their parent) organisation" do
let(:another_scheme) { create(:scheme) }
before do
@@ -302,8 +302,8 @@ RSpec.describe LocationsController, type: :request do
end
end
- it "does not allow adding new locations" do
- expect(page).not_to have_button("Add a location")
+ it "does allow adding new locations" do
+ expect(page).to have_button("Add a location")
end
end
end
diff --git a/spec/requests/schemes_controller_spec.rb b/spec/requests/schemes_controller_spec.rb
index 50d83a5b3..fd740d31f 100644
--- a/spec/requests/schemes_controller_spec.rb
+++ b/spec/requests/schemes_controller_spec.rb
@@ -457,7 +457,7 @@ RSpec.describe SchemesController, type: :request do
expect(page).to have_content(specific_scheme.intended_stay)
end
- context "when coordinator attempts to see scheme belonging to a different organisation" do
+ context "when coordinator attempts to see scheme belonging to a different (and not their parent) organisation" do
let!(:specific_scheme) { create(:scheme) }
it "returns 401" do
@@ -474,7 +474,6 @@ RSpec.describe SchemesController, type: :request do
end
context "when looking at scheme details" do
- let(:user) { create(:user, :data_coordinator) }
let!(:scheme) { create(:scheme, owning_organisation: user.organisation) }
let(:add_deactivations) { scheme.scheme_deactivation_periods << scheme_deactivation_period }
@@ -535,21 +534,68 @@ RSpec.describe SchemesController, type: :request do
context "when coordinator attempts to see scheme belonging to a parent organisation" do
let(:parent_organisation) { create(:organisation) }
let!(:specific_scheme) { create(:scheme, owning_organisation: parent_organisation) }
+ let(:add_deactivations) { specific_scheme.scheme_deactivation_periods << scheme_deactivation_period }
before do
create(:location, scheme: specific_scheme)
create(:organisation_relationship, parent_organisation:, child_organisation: user.organisation)
+ Timecop.freeze(Time.utc(2022, 10, 10))
+ sign_in user
+ add_deactivations
+ specific_scheme.save!
get "/schemes/#{specific_scheme.id}"
end
- it "shows the scheme" do
- expect(page).to have_content(specific_scheme.id_to_display)
+ after do
+ Timecop.unfreeze
end
- it "does not allow editing the scheme" do
- expect(page).not_to have_link("Change")
- expect(page).not_to have_content("Reactivate this scheme")
- expect(page).not_to have_content("Deactivate this scheme")
+ context "with active scheme" do
+ let(:add_deactivations) {}
+
+ it "shows the scheme" do
+ expect(page).to have_content(specific_scheme.id_to_display)
+ end
+
+ it "allows editing" do
+ expect(page).to have_link("Change")
+ end
+
+ it "renders deactivate this scheme" do
+ expect(response).to have_http_status(:ok)
+ expect(page).to have_link("Deactivate this scheme", href: "/schemes/#{specific_scheme.id}/new-deactivation")
+ end
+ end
+
+ context "with deactivated scheme" do
+ let(:scheme_deactivation_period) { create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 10, 9), scheme: specific_scheme) }
+
+ it "renders reactivate this scheme" do
+ expect(response).to have_http_status(:ok)
+ expect(page).to have_link("Reactivate this scheme", href: "/schemes/#{specific_scheme.id}/new-reactivation")
+ end
+ end
+
+ context "with scheme that's deactivating soon" do
+ let(:scheme_deactivation_period) { create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 10, 12), scheme: specific_scheme) }
+
+ it "does not render toggle scheme link" do
+ expect(response).to have_http_status(:ok)
+ expect(page).not_to have_link("Reactivate this scheme")
+ expect(page).not_to have_link("Deactivate this scheme")
+ end
+ end
+
+ context "with scheme that's deactivating in more than 6 months" do
+ let(:scheme_deactivation_period) { create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2023, 5, 12), scheme: specific_scheme) }
+
+ it "does not render toggle scheme link" do
+ expect(response).to have_http_status(:ok)
+ expect(page).not_to have_link("Reactivate this scheme")
+ expect(page).to have_link("Deactivate this scheme")
+ expect(response.body).not_to include("Deactivating soon")
+ expect(response.body).to include("Active")
+ end
end
end
@@ -1813,7 +1859,7 @@ RSpec.describe SchemesController, type: :request do
expect(response).to have_http_status(:ok)
expect(path).to match("/schemes/#{scheme.id}")
expect(page).to have_content(scheme.service_name)
- assert_select "a", text: /Change/, count: 2
+ assert_select "a", text: /Change/, count: 3
end
end
end
@@ -1958,7 +2004,7 @@ RSpec.describe SchemesController, type: :request do
expect(response).to have_http_status(:ok)
expect(path).to match("/schemes/#{scheme.id}")
expect(page).to have_content(scheme.service_name)
- assert_select "a", text: /Change/, count: 2
+ assert_select "a", text: /Change/, count: 3
end
end
end
@@ -2016,7 +2062,7 @@ RSpec.describe SchemesController, type: :request do
expect(response).to have_http_status(:ok)
expect(page).to have_content("Scheme details")
expect(page).to have_content("This scheme contains confidential information")
- expect(page).not_to have_content("Which organisation owns the housing stock for this scheme?")
+ expect(page).to have_content("Which organisation owns the housing stock for this scheme?")
end
context "when attempting to access secondary-client-group scheme page for another organisation" do