require 'rails_helper' RSpec.describe Perm, type: :model do context "validations" do it { is_expected.to validate_presence_of(:name) } it { is_expected.to validate_uniqueness_of(:name) .with_message("must be unique") } end context "associations" do it { is_expected.to have_and_belong_to_many(:users) } end describe ".add_orgs" do subject { Perm.add_orgs } context "when name is 'add_orgs'" do let!(:perm) { create(:perm, name: "add_organisations") } it { is_expected.to eql(perm) } end context "when name is 'change_affiliation'" do let!(:perm) { create(:perm, name: "change_org_affiliation") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_permissions'" do let!(:perm) { create(:perm, name: "grant_permissions") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_templates'" do let!(:perm) { create(:perm, name: "modify_templates") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_guidance'" do let!(:perm) { create(:perm, name: "modify_guidance") } it { is_expected.not_to eql(perm) } end context "when name is 'use_api'" do let!(:perm) { create(:perm, name: "use_api") } it { is_expected.not_to eql(perm) } end context "when name is 'change_org_details'" do let!(:perm) { create(:perm, name: "change_org_details") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_api'" do let!(:perm) { create(:perm, name: "grant_api_to_orgs") } it { is_expected.not_to eql(perm) } end end describe ".change_affiliation" do subject { Perm.change_affiliation } context "when name is 'add_orgs'" do let!(:perm) { create(:perm, name: "add_organisations") } it { is_expected.not_to eql(perm) } end context "when name is 'change_affiliation'" do let!(:perm) { create(:perm, name: "change_org_affiliation") } it { is_expected.to eql(perm) } end context "when name is 'grant_permissions'" do let!(:perm) { create(:perm, name: "grant_permissions") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_templates'" do let!(:perm) { create(:perm, name: "modify_templates") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_guidance'" do let!(:perm) { create(:perm, name: "modify_guidance") } it { is_expected.not_to eql(perm) } end context "when name is 'use_api'" do let!(:perm) { create(:perm, name: "use_api") } it { is_expected.not_to eql(perm) } end context "when name is 'change_org_details'" do let!(:perm) { create(:perm, name: "change_org_details") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_api'" do let!(:perm) { create(:perm, name: "grant_api_to_orgs") } it { is_expected.not_to eql(perm) } end end describe ".grant_permissions" do subject { Perm.grant_permissions } context "when name is 'add_orgs'" do let!(:perm) { create(:perm, name: "add_organisations") } it { is_expected.not_to eql(perm) } end context "when name is 'change_affiliation'" do let!(:perm) { create(:perm, name: "change_org_affiliation") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_permissions'" do let!(:perm) { create(:perm, name: "grant_permissions") } it { is_expected.to eql(perm) } end context "when name is 'modify_templates'" do let!(:perm) { create(:perm, name: "modify_templates") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_guidance'" do let!(:perm) { create(:perm, name: "modify_guidance") } it { is_expected.not_to eql(perm) } end context "when name is 'use_api'" do let!(:perm) { create(:perm, name: "use_api") } it { is_expected.not_to eql(perm) } end context "when name is 'change_org_details'" do let!(:perm) { create(:perm, name: "change_org_details") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_api'" do let!(:perm) { create(:perm, name: "grant_api_to_orgs") } it { is_expected.not_to eql(perm) } end end describe ".modify_templates" do subject { Perm.modify_templates } context "when name is 'add_orgs'" do let!(:perm) { create(:perm, name: "add_organisations") } it { is_expected.not_to eql(perm) } end context "when name is 'change_affiliation'" do let!(:perm) { create(:perm, name: "change_org_affiliation") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_permissions'" do let!(:perm) { create(:perm, name: "grant_permissions") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_templates'" do let!(:perm) { create(:perm, name: "modify_templates") } it { is_expected.to eql(perm) } end context "when name is 'modify_guidance'" do let!(:perm) { create(:perm, name: "modify_guidance") } it { is_expected.not_to eql(perm) } end context "when name is 'use_api'" do let!(:perm) { create(:perm, name: "use_api") } it { is_expected.not_to eql(perm) } end context "when name is 'change_org_details'" do let!(:perm) { create(:perm, name: "change_org_details") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_api'" do let!(:perm) { create(:perm, name: "grant_api_to_orgs") } it { is_expected.not_to eql(perm) } end end describe ".modify_guidance" do subject { Perm.modify_guidance } context "when name is 'add_orgs'" do let!(:perm) { create(:perm, name: "add_organisations") } it { is_expected.not_to eql(perm) } end context "when name is 'change_affiliation'" do let!(:perm) { create(:perm, name: "change_org_affiliation") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_permissions'" do let!(:perm) { create(:perm, name: "grant_permissions") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_templates'" do let!(:perm) { create(:perm, name: "modify_templates") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_guidance'" do let!(:perm) { create(:perm, name: "modify_guidance") } it { is_expected.to eql(perm) } end context "when name is 'use_api'" do let!(:perm) { create(:perm, name: "use_api") } it { is_expected.not_to eql(perm) } end context "when name is 'change_org_details'" do let!(:perm) { create(:perm, name: "change_org_details") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_api'" do let!(:perm) { create(:perm, name: "grant_api_to_orgs") } it { is_expected.not_to eql(perm) } end end describe ".use_api" do subject { Perm.use_api } context "when name is 'add_orgs'" do let!(:perm) { create(:perm, name: "add_organisations") } it { is_expected.not_to eql(perm) } end context "when name is 'change_affiliation'" do let!(:perm) { create(:perm, name: "change_org_affiliation") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_permissions'" do let!(:perm) { create(:perm, name: "grant_permissions") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_templates'" do let!(:perm) { create(:perm, name: "modify_templates") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_guidance'" do let!(:perm) { create(:perm, name: "modify_guidance") } it { is_expected.not_to eql(perm) } end context "when name is 'use_api'" do let!(:perm) { create(:perm, name: "use_api") } it { is_expected.to eql(perm) } end context "when name is 'change_org_details'" do let!(:perm) { create(:perm, name: "change_org_details") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_api'" do let!(:perm) { create(:perm, name: "grant_api_to_orgs") } it { is_expected.not_to eql(perm) } end end describe ".change_org_details" do subject { Perm.change_org_details } context "when name is 'add_orgs'" do let!(:perm) { create(:perm, name: "add_organisations") } it { is_expected.not_to eql(perm) } end context "when name is 'change_affiliation'" do let!(:perm) { create(:perm, name: "change_org_affiliation") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_permissions'" do let!(:perm) { create(:perm, name: "grant_permissions") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_templates'" do let!(:perm) { create(:perm, name: "modify_templates") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_guidance'" do let!(:perm) { create(:perm, name: "modify_guidance") } it { is_expected.not_to eql(perm) } end context "when name is 'use_api'" do let!(:perm) { create(:perm, name: "use_api") } it { is_expected.not_to eql(perm) } end context "when name is 'change_org_details'" do let!(:perm) { create(:perm, name: "change_org_details") } it { is_expected.to eql(perm) } end context "when name is 'grant_api'" do let!(:perm) { create(:perm, name: "grant_api") } it { is_expected.not_to eql(perm) } end end describe ".grant_api" do subject { Perm.grant_api } context "when name is 'add_orgs'" do let!(:perm) { create(:perm, name: "add_organisations") } it { is_expected.not_to eql(perm) } end context "when name is 'change_affiliation'" do let!(:perm) { create(:perm, name: "change_org_affiliation") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_permissions'" do let!(:perm) { create(:perm, name: "grant_permissions") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_templates'" do let!(:perm) { create(:perm, name: "modify_templates") } it { is_expected.not_to eql(perm) } end context "when name is 'modify_guidance'" do let!(:perm) { create(:perm, name: "modify_guidance") } it { is_expected.not_to eql(perm) } end context "when name is 'use_api'" do let!(:perm) { create(:perm, name: "use_api") } it { is_expected.not_to eql(perm) } end context "when name is 'change_org_details'" do let!(:perm) { create(:perm, name: "change_org_details") } it { is_expected.not_to eql(perm) } end context "when name is 'grant_api'" do let!(:perm) { create(:perm, name: "grant_api_to_orgs") } it { is_expected.to eql(perm) } end end end