Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-07-20 15:26:25 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-07-20 15:26:25 +0300
commita09983ae35713f5a2bbb100981116d31ce99826e (patch)
tree2ee2af7bd104d57086db360a7e6d8c9d5d43667a /spec/requests/api/graphql/mutations/snippets
parent18c5ab32b738c0b6ecb4d0df3994000482f34bd8 (diff)
Add latest changes from gitlab-org/gitlab@13-2-stable-ee
Diffstat (limited to 'spec/requests/api/graphql/mutations/snippets')
-rw-r--r--spec/requests/api/graphql/mutations/snippets/create_spec.rb52
-rw-r--r--spec/requests/api/graphql/mutations/snippets/destroy_spec.rb2
-rw-r--r--spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb2
-rw-r--r--spec/requests/api/graphql/mutations/snippets/update_spec.rb48
4 files changed, 91 insertions, 13 deletions
diff --git a/spec/requests/api/graphql/mutations/snippets/create_spec.rb b/spec/requests/api/graphql/mutations/snippets/create_spec.rb
index 9052f54b171..e2474e1bcce 100644
--- a/spec/requests/api/graphql/mutations/snippets/create_spec.rb
+++ b/spec/requests/api/graphql/mutations/snippets/create_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe 'Creating a Snippet' do
+RSpec.describe 'Creating a Snippet' do
include GraphqlHelpers
let_it_be(:user) { create(:user) }
@@ -14,9 +14,8 @@ describe 'Creating a Snippet' do
let(:visibility_level) { 'public' }
let(:project_path) { nil }
let(:uploaded_files) { nil }
-
- let(:mutation) do
- variables = {
+ let(:mutation_vars) do
+ {
content: content,
description: description,
visibility_level: visibility_level,
@@ -25,8 +24,10 @@ describe 'Creating a Snippet' do
project_path: project_path,
uploaded_files: uploaded_files
}
+ end
- graphql_mutation(:create_snippet, variables)
+ let(:mutation) do
+ graphql_mutation(:create_snippet, mutation_vars)
end
def mutation_response
@@ -137,6 +138,47 @@ describe 'Creating a Snippet' do
end
end
+ context 'when snippet is created using the files param' do
+ let(:action) { :create }
+ let(:file_1) { { filePath: 'example_file1', content: 'This is the example file 1' }}
+ let(:file_2) { { filePath: 'example_file2', content: 'This is the example file 2' }}
+ let(:actions) { [{ action: action }.merge(file_1), { action: action }.merge(file_2)] }
+ let(:mutation_vars) do
+ {
+ description: description,
+ visibility_level: visibility_level,
+ project_path: project_path,
+ title: title,
+ files: actions
+ }
+ end
+
+ it 'creates the Snippet' do
+ expect do
+ subject
+ end.to change { Snippet.count }.by(1)
+ end
+
+ it 'returns the created Snippet' do
+ subject
+
+ expect(mutation_response['snippet']['title']).to eq(title)
+ expect(mutation_response['snippet']['description']).to eq(description)
+ expect(mutation_response['snippet']['visibilityLevel']).to eq(visibility_level)
+ expect(mutation_response['snippet']['blobs'][0]['plainData']).to match(file_1[:content])
+ expect(mutation_response['snippet']['blobs'][0]['fileName']).to match(file_1[:file_path])
+ expect(mutation_response['snippet']['blobs'][1]['plainData']).to match(file_2[:content])
+ expect(mutation_response['snippet']['blobs'][1]['fileName']).to match(file_2[:file_path])
+ end
+
+ context 'when action is invalid' do
+ let(:file_1) { { filePath: 'example_file1' }}
+
+ it_behaves_like 'a mutation that returns errors in the response', errors: ['Snippet actions have invalid data']
+ it_behaves_like 'does not create snippet'
+ end
+ end
+
context 'when there are ActiveRecord validation errors' do
let(:title) { '' }
diff --git a/spec/requests/api/graphql/mutations/snippets/destroy_spec.rb b/spec/requests/api/graphql/mutations/snippets/destroy_spec.rb
index cb9aeea74b2..8ade72635af 100644
--- a/spec/requests/api/graphql/mutations/snippets/destroy_spec.rb
+++ b/spec/requests/api/graphql/mutations/snippets/destroy_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe 'Destroying a Snippet' do
+RSpec.describe 'Destroying a Snippet' do
include GraphqlHelpers
let(:current_user) { snippet.author }
diff --git a/spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb b/spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb
index 6d4dce3f6f1..97e6ae8fda8 100644
--- a/spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb
+++ b/spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe 'Mark snippet as spam', :do_not_mock_admin_mode do
+RSpec.describe 'Mark snippet as spam', :do_not_mock_admin_mode do
include GraphqlHelpers
let_it_be(:admin) { create(:admin) }
diff --git a/spec/requests/api/graphql/mutations/snippets/update_spec.rb b/spec/requests/api/graphql/mutations/snippets/update_spec.rb
index 968ea5aed52..3b2f9dc0f19 100644
--- a/spec/requests/api/graphql/mutations/snippets/update_spec.rb
+++ b/spec/requests/api/graphql/mutations/snippets/update_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe 'Updating a Snippet' do
+RSpec.describe 'Updating a Snippet' do
include GraphqlHelpers
let_it_be(:original_content) { 'Initial content' }
@@ -16,8 +16,8 @@ describe 'Updating a Snippet' do
let(:current_user) { snippet.author }
let(:snippet_gid) { GitlabSchema.id_from_object(snippet).to_s }
- let(:mutation) do
- variables = {
+ let(:mutation_vars) do
+ {
id: snippet_gid,
content: updated_content,
description: updated_description,
@@ -25,8 +25,9 @@ describe 'Updating a Snippet' do
file_name: updated_file_name,
title: updated_title
}
-
- graphql_mutation(:update_snippet, variables)
+ end
+ let(:mutation) do
+ graphql_mutation(:update_snippet, mutation_vars)
end
def mutation_response
@@ -101,7 +102,6 @@ describe 'Updating a Snippet' do
end
it_behaves_like 'graphql update actions'
-
it_behaves_like 'when the snippet is not found'
end
@@ -148,4 +148,40 @@ describe 'Updating a Snippet' do
it_behaves_like 'when the snippet is not found'
end
+
+ context 'when using the files params' do
+ let!(:snippet) { create(:personal_snippet, :private, :repository) }
+ let(:updated_content) { 'updated_content' }
+ let(:updated_file) { 'CHANGELOG' }
+ let(:deleted_file) { 'README' }
+ let(:mutation_vars) do
+ {
+ id: snippet_gid,
+ files: [
+ { action: :update, filePath: updated_file, content: updated_content },
+ { action: :delete, filePath: deleted_file }
+ ]
+ }
+ end
+
+ it 'updates the Snippet' do
+ blob_to_update = blob_at(updated_file)
+ expect(blob_to_update.data).not_to eq updated_content
+
+ blob_to_delete = blob_at(deleted_file)
+ expect(blob_to_delete).to be_present
+
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ blob_to_update = blob_at(updated_file)
+ expect(blob_to_update.data).to eq updated_content
+
+ blob_to_delete = blob_at(deleted_file)
+ expect(blob_to_delete).to be_nil
+ end
+
+ def blob_at(filename)
+ snippet.repository.blob_at('HEAD', filename)
+ end
+ end
end