diff options
Diffstat (limited to 'spec/models/member_spec.rb')
-rw-r--r-- | spec/models/member_spec.rb | 64 |
1 files changed, 48 insertions, 16 deletions
diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 5f3a67b52ba..247be7654d8 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -143,16 +143,10 @@ RSpec.describe Member do @blocked_maintainer = project.members.find_by(user_id: @blocked_maintainer_user.id, access_level: Gitlab::Access::MAINTAINER) @blocked_developer = project.members.find_by(user_id: @blocked_developer_user.id, access_level: Gitlab::Access::DEVELOPER) - @invited_member = create(:project_member, :developer, - project: project, - invite_token: '1234', - invite_email: 'toto1@example.com') + @invited_member = create(:project_member, :invited, :developer, project: project) accepted_invite_user = build(:user, state: :active) - @accepted_invite_member = create(:project_member, :developer, - project: project, - invite_token: '1234', - invite_email: 'toto2@example.com') + @accepted_invite_member = create(:project_member, :invited, :developer, project: project) .tap { |u| u.accept_invite!(accepted_invite_user) } requested_user = create(:user).tap { |u| project.request_access(u) } @@ -325,12 +319,12 @@ RSpec.describe Member do describe '.search_invite_email' do it 'returns only members the matching e-mail' do - create(:group_member, :invited) + invited_member = create(:group_member, :invited, invite_email: 'invited@example.com') - invited = described_class.search_invite_email(@invited_member.invite_email) + invited = described_class.search_invite_email(invited_member.invite_email) expect(invited.count).to eq(1) - expect(invited.first).to eq(@invited_member) + expect(invited.first).to eq(invited_member) expect(described_class.search_invite_email('bad-email@example.com').count).to eq(0) end @@ -414,6 +408,44 @@ RSpec.describe Member do it { is_expected.not_to include @member_with_minimal_access } end + describe '.connected_to_user' do + subject { described_class.connected_to_user.to_a } + + it { is_expected.to include @owner } + it { is_expected.to include @maintainer } + it { is_expected.to include @accepted_invite_member } + it { is_expected.to include @accepted_request_member } + it { is_expected.to include @blocked_maintainer } + it { is_expected.to include @blocked_developer } + it { is_expected.to include @requested_member } + it { is_expected.to include @member_with_minimal_access } + it { is_expected.not_to include @invited_member } + end + + describe '.authorizable' do + subject { described_class.authorizable.to_a } + + it 'includes the member who has an associated user record,'\ + 'but also having an invite_token' do + member = create(:project_member, + :developer, + :invited, + user: create(:user)) + + expect(subject).to include(member) + end + + it { is_expected.to include @owner } + it { is_expected.to include @maintainer } + it { is_expected.to include @accepted_invite_member } + it { is_expected.to include @accepted_request_member } + it { is_expected.to include @blocked_maintainer } + it { is_expected.to include @blocked_developer } + it { is_expected.not_to include @invited_member } + it { is_expected.not_to include @requested_member } + it { is_expected.not_to include @member_with_minimal_access } + end + describe '.distinct_on_user_with_max_access_level' do let_it_be(:other_group) { create(:group) } let_it_be(:member_with_lower_access_level) { create(:group_member, :developer, group: other_group, user: @owner_user) } @@ -884,7 +916,7 @@ RSpec.describe Member do user = create(:user) member = project.add_reporter(user) - member.destroy + member.destroy! expect(user.authorized_projects).not_to include(project) end @@ -901,7 +933,7 @@ RSpec.describe Member do with_them do describe 'create member' do - let!(:source) { create(source_type) } + let!(:source) { create(source_type) } # rubocop:disable Rails/SaveBang subject { create(member_type, :guest, user: user, source: source) } @@ -913,20 +945,20 @@ RSpec.describe Member do describe 'update member' do context 'when access level was changed' do - subject { member.update(access_level: Gitlab::Access::GUEST) } + subject { member.update!(access_level: Gitlab::Access::GUEST) } include_examples 'update highest role with exclusive lease' end context 'when access level was not changed' do - subject { member.update(notification_level: NotificationSetting.levels[:disabled]) } + subject { member.update!(notification_level: NotificationSetting.levels[:disabled]) } include_examples 'does not update the highest role' end end describe 'destroy member' do - subject { member.destroy } + subject { member.destroy! } include_examples 'update highest role with exclusive lease' end |