diff options
Diffstat (limited to 'spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb')
-rw-r--r-- | spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb b/spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb new file mode 100644 index 00000000000..fcf67120b0e --- /dev/null +++ b/spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Resolvers::GroupMembers::NotificationEmailResolver do + include GraphqlHelpers + + describe '#resolve' do + let_it_be(:group) { create(:group) } + let_it_be(:developer) { create(:user) } + + before do + group.add_developer(developer) + end + + specify do + expect(described_class).to have_nullable_graphql_type(GraphQL::Types::String) + end + + subject { batch_sync { resolve_notification_email(developer.group_members.first, current_user) }} + + context 'when current_user is admin' do + let(:current_user) { create(:user, :admin) } + + before do + allow(current_user).to receive(:can_admin_all_resources?).and_return(true) + end + + it 'returns email' do + expect(subject).to eq(developer.email) + end + end + + context 'when current_user is not admin' do + let(:current_user) { create(:user) } + + it 'raises ResourceNotAvailable error' do + expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable) + end + end + end + + def resolve_notification_email(obj, user) + resolve(described_class, obj: obj, ctx: { current_user: user }) + end +end |