53 lines
1.5 KiB
Ruby
53 lines
1.5 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 limited podcast_admin
|
|
restricted_liquid_tag single_resource_admin super_admin support_admin suspended spam tag_moderator tech_admin
|
|
trusted warned 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
|
|
|
|
describe "#name_labelize" do
|
|
subject { user.roles.last.name_labelize }
|
|
|
|
let(:user) { create(:user, :admin) }
|
|
|
|
it { is_expected.to eq "admin" }
|
|
|
|
context "when role is single_resource_admin" do
|
|
let(:user) { create(:user, :single_resource_admin, resource: Badge) }
|
|
|
|
it { is_expected.to eq "Resource Admin: Badge" }
|
|
end
|
|
end
|
|
end
|