# frozen_string_literal: true require "rails_helper" describe FeedbackController, type: :controller do before do stub_const("APP_CONFIG", { "hostname" => "example.com", "https" => true, "items_per_page" => 5, "canny" => { sso: "sso", feature_board: "feature", bug_board: "bug" } }) end describe "#consent" do context "user signed in without consent" do let(:user) { FactoryBot.create(:user) } before(:each) { sign_in(user) } it "renders the consent template" do get :consent expect(response).to render_template(:consent) end it "sets the consent role" do post :consent, params: { consent: "true" } expect(user.has_role?(:canny_consent)).to eq(true) expect(response).to redirect_to(feedback_bugs_path) end end context "user signed in with consent" do let(:user) { FactoryBot.create(:user, roles: [:canny_consent]) } before(:each) { sign_in(user) } it "redirects away from the consent page" do get :consent expect(response).to redirect_to(feedback_bugs_path) end end end describe "#features" do subject { get :features } context "user signed in with consent" do let(:user) { FactoryBot.create(:user, roles: [:canny_consent]) } before(:each) { sign_in(user) } it "renders the features template" do subject expect(response).to render_template(:features) end end context "user signed in without consent" do let(:user) { FactoryBot.create(:user) } before(:each) { sign_in(user) } it "redirects to the consent page" do subject expect(response).to redirect_to(feedback_consent_path) end end end describe "#bugs" do subject { get :bugs } context "user signed in with consent" do let(:user) { FactoryBot.create(:user, roles: [:canny_consent]) } before(:each) { sign_in(user) } it "renders the bugs template" do subject expect(response).to render_template(:bugs) end end context "user signed in without consent" do let(:user) { FactoryBot.create(:user) } before(:each) { sign_in(user) } it "redirects to the consent page" do subject expect(response).to redirect_to(feedback_consent_path) end end end end