From 3edc7ce20fd30438b0966266ce8a08c9f0f728c2 Mon Sep 17 00:00:00 2001 From: Sam Seed Date: Mon, 21 Nov 2022 11:46:29 +0000 Subject: [PATCH] test: improvements to tests --- app/helpers/schemes_helper.rb | 4 +- app/views/schemes/show.html.erb | 2 +- spec/helpers/schemes_helper_spec.rb | 81 ++++++++++++++++++++--------- 3 files changed, 58 insertions(+), 29 deletions(-) diff --git a/app/helpers/schemes_helper.rb b/app/helpers/schemes_helper.rb index 85f6dc097..c1169edb2 100644 --- a/app/helpers/schemes_helper.rb +++ b/app/helpers/schemes_helper.rb @@ -1,5 +1,5 @@ module SchemesHelper - def display_scheme_attributes(scheme) + def display_scheme_attributes(scheme, user) base_attributes = [ { name: "Scheme code", value: scheme.id_to_display }, { name: "Name", value: scheme.service_name, edit: true }, @@ -21,7 +21,7 @@ module SchemesHelper base_attributes.append({ name: "Status", value: status_tag(scheme.status) }) end - if current_user.data_coordinator? + if user.data_coordinator? base_attributes.delete_if {|item| item[:name] == "Housing stock owned by"} end diff --git a/app/views/schemes/show.html.erb b/app/views/schemes/show.html.erb index e25e07831..5d93414d0 100644 --- a/app/views/schemes/show.html.erb +++ b/app/views/schemes/show.html.erb @@ -19,7 +19,7 @@

Scheme

<%= govuk_summary_list do |summary_list| %> - <% display_scheme_attributes(@scheme).each do |attr| %> + <% display_scheme_attributes(@scheme, current_user).each do |attr| %> <%= summary_list.row do |row| %> <% row.key { attr[:name] } %> <% row.value { details_html(attr) } %> diff --git a/spec/helpers/schemes_helper_spec.rb b/spec/helpers/schemes_helper_spec.rb index b1e9f9c96..a9f51b042 100644 --- a/spec/helpers/schemes_helper_spec.rb +++ b/spec/helpers/schemes_helper_spec.rb @@ -1,6 +1,8 @@ -require "rails_helper" + require "rails_helper" -RSpec.describe SchemesHelper do + include TagHelper + + RSpec.describe SchemesHelper do describe "Active periods" do let(:scheme) { FactoryBot.create(:scheme, created_at: Time.zone.today) } @@ -87,33 +89,60 @@ RSpec.describe SchemesHelper do end end - describe "display_scheme_attributes" do - let!(:scheme) { FactoryBot.create(:scheme, created_at: Time.zone.local(2022, 4, 1)) } - - it "returns correct display attributes" do - attributes = [ - { name: "Scheme code", value: scheme.id_to_display }, - { name: "Name", value: scheme.service_name, edit: true }, - { name: "Confidential information", value: scheme.sensitive, edit: true }, - { name: "Type of scheme", value: scheme.scheme_type }, - { name: "Registered under Care Standards Act 2000", value: scheme.registered_under_care_act }, - { name: "Housing stock owned by", value: scheme.owning_organisation.name, edit: true }, - { name: "Support services provided by", value: scheme.arrangement_type }, - { name: "Primary client group", value: scheme.primary_client_group }, - { name: "Has another client group", value: scheme.has_other_client_group }, - { name: "Secondary client group", value: scheme.secondary_client_group }, - { name: "Level of support given", value: scheme.support_type }, - { name: "Intended length of stay", value: scheme.intended_stay }, - { name: "Availability", value: "Active from 1 April 2022" }, - { name: "Status", value: :active }, - ] - expect(display_scheme_attributes(scheme)).to eq(attributes) - end + describe "display_scheme_attributes" do + let (owning + let!(:scheme) { FactoryBot.create(:scheme, + id: 1, + created_at: Time.zone.local(2022, 4, 1), + service_name: 'Test name' + owning_organisation + ) } + let(:support_user) { FactoryBot.create(:user, :support) } + let(:coordinator_user) { FactoryBot.create(:user, :data_coordinator) } + + it "returns correct display attributes for a support user" do + attributes = [ + { name: "Scheme code", value: "S1" }, + { name: "Name", value: "Test name", edit: true }, + { name: "Confidential information", value: scheme.sensitive, edit: true }, + { name: "Type of scheme", value: scheme.scheme_type }, + { name: "Registered under Care Standards Act 2000", value: scheme.registered_under_care_act }, + { name: "Housing stock owned by", value: ""scheme.owning_organisation.name"", edit: true }, + { name: "Support services provided by", value: scheme.arrangement_type }, + { name: "Primary client group", value: scheme.primary_client_group }, + { name: "Has another client group", value: scheme.has_other_client_group }, + { name: "Secondary client group", value: scheme.secondary_client_group }, + { name: "Level of support given", value: scheme.support_type }, + { name: "Intended length of stay", value: scheme.intended_stay }, + { name: "Availability", value: "Active from 1 April 2022" }, + { name: "Status", value: status_tag(:active) }, + ] + expect(display_scheme_attributes(scheme, support_user)).to eq(attributes) + end + + it "returns correct display attributes for a coordinator user" do + attributes = [ + { name: "Scheme code", value: scheme.id_to_display }, + { name: "Name", value: scheme.service_name, edit: true }, + { name: "Confidential information", value: scheme.sensitive, edit: true }, + { name: "Type of scheme", value: scheme.scheme_type }, + { name: "Registered under Care Standards Act 2000", value: scheme.registered_under_care_act }, + { name: "Support services provided by", value: scheme.arrangement_type }, + { name: "Primary client group", value: scheme.primary_client_group }, + { name: "Has another client group", value: scheme.has_other_client_group }, + { name: "Secondary client group", value: scheme.secondary_client_group }, + { name: "Level of support given", value: scheme.support_type }, + { name: "Intended length of stay", value: scheme.intended_stay }, + { name: "Availability", value: "Active from 1 April 2022" }, + { name: "Status", value: status_tag(:active) }, + ] + expect(display_scheme_attributes(scheme, coordinator_user)).to eq(attributes) + end context "when viewing availability" do context "with no deactivations" do it "displays created_at as availability date" do - availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value] + availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value] expect(availability_attribute).to eq("Active from #{scheme.created_at.to_formatted_s(:govuk_date)}") end @@ -211,7 +240,7 @@ RSpec.describe SchemesHelper do end it "displays the timeline of availability" do - availability_attribute = display_scheme_attributes(scheme).find { |x| x[:name] == "Availability" }[:value] + availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value] expect(availability_attribute).to eq("Active from 1 April 2022 to 9 October 2022\nDeactivated on 10 October 2022\nActive from 11 December 2022") end