docbrown/spec/models/role_spec.rb
Dhurba baral 4e1edc9225
allows super_admin user to remove super_admin role (#19590)
* Skips scheduled posts in featured post count

* Allows removing super_admin role

* adds namespace resolution op

* Adds pundit policy

* Adds rspec for role policy

* Fixes test cases and minor refactoring

* Removes dead code

---------

Co-authored-by: Lawrence <lawrence@forem.com>
2023-06-21 11:22:25 -04:00

39 lines
1.2 KiB
Ruby

require "rails_helper"
RSpec.describe Role do
it { is_expected.to belong_to(:resource).optional }
it { is_expected.to validate_inclusion_of(:resource_type).in_array(Rolify.resource_types) }
it { is_expected.to validate_inclusion_of(:name).in_array(described_class::ROLES) }
describe "::ROLES" do
it "contains the correct values" do
expected_roles = %w[
admin codeland_admin comment_suspended mod_relations_admin podcast_admin
restricted_liquid_tag single_resource_admin super_admin support_admin suspended tag_moderator tech_admin
trusted warned workshop_pass creator super_moderator
]
expect(described_class::ROLES).to match_array(expected_roles)
end
end
describe "#super_admin?" do
let(:role) { create(:role, name: role_name) }
let(:role_name) { "super_admin" }
it "has a visible method" do
expect(role.respond_to?(:super_admin?)).to be true
end
it "returns true" do
expect(role.super_admin?).to be true
end
context "with different role" do
let(:role_name) { "admin" }
it "returns false" do
expect(role.super_admin?).to be false
end
end
end
end