Commit 44bd41fe authored by Anastasia McDonald's avatar Anastasia McDonald

Add E2E to test deleting a file from snippet

See https://gitlab.com/gitlab-org/quality/testcases/-/issues/1023
parent 119b6f30
...@@ -50,6 +50,7 @@ export default { ...@@ -50,6 +50,7 @@ export default {
variant="danger" variant="danger"
category="secondary" category="secondary"
:disabled="!canDelete" :disabled="!canDelete"
data-qa-selector="delete_file_button"
@click="$emit('delete')" @click="$emit('delete')"
>{{ s__('Snippets|Delete file') }}</gl-button >{{ s__('Snippets|Delete file') }}</gl-button
> >
......
...@@ -110,6 +110,18 @@ module QA ...@@ -110,6 +110,18 @@ module QA
end end
end end
def has_no_file_name?(file_name, file_number = nil)
if file_number
within_element_by_index(:file_title_content, file_number - 1) do
has_no_text?(file_name)
end
else
within_element(:file_title_content) do
has_no_text?(file_name)
end
end
end
def has_file_content?(file_content, file_number = nil) def has_file_content?(file_content, file_number = nil)
if file_number if file_number
within_element_by_index(:file_content, file_number - 1) do within_element_by_index(:file_content, file_number - 1) do
......
...@@ -14,6 +14,10 @@ module QA ...@@ -14,6 +14,10 @@ module QA
element :file_holder_container element :file_holder_container
end end
view 'app/assets/javascripts/blob/components/blob_edit_header.vue' do
element :delete_file_button
end
def add_to_file_content(content) def add_to_file_content(content)
text_area.set content text_area.set content
text_area.has_text?(content) # wait for changes to take effect text_area.has_text?(content) # wait for changes to take effect
...@@ -47,6 +51,12 @@ module QA ...@@ -47,6 +51,12 @@ module QA
end end
end end
def click_delete_file(file_number)
within_element_by_index(:file_holder_container, file_number - 1) do
click_element(:delete_file_button)
end
end
def save_changes def save_changes
wait_until(reload: false) { !find_element(:submit_button).disabled? } wait_until(reload: false) { !find_element(:submit_button).disabled? }
click_element(:submit_button, Page::Dashboard::Snippet::Show) click_element(:submit_button, Page::Dashboard::Snippet::Show)
......
...@@ -56,14 +56,16 @@ module QA ...@@ -56,14 +56,16 @@ module QA
title: title, title: title,
description: description, description: description,
visibility: visibility.downcase, visibility: visibility.downcase,
files: [ files: all_file_contents
{
content: file_content,
file_path: file_name
}
]
} }
end end
def all_file_contents
@files.insert(0, { name: @file_name, content: @file_content })
@files.each do |file|
file[:file_path] = file.delete(:name)
end
end
end end
end end
end end
# frozen_string_literal: true
module QA
RSpec.describe 'Create' do
describe 'Multiple file snippet' do
let(:personal_snippet) do
Resource::Snippet.fabricate_via_api! do |snippet|
snippet.title = 'Personal snippet to delete file from'
snippet.file_name = 'Original file name'
snippet.file_content = 'Original file content'
snippet.add_files do |files|
files.append(name: 'Second file name', content: 'Second file content')
end
end
end
let(:project_snippet) do
Resource::ProjectSnippet.fabricate_via_api! do |snippet|
snippet.title = 'Project snippet to delete file from'
snippet.file_name = 'Original file name'
snippet.file_content = 'Original file content'
snippet.add_files do |files|
files.append(name: 'Second file name', content: 'Second file content')
end
end
end
before do
Flow::Login.sign_in
end
shared_examples 'deleting file from snippet' do |snippet_type|
it "deletes second file from an existing #{snippet_type} to make it single-file" do
send(snippet_type).visit!
Page::Dashboard::Snippet::Show.perform(&:click_edit_button)
Page::Dashboard::Snippet::Edit.perform do |snippet|
snippet.click_delete_file(2)
snippet.save_changes
end
Page::Dashboard::Snippet::Show.perform do |snippet|
aggregate_failures 'file names and contents' do
expect(snippet).to have_file_name('Original file name')
expect(snippet).to have_file_content('Original file content')
expect(snippet).to have_no_file_name('Second file name')
expect(snippet).to have_no_file_content('Second file content')
end
end
end
end
it_behaves_like 'deleting file from snippet', :personal_snippet
it_behaves_like 'deleting file from snippet', :project_snippet
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment