diff options
Diffstat (limited to 'spec/support/shared_examples/graphql/mutations/create_todo_shared_examples.rb')
-rw-r--r-- | spec/support/shared_examples/graphql/mutations/create_todo_shared_examples.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/spec/support/shared_examples/graphql/mutations/create_todo_shared_examples.rb b/spec/support/shared_examples/graphql/mutations/create_todo_shared_examples.rb new file mode 100644 index 00000000000..fbef8be9e88 --- /dev/null +++ b/spec/support/shared_examples/graphql/mutations/create_todo_shared_examples.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'create todo mutation' do + let_it_be(:current_user) { create(:user) } + + let(:mutation) { described_class.new(object: nil, context: { current_user: current_user }, field: nil) } + + context 'when user does not have permission to create todo' do + it 'raises error' do + expect { mutation.resolve(target_id: global_id_of(target)) } + .to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable) + end + end + + context 'when user has permission to create todo' do + it 'creates a todo' do + target.resource_parent.add_reporter(current_user) + + result = mutation.resolve(target_id: global_id_of(target)) + + expect(result[:todo]).to be_valid + expect(result[:todo].target).to eq(target) + expect(result[:todo].state).to eq('pending') + end + end +end |