diff --git a/app/views/locations/index.html.erb b/app/views/locations/index.html.erb index fafe16a92..0d3a9be1b 100644 --- a/app/views/locations/index.html.erb +++ b/app/views/locations/index.html.erb @@ -60,16 +60,16 @@ <% row.cell(text: location.name) %> <% row.cell(text: location.id) %> <% row.cell(text: status_tag(location.status)) %> - <% end %> + <% end %> <% end %> <% end %> <% end %> - <% if user_can_edit_scheme?(current_user, @scheme) %> + + <% if LocationPolicy.new(current_user, Location).create? %> <%= govuk_button_to "Add a location", scheme_locations_path(@scheme), method: "post", secondary: true %> <% end %> - <% else %> <%= govuk_table do |table| %> <%= table.caption(classes: %w[govuk-!-font-size-19 govuk-!-font-weight-regular]) do |caption| %> diff --git a/spec/views/locations/index.html.erb_spec.rb b/spec/views/locations/index.html.erb_spec.rb new file mode 100644 index 000000000..9cb8effe5 --- /dev/null +++ b/spec/views/locations/index.html.erb_spec.rb @@ -0,0 +1,42 @@ +require "rails_helper" + +RSpec.describe "locations/index.html.erb" do + context "when a data provider" do + let(:user) { create(:user) } + + let(:scheme) do + instance_double( + Scheme, + owning_organisation: user.organisation, + id: 1, + service_name: "some name", + id_to_display: "S1", + sensitive: false, + scheme_type: "some type", + registered_under_care_act: false, + arrangement_type: "some other type", + primary_client_group: false, + has_other_client_group: false, + secondary_client_group: false, + support_type: "some support type", + intended_stay: "some intended stay", + available_from: 1.week.ago, + scheme_deactivation_periods: [], + status: :active, + ) + end + + it "does not see add a location button" do + assign(:pagy, Pagy.new(count: 0, page: 1)) + assign(:scheme, scheme) + assign(:locations, []) + + allow(view).to receive(:current_user).and_return(user) + allow(SearchComponent).to receive(:new).and_return(inline: "") + + render + + expect(rendered).not_to have_content("Add a location") + end + end +end