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
path: root/qa
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-07 09:10:43 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-07 09:10:43 +0300
commita158bebe03b366b6463af181b9ee6f6c2b3850a3 (patch)
treeae65950cccfa3d99292a5c083df0cf786c74dd2b /qa
parent170765911848f0ad68e0f26f6413dd770d36f364 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r--qa/qa/page/dashboard/snippet/index.rb22
-rw-r--r--qa/qa/resource/snippet.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb82
3 files changed, 105 insertions, 1 deletions
diff --git a/qa/qa/page/dashboard/snippet/index.rb b/qa/qa/page/dashboard/snippet/index.rb
index 8c4abfdf606..63589c376f6 100644
--- a/qa/qa/page/dashboard/snippet/index.rb
+++ b/qa/qa/page/dashboard/snippet/index.rb
@@ -10,10 +10,32 @@ module QA
element :global_new_snippet_link
end
+ view 'app/views/shared/snippets/_snippet.html.haml' do
+ element :snippet_link
+ element :snippet_visibility_content
+ element :snippet_file_count_content
+ end
+
def go_to_new_snippet_page
click_element :new_menu_toggle
click_element :global_new_snippet_link
end
+
+ def has_snippet_title?(snippet_title)
+ has_element?(:snippet_link, snippet_title: snippet_title)
+ end
+
+ def has_visibility_level?(snippet_title, visibility)
+ within_element(:snippet_link, snippet_title: snippet_title) do
+ has_element?(:snippet_visibility_content, snippet_visibility: visibility)
+ end
+ end
+
+ def has_number_of_files?(snippet_title, number)
+ within_element(:snippet_link, snippet_title: snippet_title) do
+ has_element?(:snippet_file_count_content, snippet_files: number)
+ end
+ end
end
end
end
diff --git a/qa/qa/resource/snippet.rb b/qa/qa/resource/snippet.rb
index 6423dc7a41c..a94ae02b8fd 100644
--- a/qa/qa/resource/snippet.rb
+++ b/qa/qa/resource/snippet.rb
@@ -3,7 +3,7 @@
module QA
module Resource
class Snippet < Base
- attr_accessor :title, :description, :file_content, :visibility, :file_name
+ attr_accessor :title, :description, :file_content, :visibility, :file_name, :files
attribute :id
attribute :http_url_to_repo
diff --git a/qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb b/qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb
new file mode 100644
index 00000000000..9c7dc868a2e
--- /dev/null
+++ b/qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb
@@ -0,0 +1,82 @@
+# frozen_string_literal: true
+
+module QA
+ RSpec.describe 'Create' do
+ describe 'Snippet index page' do
+ let(:personal_snippet_with_single_file) do
+ Resource::Snippet.fabricate_via_api! do |snippet|
+ snippet.title = "Personal snippet with one file-#{SecureRandom.hex(8)}"
+ snippet.visibility = 'Public'
+ end
+ end
+
+ let(:personal_snippet_with_multiple_files) do
+ Resource::Snippet.fabricate_via_api! do |snippet|
+ snippet.title = "Personal snippet with multiple files-#{SecureRandom.hex(8)}"
+ snippet.visibility = 'Private'
+ snippet.file_name = 'First file name'
+ snippet.file_content = 'first file content'
+
+ snippet.add_files do |files|
+ files.append(name: 'Second file name', content: 'second file content')
+ files.append(name: 'Third file name', content: 'third file content')
+ end
+ end
+ end
+
+ let(:project_snippet_with_single_file) do
+ Resource::ProjectSnippet.fabricate_via_api! do |snippet|
+ snippet.title = "Project snippet with one file-#{SecureRandom.hex(8)}"
+ snippet.visibility = 'Private'
+ end
+ end
+
+ let(:project_snippet_with_multiple_files) do
+ Resource::ProjectSnippet.fabricate_via_api! do |snippet|
+ snippet.title = "Project snippet with multiple files-#{SecureRandom.hex(8)}"
+ snippet.visibility = 'Public'
+ snippet.file_name = 'First file name'
+ snippet.file_content = 'first file content'
+
+ snippet.add_files do |files|
+ files.append(name: 'Second file name', content: 'second file content')
+ files.append(name: 'Third file name', content: 'third file content')
+ end
+ end
+ end
+
+ before do
+ Flow::Login.sign_in
+ end
+
+ after do
+ personal_snippet_with_single_file.remove_via_api!
+ personal_snippet_with_multiple_files.remove_via_api!
+ project_snippet_with_single_file.remove_via_api!
+ project_snippet_with_multiple_files.remove_via_api!
+ end
+
+ shared_examples 'displaying details on index page' do |snippet_type|
+ it "shows correct details of #{snippet_type} including file number" do
+ send(snippet_type)
+ Page::Main::Menu.perform do |menu|
+ menu.go_to_more_dropdown_option(:snippets_link)
+ end
+
+ Page::Dashboard::Snippet::Index.perform do |snippet|
+ aggregate_failures 'file content verification' do
+ expect(snippet).to have_snippet_title(send(snippet_type).title)
+ expect(snippet).to have_visibility_level(send(snippet_type).title, send(snippet_type).visibility)
+ expect(snippet).to have_number_of_files(send(snippet_type).title, send(snippet_type).files.count)
+ end
+ end
+ end
+ end
+
+ it_behaves_like 'displaying details on index page', :personal_snippet_with_single_file
+ it_behaves_like 'displaying details on index page', :personal_snippet_with_multiple_files
+ it_behaves_like 'displaying details on index page', :project_snippet_with_single_file
+ it_behaves_like 'displaying details on index page', :project_snippet_with_multiple_files
+ end
+ end
+end