Commit 9bdf73a5 authored by Robert May's avatar Robert May

Merge branch 'pedropombeiro/344918/graphql-deprecate-runner-active-filter' into 'master'

GraphQL: Deprecate active filter for Runners resolver

See merge request gitlab-org/gitlab!79018
parents dbe56094 5807a2f6
...@@ -9,7 +9,12 @@ module Resolvers ...@@ -9,7 +9,12 @@ module Resolvers
argument :active, ::GraphQL::Types::Boolean, argument :active, ::GraphQL::Types::Boolean,
required: false, required: false,
description: 'Filter runners by active (true) or paused (false) status.' description: 'Filter runners by `active` (true) or `paused` (false) status.',
deprecated: { reason: :renamed, replacement: 'paused', milestone: '14.8' }
argument :paused, ::GraphQL::Types::Boolean,
required: false,
description: 'Filter runners by `paused` (true) or `active` (false) status.'
argument :status, ::Types::Ci::RunnerStatusEnum, argument :status, ::Types::Ci::RunnerStatusEnum,
required: false, required: false,
...@@ -41,8 +46,11 @@ module Resolvers ...@@ -41,8 +46,11 @@ module Resolvers
protected protected
def runners_finder_params(params) def runners_finder_params(params)
# Give preference to paused argument over the deprecated 'active' argument
paused = params.fetch(:paused, params[:active] ? !params[:active] : nil)
{ {
active: params[:active], active: paused.nil? ? nil : !paused,
status_status: params[:status]&.to_s, status_status: params[:status]&.to_s,
type_type: params[:type], type_type: params[:type],
tag_name: params[:tag_list], tag_name: params[:tag_list],
......
...@@ -376,7 +376,8 @@ four standard [pagination arguments](#connection-pagination-arguments): ...@@ -376,7 +376,8 @@ four standard [pagination arguments](#connection-pagination-arguments):
| Name | Type | Description | | Name | Type | Description |
| ---- | ---- | ----------- | | ---- | ---- | ----------- |
| <a id="queryrunnersactive"></a>`active` | [`Boolean`](#boolean) | Filter runners by active (true) or paused (false) status. | | <a id="queryrunnersactive"></a>`active` **{warning-solid}** | [`Boolean`](#boolean) | **Deprecated** in 14.8. This was renamed. Use: `paused`. |
| <a id="queryrunnerspaused"></a>`paused` | [`Boolean`](#boolean) | Filter runners by `paused` (true) or `active` (false) status. |
| <a id="queryrunnerssearch"></a>`search` | [`String`](#string) | Filter by full token or partial text in description field. | | <a id="queryrunnerssearch"></a>`search` | [`String`](#string) | Filter by full token or partial text in description field. |
| <a id="queryrunnerssort"></a>`sort` | [`CiRunnerSort`](#cirunnersort) | Sort order of results. | | <a id="queryrunnerssort"></a>`sort` | [`CiRunnerSort`](#cirunnersort) | Sort order of results. |
| <a id="queryrunnersstatus"></a>`status` | [`CiRunnerStatus`](#cirunnerstatus) | Filter runners by status. | | <a id="queryrunnersstatus"></a>`status` | [`CiRunnerStatus`](#cirunnerstatus) | Filter runners by status. |
...@@ -11213,8 +11214,9 @@ four standard [pagination arguments](#connection-pagination-arguments): ...@@ -11213,8 +11214,9 @@ four standard [pagination arguments](#connection-pagination-arguments):
| Name | Type | Description | | Name | Type | Description |
| ---- | ---- | ----------- | | ---- | ---- | ----------- |
| <a id="grouprunnersactive"></a>`active` | [`Boolean`](#boolean) | Filter runners by active (true) or paused (false) status. | | <a id="grouprunnersactive"></a>`active` **{warning-solid}** | [`Boolean`](#boolean) | **Deprecated** in 14.8. This was renamed. Use: `paused`. |
| <a id="grouprunnersmembership"></a>`membership` | [`RunnerMembershipFilter`](#runnermembershipfilter) | Control which runners to include in the results. | | <a id="grouprunnersmembership"></a>`membership` | [`RunnerMembershipFilter`](#runnermembershipfilter) | Control which runners to include in the results. |
| <a id="grouprunnerspaused"></a>`paused` | [`Boolean`](#boolean) | Filter runners by `paused` (true) or `active` (false) status. |
| <a id="grouprunnerssearch"></a>`search` | [`String`](#string) | Filter by full token or partial text in description field. | | <a id="grouprunnerssearch"></a>`search` | [`String`](#string) | Filter by full token or partial text in description field. |
| <a id="grouprunnerssort"></a>`sort` | [`CiRunnerSort`](#cirunnersort) | Sort order of results. | | <a id="grouprunnerssort"></a>`sort` | [`CiRunnerSort`](#cirunnersort) | Sort order of results. |
| <a id="grouprunnersstatus"></a>`status` | [`CiRunnerStatus`](#cirunnerstatus) | Filter runners by status. | | <a id="grouprunnersstatus"></a>`status` | [`CiRunnerStatus`](#cirunnerstatus) | Filter runners by status. |
...@@ -43,34 +43,99 @@ RSpec.describe Resolvers::Ci::RunnersResolver do ...@@ -43,34 +43,99 @@ RSpec.describe Resolvers::Ci::RunnersResolver do
# Only thing we can do is to verify that args from the resolver is correctly transformed to params of the Finder and we return the Finder's result back. # Only thing we can do is to verify that args from the resolver is correctly transformed to params of the Finder and we return the Finder's result back.
describe 'Allowed query arguments' do describe 'Allowed query arguments' do
let(:finder) { instance_double(::Ci::RunnersFinder) } let(:finder) { instance_double(::Ci::RunnersFinder) }
let(:args) do
{ context 'with active filter' do
active: true, let(:args) do
status: 'active', {
type: :instance_type, active: true,
tag_list: ['active_runner'], status: 'active',
search: 'abc', type: :instance_type,
sort: :contacted_asc tag_list: ['active_runner'],
} search: 'abc',
sort: :contacted_asc
}
end
let(:expected_params) do
{
active: true,
status_status: 'active',
type_type: :instance_type,
tag_name: ['active_runner'],
preload: { tag_name: nil },
search: 'abc',
sort: 'contacted_asc'
}
end
it 'calls RunnersFinder with expected arguments' do
expect(::Ci::RunnersFinder).to receive(:new).with(current_user: user, params: expected_params).once.and_return(finder)
allow(finder).to receive(:execute).once.and_return([:execute_return_value])
expect(subject.items.to_a).to eq([:execute_return_value])
end
end
context 'with both active and paused filter' do
let(:args) do
{
active: true,
paused: true
}
end
let(:expected_params) do
{
active: false,
preload: { tag_name: nil }
}
end
it 'calls RunnersFinder with expected arguments' do
expect(::Ci::RunnersFinder).to receive(:new).with(current_user: user, params: expected_params).once.and_return(finder)
allow(finder).to receive(:execute).once.and_return([:execute_return_value])
expect(subject.items.to_a).to eq([:execute_return_value])
end
end end
let(:expected_params) do context 'with paused filter' do
{ let(:args) do
active: true, { paused: true }
status_status: 'active', end
type_type: :instance_type,
tag_name: ['active_runner'], let(:expected_params) do
preload: { tag_name: nil }, {
search: 'abc', active: false,
sort: 'contacted_asc' preload: { tag_name: nil }
} }
end
it 'calls RunnersFinder with expected arguments' do
expect(::Ci::RunnersFinder).to receive(:new).with(current_user: user, params: expected_params).once.and_return(finder)
allow(finder).to receive(:execute).once.and_return([:execute_return_value])
expect(subject.items.to_a).to eq([:execute_return_value])
end
end end
it 'calls RunnersFinder with expected arguments' do context 'with neither paused or active filters' do
allow(::Ci::RunnersFinder).to receive(:new).with(current_user: user, params: expected_params).once.and_return(finder) let(:args) do
allow(finder).to receive(:execute).once.and_return([:execute_return_value]) {}
end
let(:expected_params) do
{
preload: { tag_name: nil }
}
end
it 'calls RunnersFinder with expected arguments' do
expect(::Ci::RunnersFinder).to receive(:new).with(current_user: user, params: expected_params).once.and_return(finder)
allow(finder).to receive(:execute).once.and_return([:execute_return_value])
expect(subject.items.to_a).to eq([:execute_return_value]) expect(subject.items.to_a).to eq([:execute_return_value])
end
end end
end 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