docbrown/spec/models/admin_menu_spec.rb
Daniel Uber 8276d1d8c6
Remove profile admin feature flag (#17194)
Remove test cases built around it (modified when the guards were removed).
2022-04-11 09:27:35 -05:00

111 lines
3.5 KiB
Ruby

require "rails_helper"
RSpec.describe AdminMenu do
describe ".nested_menu_items_from_request" do
subject(:method_call) { described_class.nested_menu_items_from_request(request) }
let(:request) { instance_double("ActionDispatch::Request", path: path) }
let(:path) { "/admin" }
context "when path is /admin/moderation/feedback_messages" do
let(:path) { "/admin/moderation/feedback_messages" }
it { is_expected.not_to be_present }
end
context "when path is /admin/content_manager/badge_achievements" do
let(:path) { "/admin/content_manager/badge_achievements" }
let(:badges_node) do
described_class::ITEMS[:content_manager].children
.detect { |ch| ch.name == "badges" }
end
it { is_expected.to eq(badges_node) }
end
end
describe ".navigation_items" do
subject(:navigation_items) { described_class.navigation_items }
it { is_expected.to be_a(Hash) }
end
describe "scope :content_manager" do
subject(:content_manager) { described_class.navigation_items.fetch(:content_manager) }
it { is_expected.to be_a(Menu::Scope) }
end
describe "scope :content_managers's posts item" do
subject(:posts) { content_manager.children.detect { |child| child.name == "posts" } }
let(:content_manager) { described_class.navigation_items.fetch(:content_manager) }
it { is_expected.to be_visible }
end
describe "scope :content_managers's spaces item" do
subject(:spaces) { content_manager.children.detect { |child| child.name == "spaces" } }
let(:content_manager) { described_class.navigation_items.fetch(:content_manager) }
context "when the :limit_post_creation_to_admins does not exist" do
it { is_expected.not_to be_visible }
end
context "when the :limit_post_creation_to_admins is enabled" do
before { FeatureFlag.enable(:limit_post_creation_to_admins) }
it { is_expected.to be_visible }
end
context "when the :limit_post_creation_to_admins is explicitly disabled" do
before { FeatureFlag.disable(:limit_post_creation_to_admins) }
it { is_expected.to be_visible }
end
end
describe "scope :customization" do
subject(:content_manager) { described_class.navigation_items.fetch(:customization) }
it { is_expected.to be_a(Menu::Scope) }
it { is_expected.to have_multiple_children }
it { is_expected.to have_children }
end
describe "scope :admin_team" do
subject(:content_manager) { described_class.navigation_items.fetch(:admin_team) }
it { is_expected.not_to have_multiple_children }
it { is_expected.to have_children }
end
describe "scope :customization's profile field" do
subject(:profile_field) { customization.children.detect { |child| child.name == "profile fields" } }
let(:customization) { described_class.navigation_items.fetch(:customization) }
it { is_expected.to be_a(Menu::Item) }
it { is_expected.to be_visible }
end
describe "scope :apps" do
subject(:listing) { apps.children.detect { |child| child.name == "listings" } }
let(:apps) { described_class.navigation_items.fetch(:apps) }
context "when Listing.feature_enabled? is true" do
before { allow(Listing).to receive(:feature_enabled?).and_return(true) }
it { is_expected.to be_visible }
end
context "when Listing.feature_enabled? is false" do
before { allow(Listing).to receive(:feature_enabled?).and_return(false) }
it { is_expected.not_to be_visible }
end
end
end