require "rails_helper" feature "Admin feature flags" do background do Setting["feature.spending_proposals"] = true Setting["feature.spending_proposal_features.voting_allowed"] = true login_as(create(:administrator).user) end after do Setting["feature.spending_proposals"] = nil Setting["feature.spending_proposal_features.voting_allowed"] = nil end scenario "Enabled features are listed on menu" do visit admin_root_path within("#side_menu") do expect(page).to have_link "Spending proposals" expect(page).to have_link "Hidden debates" end end scenario "Disable a feature" do setting_id = Setting.find_by(key: "feature.spending_proposals").id visit admin_settings_path within("#edit_setting_#{setting_id}") do expect(page).to have_button "Disable" expect(page).not_to have_button "Enable" click_button "Disable" end visit admin_root_path within("#side_menu") do expect(page).not_to have_link "Budgets" expect(page).not_to have_link "Spending proposals" end expect{ visit spending_proposals_path }.to raise_exception(FeatureFlags::FeatureDisabled) expect{ visit admin_spending_proposals_path }.to raise_exception(FeatureFlags::FeatureDisabled) end scenario "Enable a disabled feature" do Setting["feature.spending_proposals"] = nil setting_id = Setting.find_by(key: "feature.spending_proposals").id visit admin_root_path within("#side_menu") do expect(page).not_to have_link "Budgets" expect(page).not_to have_link "Spending proposals" end visit admin_settings_path within("#edit_setting_#{setting_id}") do expect(page).to have_button "Enable" expect(page).not_to have_button "Disable" click_button "Enable" end visit admin_root_path within("#side_menu") do expect(page).to have_link "Spending proposals" end end end