diff options
Diffstat (limited to 'spec/graphql/resolvers/ci/runners_resolver_spec.rb')
-rw-r--r-- | spec/graphql/resolvers/ci/runners_resolver_spec.rb | 66 |
1 files changed, 60 insertions, 6 deletions
diff --git a/spec/graphql/resolvers/ci/runners_resolver_spec.rb b/spec/graphql/resolvers/ci/runners_resolver_spec.rb index 006d6785506..5ac15d5729f 100644 --- a/spec/graphql/resolvers/ci/runners_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/runners_resolver_spec.rb @@ -10,15 +10,15 @@ RSpec.describe Resolvers::Ci::RunnersResolver do let_it_be(:project) { create(:project, :repository, :public) } let_it_be(:inactive_project_runner) do - create(:ci_runner, :project, projects: [project], active: false, contacted_at: 1.minute.ago, tag_list: %w(project_runner)) + create(:ci_runner, :project, projects: [project], description: 'inactive project runner', token: 'abcdef', active: false, contacted_at: 1.minute.ago, tag_list: %w(project_runner)) end let_it_be(:offline_project_runner) do - create(:ci_runner, :project, projects: [project], contacted_at: 1.day.ago, tag_list: %w(project_runner active_runner)) + create(:ci_runner, :project, projects: [project], description: 'offline project runner', token: 'defghi', contacted_at: 1.day.ago, tag_list: %w(project_runner active_runner)) end - let_it_be(:group_runner) { create(:ci_runner, :group, groups: [group], contacted_at: 1.second.ago) } - let_it_be(:instance_runner) { create(:ci_runner, :instance, contacted_at: 2.minutes.ago, tag_list: %w(instance_runner active_runner)) } + let_it_be(:group_runner) { create(:ci_runner, :group, groups: [group], token: 'mnopqr', description: 'group runner', contacted_at: 1.second.ago) } + let_it_be(:instance_runner) { create(:ci_runner, :instance, description: 'shared runner', token: 'stuvxz', contacted_at: 2.minutes.ago, tag_list: %w(instance_runner active_runner)) } describe '#resolve' do subject { resolve(described_class, ctx: { current_user: user }, args: args).items.to_a } @@ -27,6 +27,14 @@ RSpec.describe Resolvers::Ci::RunnersResolver do {} end + context 'when the user cannot see runners' do + let(:user) { create(:user) } + + it 'returns no runners' do + is_expected.to be_empty + end + end + context 'without sort' do it 'returns all the runners' do is_expected.to contain_exactly(inactive_project_runner, offline_project_runner, group_runner, instance_runner) @@ -42,13 +50,29 @@ RSpec.describe Resolvers::Ci::RunnersResolver do it { is_expected.to eq([offline_project_runner, instance_runner, inactive_project_runner, group_runner]) } end - context "set to :created_date" do + context "set to :contacted_desc" do + let(:args) do + { sort: :contacted_desc } + end + + it { is_expected.to eq([offline_project_runner, instance_runner, inactive_project_runner, group_runner].reverse) } + end + + context "set to :created_at_desc" do let(:args) do - { sort: :created_date } + { sort: :created_at_desc } end it { is_expected.to eq([instance_runner, group_runner, offline_project_runner, inactive_project_runner]) } end + + context "set to :created_at_asc" do + let(:args) do + { sort: :created_at_asc } + end + + it { is_expected.to eq([instance_runner, group_runner, offline_project_runner, inactive_project_runner].reverse) } + end end context 'when type is filtered' do @@ -132,5 +156,35 @@ RSpec.describe Resolvers::Ci::RunnersResolver do end end end + + context 'when text is filtered' do + let(:args) do + { search: search_term } + end + + context 'to "project"' do + let(:search_term) { 'project' } + + it 'returns both project runners' do + is_expected.to contain_exactly(inactive_project_runner, offline_project_runner) + end + end + + context 'to "group"' do + let(:search_term) { 'group' } + + it 'returns group runner' do + is_expected.to contain_exactly(group_runner) + end + end + + context 'to "defghi"' do + let(:search_term) { 'defghi' } + + it 'returns runners containing term in token' do + is_expected.to contain_exactly(offline_project_runner) + end + end + end end end |