From ae79d28408b3fcafd7f2da90264972ada694e702 Mon Sep 17 00:00:00 2001 From: Sam Seed Date: Mon, 30 Oct 2023 12:19:09 +0000 Subject: [PATCH] CLDC-2862: add requests tests --- spec/requests/maintenance_controller_spec.rb | 54 ++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 spec/requests/maintenance_controller_spec.rb diff --git a/spec/requests/maintenance_controller_spec.rb b/spec/requests/maintenance_controller_spec.rb new file mode 100644 index 000000000..feda7af4b --- /dev/null +++ b/spec/requests/maintenance_controller_spec.rb @@ -0,0 +1,54 @@ +require "rails_helper" + +RSpec.describe MaintenanceController, type: :request do + let(:page) { Capybara::Node::Simple.new(response.body) } + let(:user) { FactoryBot.create(:user) } + + before do + sign_in user + end + + describe "when maintenance mode is enabled" do + before do + allow(FeatureToggle).to receive(:maintenance_mode_enabled?).and_return(true) + end + + context "when a user visits a page other than the maintenance page" do + it "redirects the user to the maintenance page" do + get "/lettings-logs" + expect(response).to redirect_to(service_unavailable_path) + follow_redirect! + expect(page).to have_content("Sorry, the service is unavailable") + end + end + + context "when a user visits the maintenance page" do + it "keeps the user on the maintenance page" do + get "/service-unavailable" + expect(response).not_to redirect_to(service_unavailable_path) + expect(page).to have_content("Sorry, the service is unavailable") + end + end + end + + describe "when maintenance mode is disabled" do + before do + allow(FeatureToggle).to receive(:maintenance_mode_enabled?).and_return(false) + end + + context "when a user visits a page other than the maintenance page" do + it "doesn't redirect the user to the maintenance page" do + get "/lettings-logs" + expect(response).not_to redirect_to(service_unavailable_path) + expect(page).to have_content("Create a new lettings log") + end + end + + context "when a user visits the maintenance page" do + it "redirects the user to the start page" do + get "/service-unavailable" + expect(response).to redirect_to(root_path) + end + end + end +end