diff options
Diffstat (limited to 'spec/models/members/member_role_spec.rb')
-rw-r--r-- | spec/models/members/member_role_spec.rb | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/spec/models/members/member_role_spec.rb b/spec/models/members/member_role_spec.rb index e2691e2e78c..f9d6757bb90 100644 --- a/spec/models/members/member_role_spec.rb +++ b/spec/models/members/member_role_spec.rb @@ -9,39 +9,50 @@ RSpec.describe MemberRole do end describe 'validation' do - subject { described_class.new } + subject(:member_role) { build(:member_role) } it { is_expected.to validate_presence_of(:namespace) } it { is_expected.to validate_presence_of(:base_access_level) } - context 'for namespace' do - subject { build(:member_role) } - + context 'when for namespace' do let_it_be(:root_group) { create(:group) } context 'when namespace is a subgroup' do it 'is invalid' do subgroup = create(:group, parent: root_group) - subject.namespace = subgroup + member_role.namespace = subgroup - expect(subject).to be_invalid + expect(member_role).to be_invalid + expect(member_role.errors[:namespace]).to include( + s_("MemberRole|must be top-level namespace") + ) end end context 'when namespace is a root group' do it 'is valid' do - subject.namespace = root_group + member_role.namespace = root_group - expect(subject).to be_valid + expect(member_role).to be_valid end end context 'when namespace is not present' do it 'is invalid with a different error message' do - subject.namespace = nil + member_role.namespace = nil + + expect(member_role).to be_invalid + expect(member_role.errors[:namespace]).to include(_("can't be blank")) + end + end + + context 'when namespace is outside hierarchy of member' do + it 'creates a validation error' do + member_role.save! + member_role.namespace = create(:group) - expect(subject).to be_invalid - expect(subject.errors.full_messages).to eq(["Namespace can't be blank"]) + expect(member_role).not_to be_valid + expect(member_role.errors[:namespace]).to include(s_("MemberRole|can't be changed")) end end end |