From b649b0d6625dfe8ced8ff863792ed628fa1f30df Mon Sep 17 00:00:00 2001 From: JG Date: Thu, 30 Jun 2022 11:27:16 +0100 Subject: [PATCH] location controller spec --- spec/requests/locations_controller_spec.rb | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 spec/requests/locations_controller_spec.rb diff --git a/spec/requests/locations_controller_spec.rb b/spec/requests/locations_controller_spec.rb new file mode 100644 index 000000000..222758c12 --- /dev/null +++ b/spec/requests/locations_controller_spec.rb @@ -0,0 +1,58 @@ +require "rails_helper" + +RSpec.describe LocationsController, type: :request do + let(:page) { Capybara::Node::Simple.new(response.body) } + let(:user) { FactoryBot.create(:user, :support) } + let!(:scheme) { FactoryBot.create(:scheme, organisation: user.organisation) } + + describe "#new" do + context "when not signed in" do + it "redirects to the sign in page" do + get "/schemes/1/location/new" + expect(response).to redirect_to("/account/sign-in") + end + end + + context "when signed in as a data provider" do + let(:user) { FactoryBot.create(:user) } + + before do + sign_in user + get "/schemes/1/location/new" + end + + it "returns 401 unauthorized" do + request + expect(response).to have_http_status(:unauthorized) + end + end + + context "when signed in as a data coordinator" do + let(:user) { FactoryBot.create(:user, :data_coordinator) } + let!(:scheme) { FactoryBot.create(:scheme, organisation: user.organisation) } + + before do + sign_in user + get "/schemes/#{scheme.id}/location/new" + end + + it "returns a template for a new location" do + expect(response).to have_http_status(:ok) + expect(page).to have_content("Add a location to this scheme") + end + end + + context "when signed in as a support user" do + before do + allow(user).to receive(:need_two_factor_authentication?).and_return(false) + sign_in user + get "/schemes/#{scheme.id}/location/new" + end + + it "returns a template for a new location" do + expect(response).to have_http_status(:ok) + expect(page).to have_content("Add a location to this scheme") + end + end + end +end