Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
af9e8c5f25
commit
da52493311
|
@ -68,6 +68,6 @@ RSpec.describe Resolvers::AlertManagement::AlertResolver do
|
|||
private
|
||||
|
||||
def resolve_alerts(args = {}, context = { current_user: current_user })
|
||||
resolve(described_class, obj: project, args: args, ctx: context)
|
||||
resolve(described_class, obj: project, args: args, ctx: context, arg_style: :internal)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -128,6 +128,6 @@ RSpec.describe Resolvers::BoardListIssuesResolver do
|
|||
end
|
||||
|
||||
def resolve_board_list_issues(args: {}, current_user: user)
|
||||
resolve(described_class, obj: list, args: args, ctx: { current_user: current_user })
|
||||
resolve(described_class, obj: list, args: args, ctx: { current_user: current_user }, arg_style: :internal)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -100,6 +100,8 @@ RSpec.describe Resolvers::BoardListsResolver do
|
|||
end
|
||||
|
||||
def resolve_board_lists(args: {}, current_user: user)
|
||||
resolve(described_class, obj: board, args: args, ctx: { current_user: current_user })
|
||||
resolve(described_class, obj: board, args: args, ctx: { current_user: current_user },
|
||||
arg_style: :internal
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,7 +6,10 @@ RSpec.describe Resolvers::Ci::GroupRunnersResolver do
|
|||
include GraphqlHelpers
|
||||
|
||||
describe '#resolve' do
|
||||
subject { resolve(described_class, obj: obj, ctx: { current_user: user }, args: args) }
|
||||
subject do
|
||||
resolve(described_class, obj: obj, ctx: { current_user: user }, args: args,
|
||||
arg_style: :internal)
|
||||
end
|
||||
|
||||
include_context 'runners resolver setup'
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ RSpec.describe Resolvers::Ci::JobsResolver do
|
|||
describe '#resolve' do
|
||||
context 'when security_report_types is empty' do
|
||||
it "returns all of the pipeline's jobs" do
|
||||
jobs = resolve(described_class, obj: pipeline)
|
||||
jobs = resolve(described_class, obj: pipeline, arg_style: :internal)
|
||||
|
||||
expect(jobs).to contain_exactly(
|
||||
have_attributes(name: 'Normal job'),
|
||||
|
@ -37,7 +37,8 @@ RSpec.describe Resolvers::Ci::JobsResolver do
|
|||
::Types::Security::ReportTypeEnum.values['SAST'].value,
|
||||
::Types::Security::ReportTypeEnum.values['DAST'].value
|
||||
]
|
||||
jobs = resolve(described_class, obj: pipeline, args: { security_report_types: report_types })
|
||||
jobs = resolve(described_class, obj: pipeline, args: { security_report_types: report_types },
|
||||
arg_style: :internal)
|
||||
|
||||
expect(jobs).to contain_exactly(
|
||||
have_attributes(name: 'DAST job'),
|
||||
|
@ -48,7 +49,7 @@ RSpec.describe Resolvers::Ci::JobsResolver do
|
|||
|
||||
context 'when a job has tags' do
|
||||
it "returns jobs with tags when applicable" do
|
||||
jobs = resolve(described_class, obj: pipeline)
|
||||
jobs = resolve(described_class, obj: pipeline, arg_style: :internal)
|
||||
expect(jobs).to contain_exactly(
|
||||
have_attributes(tag_list: []),
|
||||
have_attributes(tag_list: []),
|
||||
|
|
|
@ -9,7 +9,10 @@ RSpec.describe Resolvers::Ci::RunnersResolver do
|
|||
let(:obj) { nil }
|
||||
let(:args) { {} }
|
||||
|
||||
subject { resolve(described_class, obj: obj, ctx: { current_user: user }, args: args) }
|
||||
subject do
|
||||
resolve(described_class, obj: obj, ctx: { current_user: user }, args: args,
|
||||
arg_style: :internal)
|
||||
end
|
||||
|
||||
include_context 'runners resolver setup'
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ RSpec.describe ::CachingArrayResolver do
|
|||
expect(User).to receive(:from_union).twice.and_call_original
|
||||
|
||||
results = users.in_groups_of(2, false).map do |users|
|
||||
resolve(resolver, args: { username: users.map(&:username) }, schema: schema)
|
||||
resolve(resolver, args: { username: users.map(&:username) }, schema: schema, arg_style: :internal)
|
||||
end
|
||||
|
||||
expect(results.flat_map(&method(:force))).to match_array(users)
|
||||
|
@ -208,6 +208,6 @@ RSpec.describe ::CachingArrayResolver do
|
|||
args = { is_admin: admin }
|
||||
opts = resolver.field_options
|
||||
allow(resolver).to receive(:field_options).and_return(opts.merge(max_page_size: max_page_size))
|
||||
resolve(resolver, args: args, ctx: query_context, schema: schema)
|
||||
resolve(resolver, args: args, ctx: query_context, schema: schema, arg_style: :internal)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -15,7 +15,10 @@ RSpec.describe Resolvers::ContainerRepositoriesResolver do
|
|||
describe '#resolve' do
|
||||
let(:object) { project }
|
||||
|
||||
subject { resolve(described_class, ctx: { current_user: user }, args: args, obj: object) }
|
||||
subject do
|
||||
resolve(described_class, ctx: { current_user: user }, args: args, obj: object,
|
||||
arg_style: :internal)
|
||||
end
|
||||
|
||||
shared_examples 'returning container repositories' do
|
||||
it { is_expected.to contain_exactly(container_repositories) }
|
||||
|
|
|
@ -12,7 +12,10 @@ RSpec.describe Resolvers::ContainerRepositoryTagsResolver do
|
|||
let(:args) { { sort: nil } }
|
||||
|
||||
describe '#resolve' do
|
||||
let(:resolver) { resolve(described_class, ctx: { current_user: user }, obj: repository, args: args) }
|
||||
let(:resolver) do
|
||||
resolve(described_class, ctx: { current_user: user }, obj: repository, args: args,
|
||||
arg_style: :internal)
|
||||
end
|
||||
|
||||
before do
|
||||
stub_container_registry_config(enabled: true)
|
||||
|
|
|
@ -10,7 +10,7 @@ RSpec.describe Resolvers::GroupMilestonesResolver do
|
|||
let_it_be(:current_user) { create(:user) }
|
||||
|
||||
def resolve_group_milestones(args = {}, context = { current_user: current_user })
|
||||
resolve(described_class, obj: group, args: args, ctx: context)
|
||||
resolve(described_class, obj: group, args: args, ctx: context, arg_style: :internal)
|
||||
end
|
||||
|
||||
let_it_be(:now) { Time.now }
|
||||
|
|
|
@ -2,15 +2,16 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Resolvers::GroupPackagesResolver do
|
||||
RSpec.describe 'Resolvers::GroupPackagesResolver' do
|
||||
include GraphqlHelpers
|
||||
|
||||
let_it_be(:described_class) { Resolvers::GroupPackagesResolver }
|
||||
let_it_be(:user) { create(:user) }
|
||||
let_it_be(:group) { create(:group, :public) }
|
||||
let_it_be(:project) { create(:project, :public, group: group, path: 'a') }
|
||||
|
||||
let(:args) do
|
||||
{ sort: :created_desc }
|
||||
{ sort: 'CREATED_DESC' }
|
||||
end
|
||||
|
||||
describe '#resolve' do
|
||||
|
@ -26,13 +27,13 @@ RSpec.describe Resolvers::GroupPackagesResolver do
|
|||
let_it_be(:package4) { create(:package, project: project2 ) }
|
||||
|
||||
context 'filter by package_name' do
|
||||
let(:args) { { sort: :project_path_desc } }
|
||||
let(:args) { { sort: 'PROJECT_PATH_DESC' } }
|
||||
|
||||
it { is_expected.to eq([package4, package2, package3, package]) }
|
||||
end
|
||||
|
||||
context 'filter by package_type' do
|
||||
let(:args) { { sort: :project_path_asc } }
|
||||
let(:args) { { sort: 'PROJECT_PATH_ASC' } }
|
||||
|
||||
it { is_expected.to eq([package, package3, package2, package4]) }
|
||||
end
|
||||
|
|
|
@ -66,6 +66,6 @@ RSpec.describe 'Resolvers::IncidentManagement::TimelineEventsResolver' do
|
|||
private
|
||||
|
||||
def resolve_timeline_events(args = {}, context = { current_user: current_user })
|
||||
resolve(resolver, obj: incident, args: args, ctx: context, arg_style: :internal_prepared)
|
||||
resolve(resolver, obj: incident, args: args, ctx: context)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -701,6 +701,6 @@ RSpec.describe Resolvers::IssuesResolver do
|
|||
end
|
||||
|
||||
def resolve_issues(args = {}, context = { current_user: current_user })
|
||||
resolve(described_class, obj: project, args: args, ctx: context)
|
||||
resolve(described_class, obj: project, args: args, ctx: context, arg_style: :internal)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -411,6 +411,6 @@ RSpec.describe Resolvers::MergeRequestsResolver do
|
|||
end
|
||||
|
||||
def resolve_mr(project, resolver: described_class, user: current_user, **args)
|
||||
resolve(resolver, obj: project, args: args, ctx: { current_user: user })
|
||||
resolve(resolver, obj: project, args: args, ctx: { current_user: user }, arg_style: :internal)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -152,6 +152,6 @@ RSpec.describe Resolvers::NamespaceProjectsResolver do
|
|||
end
|
||||
|
||||
def resolve_projects(args = { include_subgroups: false, sort: nil, search: nil, ids: nil }, context = { current_user: current_user })
|
||||
resolve(described_class, obj: namespace, args: args, ctx: context)
|
||||
resolve(described_class, obj: namespace, args: args, ctx: context, arg_style: :internal)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Resolvers::PackagesBaseResolver do
|
|||
include GraphqlHelpers
|
||||
|
||||
describe '#resolve' do
|
||||
subject { resolve(described_class) }
|
||||
subject { resolve(described_class, arg_style: :internal) }
|
||||
|
||||
it 'throws an error' do
|
||||
expect { subject }.to raise_error(NotImplementedError)
|
||||
|
|
|
@ -2,12 +2,15 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Resolvers::ProjectMilestonesResolver do
|
||||
RSpec.describe 'Resolvers::ProjectMilestonesResolver' do
|
||||
include GraphqlHelpers
|
||||
|
||||
describe '#resolve' do
|
||||
let_it_be(:described_class) { Resolvers::ProjectMilestonesResolver }
|
||||
let_it_be(:project) { create(:project, :private) }
|
||||
let_it_be(:current_user) { create(:user) }
|
||||
let_it_be(:now) { Time.now }
|
||||
let_it_be(:now_date) { now.to_date }
|
||||
|
||||
before_all do
|
||||
project.add_developer(current_user)
|
||||
|
@ -25,7 +28,7 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
|
||||
it 'calls MilestonesFinder to retrieve all milestones' do
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(project_ids: project.id, state: 'all'))
|
||||
.with(args(project_ids: project.id, state: 'all', sort: :due_date_asc))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones
|
||||
|
@ -42,7 +45,8 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
|
||||
it 'calls MilestonesFinder with correct parameters' do
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(project_ids: project.id, group_ids: contain_exactly(group, parent_group), state: 'all'))
|
||||
.with(args(project_ids: project.id, group_ids: contain_exactly(group, parent_group),
|
||||
state: 'all', sort: :due_date_asc))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(include_ancestors: true)
|
||||
|
@ -54,7 +58,7 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
milestone = create(:milestone, project: project)
|
||||
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(ids: [milestone.id.to_s], project_ids: project.id, state: 'all'))
|
||||
.with(args(ids: [milestone.id.to_s], project_ids: project.id, state: 'all', sort: :due_date_asc))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(ids: [milestone.to_global_id])
|
||||
|
@ -64,7 +68,7 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
context 'by state' do
|
||||
it 'calls MilestonesFinder with correct parameters' do
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(project_ids: project.id, state: 'closed'))
|
||||
.with(args(project_ids: project.id, state: 'closed', sort: :due_date_asc))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(state: 'closed')
|
||||
|
@ -74,13 +78,13 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
context 'by sort' do
|
||||
it 'calls MilestonesFinder with correct parameters' do
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(project_ids: project.id, state: 'all', sort: :due_date_desc))
|
||||
.with(args(project_ids: project.id, state: 'all', sort: :due_date_asc))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(sort: :due_date_desc)
|
||||
resolve_project_milestones(sort: 'DUE_DATE_ASC')
|
||||
end
|
||||
|
||||
%i[expired_last_due_date_asc expired_last_due_date_desc].each do |sort_by|
|
||||
%w[EXPIRED_LAST_DUE_DATE_ASC EXPIRED_LAST_DUE_DATE_DESC].each do |sort_by|
|
||||
it "uses offset-pagination when sorting by #{sort_by}" do
|
||||
resolved = resolve_project_milestones(sort: sort_by)
|
||||
|
||||
|
@ -92,11 +96,12 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
context 'by timeframe' do
|
||||
context 'when start_date and end_date are present' do
|
||||
it 'calls MilestonesFinder with correct parameters' do
|
||||
start_date = Time.now
|
||||
end_date = Time.now + 5.days
|
||||
start_date = now
|
||||
end_date = now + 5.days
|
||||
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(project_ids: project.id, state: 'all', start_date: start_date, end_date: end_date))
|
||||
.with(args(project_ids: project.id, state: 'all',
|
||||
start_date: start_date, end_date: end_date, sort: :due_date_asc))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(start_date: start_date, end_date: end_date)
|
||||
|
@ -105,7 +110,7 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
context 'when start date is after end_date' do
|
||||
it 'generates an error' do
|
||||
expect_graphql_error_to_be_created(Gitlab::Graphql::Errors::ArgumentError, 'startDate is after endDate') do
|
||||
resolve_project_milestones(start_date: Time.now, end_date: Time.now - 2.days)
|
||||
resolve_project_milestones(start_date: now, end_date: now - 2.days)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -114,7 +119,7 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
context 'when only start_date is present' do
|
||||
it 'generates an error' do
|
||||
expect_graphql_error_to_be_created(Gitlab::Graphql::Errors::ArgumentError, /Both startDate and endDate/) do
|
||||
resolve_project_milestones(start_date: Time.now)
|
||||
resolve_project_milestones(start_date: now)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -122,18 +127,19 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
context 'when only end_date is present' do
|
||||
it 'generates an error' do
|
||||
expect_graphql_error_to_be_created(Gitlab::Graphql::Errors::ArgumentError, /Both startDate and endDate/) do
|
||||
resolve_project_milestones(end_date: Time.now)
|
||||
resolve_project_milestones(end_date: now)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when passing a timeframe' do
|
||||
it 'calls MilestonesFinder with correct parameters' do
|
||||
start_date = Time.now
|
||||
end_date = Time.now + 5.days
|
||||
start_date = now_date
|
||||
end_date = now_date + 5.days
|
||||
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(project_ids: project.id, state: 'all', start_date: start_date, end_date: end_date))
|
||||
.with(args(project_ids: project.id, state: 'all',
|
||||
sort: :due_date_asc, start_date: start_date, end_date: end_date))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(timeframe: { start: start_date, end: end_date })
|
||||
|
@ -144,7 +150,7 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
context 'when title is present' do
|
||||
it 'calls MilestonesFinder with correct parameters' do
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(title: '13.5', state: 'all', project_ids: project.id))
|
||||
.with(args(title: '13.5', state: 'all', sort: :due_date_asc, project_ids: project.id))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(title: '13.5')
|
||||
|
@ -154,7 +160,7 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
context 'when search_title is present' do
|
||||
it 'calls MilestonesFinder with correct parameters' do
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(search_title: '13', state: 'all', project_ids: project.id))
|
||||
.with(args(search_title: '13', state: 'all', sort: :due_date_asc, project_ids: project.id))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(search_title: '13')
|
||||
|
@ -163,10 +169,10 @@ RSpec.describe Resolvers::ProjectMilestonesResolver do
|
|||
|
||||
context 'when containing date is present' do
|
||||
it 'calls MilestonesFinder with correct parameters' do
|
||||
t = Time.now
|
||||
t = now
|
||||
|
||||
expect(MilestonesFinder).to receive(:new)
|
||||
.with(args(containing_date: t, state: 'all', project_ids: project.id))
|
||||
.with(args(containing_date: t, state: 'all', sort: :due_date_asc, project_ids: project.id))
|
||||
.and_call_original
|
||||
|
||||
resolve_project_milestones(containing_date: t)
|
||||
|
|
|
@ -2,18 +2,22 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Resolvers::ProjectPackagesResolver do
|
||||
RSpec.describe 'Resolvers::ProjectPackagesResolver' do
|
||||
include GraphqlHelpers
|
||||
|
||||
let_it_be(:described_class) { Resolvers::ProjectPackagesResolver }
|
||||
let_it_be(:user) { create(:user) }
|
||||
let_it_be_with_reload(:project) { create(:project, :public) }
|
||||
|
||||
let(:args) do
|
||||
{ sort: :created_desc }
|
||||
{ sort: 'CREATED_DESC' }
|
||||
end
|
||||
|
||||
describe '#resolve' do
|
||||
subject { resolve(described_class, ctx: { current_user: user }, obj: project, args: args).to_a }
|
||||
subject do
|
||||
resolve(described_class, ctx: { current_user: user }, obj: project, args: args)
|
||||
.to_a
|
||||
end
|
||||
|
||||
it_behaves_like 'group and projects packages resolver'
|
||||
end
|
||||
|
|
|
@ -87,6 +87,6 @@ RSpec.describe Resolvers::ReleasesResolver do
|
|||
|
||||
def resolve_releases
|
||||
context = { current_user: current_user }
|
||||
resolve(described_class, obj: project, args: args, ctx: context)
|
||||
resolve(described_class, obj: project, args: args, ctx: context, arg_style: :internal)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -93,6 +93,6 @@ RSpec.describe Resolvers::Users::GroupsResolver do
|
|||
end
|
||||
|
||||
def resolve_groups(args:, current_user:, obj:)
|
||||
resolve(described_class, args: args, ctx: { current_user: current_user }, obj: obj)&.items
|
||||
resolve(described_class, args: args, ctx: { current_user: current_user }, obj: obj, arg_style: :internal)&.items
|
||||
end
|
||||
end
|
||||
|
|
|
@ -185,6 +185,6 @@ RSpec.describe Resolvers::WorkItemsResolver do
|
|||
end
|
||||
|
||||
def resolve_items(args = {}, context = { current_user: current_user })
|
||||
resolve(described_class, obj: project, args: args, ctx: context)
|
||||
resolve(described_class, obj: project, args: args, ctx: context, arg_style: :internal)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -20,7 +20,7 @@ RSpec.describe Types::Ci::DetailedStatusType do
|
|||
status = stage.detailed_status(stage.pipeline.user)
|
||||
expected_id = "#{status.id}-#{stage.id}"
|
||||
|
||||
expect(resolve_field('id', status, extras: { parent: stage })).to eq(expected_id)
|
||||
expect(resolve_field('id', status, extras: { parent: stage }, arg_style: :internal)).to eq(expected_id)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -36,7 +36,7 @@ RSpec.describe Types::Ci::DetailedStatusType do
|
|||
title: status.action_title
|
||||
}
|
||||
|
||||
expect(resolve_field('action', status)).to eq(expected_status)
|
||||
expect(resolve_field('action', status, arg_style: :internal)).to eq(expected_status)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -27,7 +27,7 @@ RSpec.describe Types::Ci::StatusActionType do
|
|||
|
||||
expected_id = "#{stage.class.name}-#{status.id}"
|
||||
|
||||
expect(resolve_field('id', status, extras: { parent: status })).to eq(expected_id)
|
||||
expect(resolve_field('id', status, extras: { parent: status }, arg_style: :internal)).to eq(expected_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -72,7 +72,7 @@ module GraphqlHelpers
|
|||
schema: GitlabSchema, # [GraphQL::Schema] Schema to use during execution.
|
||||
parent: :not_given, # A GraphQL query node to be passed as the `:parent` extra.
|
||||
lookahead: :not_given, # A GraphQL lookahead object to be passed as the `:lookahead` extra.
|
||||
arg_style: :internal # Args are in internal format, rather than client/external format
|
||||
arg_style: :internal_prepared # Args are in internal format, but should use more rigorous processing
|
||||
)
|
||||
# All resolution goes through fields, so we need to create one here that
|
||||
# uses our resolver. Thankfully, apart from the field name, resolvers
|
||||
|
@ -130,7 +130,7 @@ module GraphqlHelpers
|
|||
current_user: :not_given, # The current user (specified explicitly, overrides ctx[:current_user])
|
||||
schema: GitlabSchema, # A specific schema instance
|
||||
object_type: described_class, # The `BaseObject` type this field belongs to
|
||||
arg_style: :internal # Args are in internal format, rather than client/external format
|
||||
arg_style: :internal_prepared # Args are in internal format, but should use more rigorous processing
|
||||
)
|
||||
field = to_base_field(field, object_type)
|
||||
ctx[:current_user] = current_user unless current_user == :not_given
|
||||
|
@ -143,9 +143,6 @@ module GraphqlHelpers
|
|||
parent = object_type.authorized_new(object, query_ctx)
|
||||
raise UnauthorizedObject unless parent
|
||||
|
||||
# mutations already working with :internal_prepared
|
||||
arg_style = :internal_prepared if args[:input] && arg_style == :internal
|
||||
|
||||
# we enable the request store so we can track gitaly calls.
|
||||
::Gitlab::WithRequestStore.with_request_store do
|
||||
prepared_args = case arg_style
|
||||
|
@ -165,7 +162,7 @@ module GraphqlHelpers
|
|||
# rubocop:enable Metrics/ParameterLists
|
||||
|
||||
# Pros:
|
||||
# - Most arguments we use in specs, which are already in an "internal" state, work
|
||||
# - Original way we handled arguments
|
||||
#
|
||||
# Cons:
|
||||
# - the `prepare` method of a type is not called. Whether as a proc or as a method
|
||||
|
@ -178,8 +175,8 @@ module GraphqlHelpers
|
|||
|
||||
# Pros:
|
||||
# - Allows the use of ruby types, without having to pass in strings
|
||||
# - All args are converted into strings just like if it was called from a client,
|
||||
# so stronger arg verification
|
||||
# - All args are converted into strings just like if it was called from a client
|
||||
# - Much stronger argument verification
|
||||
#
|
||||
# Cons:
|
||||
# - Some values, such as enums, would need to be changed in the specs to use the
|
||||
|
|
|
@ -39,7 +39,8 @@ RSpec.shared_examples 'querying members with a group' do
|
|||
let(:base_args) { { relations: described_class.arguments['relations'].default_value } }
|
||||
|
||||
subject do
|
||||
resolve(described_class, obj: resource, args: base_args.merge(args), ctx: { current_user: user_4 })
|
||||
resolve(described_class, obj: resource, args: base_args.merge(args),
|
||||
ctx: { current_user: user_4 }, arg_style: :internal)
|
||||
end
|
||||
|
||||
describe '#resolve' do
|
||||
|
@ -73,7 +74,8 @@ RSpec.shared_examples 'querying members with a group' do
|
|||
let_it_be(:other_user) { create(:user) }
|
||||
|
||||
subject do
|
||||
resolve(described_class, obj: resource, args: base_args.merge(args), ctx: { current_user: other_user })
|
||||
resolve(described_class, obj: resource, args: base_args.merge(args),
|
||||
ctx: { current_user: other_user }, arg_style: :internal)
|
||||
end
|
||||
|
||||
it 'generates an error' do
|
||||
|
|
|
@ -24,7 +24,7 @@ RSpec.shared_examples 'group and projects packages resolver' do
|
|||
create(:maven_package, name: 'baz', project: project, created_at: 1.minute.ago, version: nil)
|
||||
end
|
||||
|
||||
[:created_desc, :name_desc, :version_desc, :type_asc].each do |order|
|
||||
%w[CREATED_DESC NAME_DESC VERSION_DESC TYPE_ASC].each do |order|
|
||||
context "#{order}" do
|
||||
let(:args) { { sort: order } }
|
||||
|
||||
|
@ -32,7 +32,7 @@ RSpec.shared_examples 'group and projects packages resolver' do
|
|||
end
|
||||
end
|
||||
|
||||
[:created_asc, :name_asc, :version_asc, :type_desc].each do |order|
|
||||
%w[CREATED_ASC NAME_ASC VERSION_ASC TYPE_DESC].each do |order|
|
||||
context "#{order}" do
|
||||
let(:args) { { sort: order } }
|
||||
|
||||
|
@ -41,25 +41,25 @@ RSpec.shared_examples 'group and projects packages resolver' do
|
|||
end
|
||||
|
||||
context 'filter by package_name' do
|
||||
let(:args) { { package_name: 'bar', sort: :created_desc } }
|
||||
let(:args) { { package_name: 'bar', sort: 'CREATED_DESC' } }
|
||||
|
||||
it { is_expected.to eq([conan_package]) }
|
||||
end
|
||||
|
||||
context 'filter by package_type' do
|
||||
let(:args) { { package_type: 'conan', sort: :created_desc } }
|
||||
let(:args) { { package_type: 'conan', sort: 'CREATED_DESC' } }
|
||||
|
||||
it { is_expected.to eq([conan_package]) }
|
||||
end
|
||||
|
||||
context 'filter by status' do
|
||||
let(:args) { { status: 'error', sort: :created_desc } }
|
||||
let(:args) { { status: 'error', sort: 'CREATED_DESC' } }
|
||||
|
||||
it { is_expected.to eq([maven_package]) }
|
||||
end
|
||||
|
||||
context 'include_versionless' do
|
||||
let(:args) { { include_versionless: true, sort: :created_desc } }
|
||||
let(:args) { { include_versionless: true, sort: 'CREATED_DESC' } }
|
||||
|
||||
it { is_expected.to include(repository3) }
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue