require "rails_helper"

RSpec.describe CookiesController, type: :request do
  let(:headers) { { "Accept" => "text/html" } }
  let(:page) { Capybara::Node::Simple.new(response.body) }

  describe "when the service is available" do
    describe "render cookies page" do
      before do
        get "/cookies", headers:, params: {}
      end

      it "returns a 200" do
        expect(response).to have_http_status(:success)
      end

      it "returns the page" do
        expect(page).to have_title("Cookies")
      end
    end
  end

  describe "when the service has moved" do
    before do
      allow(FeatureToggle).to receive(:service_moved?).and_return(true)
    end

    describe "render cookies page" do
      before do
        get "/cookies", headers:, params: {}
      end

      it "returns a 200" do
        expect(response).to have_http_status(:success)
      end

      it "returns the page" do
        expect(page).to have_title("Cookies")
      end
    end
  end

  describe "when the service is unavailable" do
    before do
      allow(FeatureToggle).to receive(:service_unavailable?).and_return(true)
    end

    describe "render cookies page" do
      before do
        get "/cookies", headers:, params: {}
      end

      it "returns a 200" do
        expect(response).to have_http_status(:success)
      end

      it "returns the page" do
        expect(page).to have_title("Cookies")
      end
    end
  end

  describe "when both the service_moved? and service_unavailable? feature toggles are on" do
    before do
      allow(FeatureToggle).to receive(:service_moved?).and_return(true)
      allow(FeatureToggle).to receive(:service_unavailable?).and_return(true)
    end

    describe "render cookies page" do
      before do
        get "/cookies", headers:, params: {}
      end

      it "returns a 200" do
        expect(response).to have_http_status(:success)
      end

      it "returns the page" do
        expect(page).to have_title("Cookies")
      end
    end
  end
end