Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
b9a77f953c
commit
d399afc946
|
|
@ -22,7 +22,7 @@
|
|||
selected: f.object.source_project_id
|
||||
.merge-request-select.dropdown
|
||||
= f.hidden_field :source_branch
|
||||
= dropdown_toggle f.object.source_branch.presence || _("Select source branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[source_branch]", 'refs-url': refs_project_path(@source_project), selected: f.object.source_branch }, { toggle_class: "js-compare-dropdown js-source-branch monospace" }
|
||||
= dropdown_toggle f.object.source_branch.presence || _("Select source branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[source_branch]", 'refs-url': refs_project_path(@source_project), selected: f.object.source_branch, qa_selector: "source_branch_dropdown" }, { toggle_class: "js-compare-dropdown js-source-branch monospace" }
|
||||
.dropdown-menu.dropdown-menu-selectable.js-source-branch-dropdown.git-revision-dropdown
|
||||
= dropdown_title(_("Select source branch"))
|
||||
= dropdown_filter(_("Search branches"))
|
||||
|
|
@ -62,4 +62,4 @@
|
|||
|
||||
- if @merge_request.errors.any?
|
||||
= form_errors(@merge_request)
|
||||
= f.submit 'Compare branches and continue', class: "gl-button btn btn-confirm mr-compare-btn"
|
||||
= f.submit 'Compare branches and continue', class: "gl-button btn btn-confirm mr-compare-btn", data: { qa_selector: "compare_branches_button" }
|
||||
|
|
|
|||
|
|
@ -42,4 +42,4 @@
|
|||
- if project_select_button
|
||||
= render 'shared/new_project_item_select', path: 'merge_requests/new', label: _('merge request'), type: :merge_requests, with_feature_enabled: 'merge_requests'
|
||||
- else
|
||||
= link_to _('New merge request'), button_path, class: 'gl-button btn btn-confirm', title: _('New merge request'), id: 'new_merge_request_link'
|
||||
= link_to _('New merge request'), button_path, class: 'gl-button btn btn-confirm', title: _('New merge request'), id: 'new_merge_request_link', data: { qa_selector: "new_merge_request_button" }
|
||||
|
|
|
|||
|
|
@ -10,6 +10,26 @@ module QA
|
|||
Page::Project::Settings::Main.perform(&:expand_merge_requests_settings)
|
||||
Page::Project::Settings::MergeRequest.perform(&:enable_merge_train)
|
||||
end
|
||||
|
||||
# Opens the form to create a new merge request.
|
||||
# It tries to use the "Create merge request" button that appears after
|
||||
# a commit is pushed, but if that button isn't available, it uses the
|
||||
# "New merge request" button on the page that lists merge requests.
|
||||
#
|
||||
# @param [String] source_branch the branch to be merged
|
||||
def create_new(source_branch:)
|
||||
if Page::Project::Show.perform(&:has_create_merge_request_button?)
|
||||
Page::Project::Show.perform(&:new_merge_request)
|
||||
return
|
||||
end
|
||||
|
||||
Page::Project::Menu.perform(&:click_merge_requests)
|
||||
Page::MergeRequest::Index.perform(&:click_new_merge_request)
|
||||
Page::MergeRequest::New.perform do |merge_request|
|
||||
merge_request.select_source_branch(source_branch)
|
||||
merge_request.click_compare_branches_and_continue
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -218,6 +218,15 @@ module QA
|
|||
page.validate_elements_present! if page
|
||||
end
|
||||
|
||||
# Uses capybara to locate and click an element instead of `click_element`.
|
||||
# This can be used when it's not possible to add a QA selector but we still want to log the click
|
||||
#
|
||||
# @param [String] method the capybara method to use
|
||||
# @param [String] locator the selector used to find the element
|
||||
def click_via_capybara(method, locator)
|
||||
page.public_send(method, locator)
|
||||
end
|
||||
|
||||
def fill_element(name, content)
|
||||
find_element(name).set(content)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
module Page
|
||||
module MergeRequest
|
||||
class Index < Page::Base
|
||||
view 'app/views/shared/empty_states/_merge_requests.html.haml' do
|
||||
element :new_merge_request_button
|
||||
end
|
||||
|
||||
def click_new_merge_request
|
||||
click_element(:new_merge_request_button)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -12,6 +12,11 @@ module QA
|
|||
element :issuable_form_description
|
||||
end
|
||||
|
||||
view 'app/views/projects/merge_requests/creations/_new_compare.html.haml' do
|
||||
element :compare_branches_button
|
||||
element :source_branch_dropdown
|
||||
end
|
||||
|
||||
view 'app/views/projects/merge_requests/show.html.haml' do
|
||||
element :diffs_tab
|
||||
end
|
||||
|
|
@ -27,6 +32,10 @@ module QA
|
|||
"to customize #{scanner_name} settings."
|
||||
end
|
||||
|
||||
def click_compare_branches_and_continue
|
||||
click_element(:compare_branches_button)
|
||||
end
|
||||
|
||||
def create_merge_request
|
||||
click_element(:issuable_create_button, Page::MergeRequest::Show)
|
||||
end
|
||||
|
|
@ -43,6 +52,12 @@ module QA
|
|||
def has_file?(file_name)
|
||||
has_element?(:file_name_content, text: file_name)
|
||||
end
|
||||
|
||||
def select_source_branch(branch)
|
||||
click_element(:source_branch_dropdown)
|
||||
fill_element(:dropdown_input_field, branch)
|
||||
click_via_capybara(:click_on, branch)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -120,6 +120,10 @@ module QA
|
|||
click_element(:new_issue_link)
|
||||
end
|
||||
|
||||
def has_create_merge_request_button?
|
||||
has_css?(element_selector_css(:create_merge_request))
|
||||
end
|
||||
|
||||
def has_file?(name)
|
||||
return false unless has_element?(:file_tree_table)
|
||||
|
||||
|
|
@ -144,7 +148,7 @@ module QA
|
|||
|
||||
def new_merge_request
|
||||
wait_until(reload: true) do
|
||||
has_css?(element_selector_css(:create_merge_request))
|
||||
has_create_merge_request_button?
|
||||
end
|
||||
|
||||
click_element :create_merge_request
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ module QA
|
|||
populate_target_and_source_if_required
|
||||
|
||||
project.visit!
|
||||
Page::Project::Show.perform(&:new_merge_request)
|
||||
Flow::MergeRequest.create_new(source_branch: source_branch)
|
||||
Page::MergeRequest::New.perform do |new_page|
|
||||
new_page.fill_title(@title)
|
||||
new_page.choose_template(@template) if @template
|
||||
|
|
|
|||
|
|
@ -82,6 +82,12 @@ module QA
|
|||
super
|
||||
end
|
||||
|
||||
def click_via_capybara(method, locator)
|
||||
log("clicking via capybara using '#{method}(#{locator})'")
|
||||
|
||||
super
|
||||
end
|
||||
|
||||
def fill_element(name, content)
|
||||
masked_content = name.to_s.match?(/token|key|password/) ? '*****' : content
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ RSpec.describe ::Mutations::BaseMutation do
|
|||
context 'when argument is nullable and required' do
|
||||
let(:mutation_class) do
|
||||
Class.new(described_class) do
|
||||
graphql_name 'BaseMutation'
|
||||
argument :foo, GraphQL::Types::String, required: :nullable
|
||||
end
|
||||
end
|
||||
|
|
@ -35,6 +36,7 @@ RSpec.describe ::Mutations::BaseMutation do
|
|||
context 'when argument is required and NOT nullable' do
|
||||
let(:mutation_class) do
|
||||
Class.new(described_class) do
|
||||
graphql_name 'BaseMutation'
|
||||
argument :foo, GraphQL::Types::String, required: true
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ RSpec.describe Mutations::FindsByGid do
|
|||
end
|
||||
end
|
||||
|
||||
let(:query) { double('Query', schema: GitlabSchema) }
|
||||
let(:query) { query_double(schema: GitlabSchema) }
|
||||
let(:context) { GraphQL::Query::Context.new(query: query, object: nil, values: { current_user: user }) }
|
||||
let(:user) { create(:user) }
|
||||
let(:gid) { user.to_global_id }
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Mutations::MergeRequests::Accept do
|
||||
include GraphqlHelpers
|
||||
include AfterNextHelpers
|
||||
|
||||
subject(:mutation) { described_class.new(context: context, object: nil, field: nil) }
|
||||
|
|
@ -12,7 +13,7 @@ RSpec.describe Mutations::MergeRequests::Accept do
|
|||
let(:project) { create(:project, :public, :repository) }
|
||||
let(:context) do
|
||||
GraphQL::Query::Context.new(
|
||||
query: double('query', schema: GitlabSchema),
|
||||
query: query_double(schema: GitlabSchema),
|
||||
values: { current_user: user },
|
||||
object: nil
|
||||
)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Mutations::MergeRequests::Create do
|
||||
include GraphqlHelpers
|
||||
|
||||
subject(:mutation) { described_class.new(object: nil, context: context, field: nil) }
|
||||
|
||||
let_it_be(:project) { create(:project, :public, :repository) }
|
||||
|
|
@ -10,7 +12,7 @@ RSpec.describe Mutations::MergeRequests::Create do
|
|||
|
||||
let(:context) do
|
||||
GraphQL::Query::Context.new(
|
||||
query: double('query', schema: nil),
|
||||
query: query_double(schema: nil),
|
||||
values: { current_user: user },
|
||||
object: nil
|
||||
)
|
||||
|
|
|
|||
|
|
@ -3,13 +3,15 @@
|
|||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::Graphql::Pagination::Keyset::Connection do
|
||||
include GraphqlHelpers
|
||||
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/334973
|
||||
# The spec will be merged with connection_spec.rb in the future.
|
||||
let(:nodes) { Project.all.order(id: :asc) }
|
||||
let(:arguments) { {} }
|
||||
let(:query_type) { GraphQL::ObjectType.new }
|
||||
let(:schema) { GraphQL::Schema.define(query: query_type, mutation: nil)}
|
||||
let(:context) { GraphQL::Query::Context.new(query: double('query', schema: schema), values: nil, object: nil) }
|
||||
let(:context) { GraphQL::Query::Context.new(query: query_double(schema: schema), values: nil, object: nil) }
|
||||
|
||||
let_it_be(:column_order_id) { Gitlab::Pagination::Keyset::ColumnOrderDefinition.new(attribute_name: 'id', order_expression: Project.arel_table[:id].asc) }
|
||||
let_it_be(:column_order_id_desc) { Gitlab::Pagination::Keyset::ColumnOrderDefinition.new(attribute_name: 'id', order_expression: Project.arel_table[:id].desc) }
|
||||
|
|
|
|||
|
|
@ -3,11 +3,13 @@
|
|||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::Graphql::Pagination::Keyset::Connection do
|
||||
include GraphqlHelpers
|
||||
|
||||
let(:nodes) { Project.all.order(id: :asc) }
|
||||
let(:arguments) { {} }
|
||||
let(:query_type) { GraphQL::ObjectType.new }
|
||||
let(:schema) { GraphQL::Schema.define(query: query_type, mutation: nil)}
|
||||
let(:context) { GraphQL::Query::Context.new(query: double('query', schema: schema), values: nil, object: nil) }
|
||||
let(:context) { GraphQL::Query::Context.new(query: query_double(schema: schema), values: nil, object: nil) }
|
||||
|
||||
subject(:connection) do
|
||||
described_class.new(nodes, **{ context: context, max_page_size: 3 }.merge(arguments))
|
||||
|
|
|
|||
|
|
@ -346,6 +346,10 @@ module GraphqlHelpers
|
|||
end
|
||||
end
|
||||
|
||||
def query_double(schema:)
|
||||
double('query', schema: schema)
|
||||
end
|
||||
|
||||
def wrap_fields(fields)
|
||||
fields = Array.wrap(fields).map do |field|
|
||||
case field
|
||||
|
|
|
|||
Loading…
Reference in New Issue