diff options
Diffstat (limited to 'spec/graphql/resolvers/work_items/types_resolver_spec.rb')
-rw-r--r-- | spec/graphql/resolvers/work_items/types_resolver_spec.rb | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/spec/graphql/resolvers/work_items/types_resolver_spec.rb b/spec/graphql/resolvers/work_items/types_resolver_spec.rb index b85989256b5..f7aeed30fd3 100644 --- a/spec/graphql/resolvers/work_items/types_resolver_spec.rb +++ b/spec/graphql/resolvers/work_items/types_resolver_spec.rb @@ -7,16 +7,51 @@ RSpec.describe Resolvers::WorkItems::TypesResolver do let_it_be(:current_user) { create(:user) } let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, group: group) } before_all do group.add_developer(current_user) end - describe '#resolve' do - it 'returns all default work item types' do - result = resolve(described_class, obj: group) + shared_examples 'a work item type resolver' do + let(:args) { {} } + + subject(:result) { resolve(described_class, obj: object, args: args) } + it 'returns all default work item types' do expect(result.to_a).to match(WorkItems::Type.default.order_by_name_asc) end + + context 'when requesting taskable types' do + let(:args) { { taskable: true } } + + it 'returns only taskable types' do + expect(result.to_a).to contain_exactly(WorkItems::Type.default_by_type(:task)) + end + end + + context 'when work_items feature flag is disabled' do + before do + stub_feature_flags(work_items: false) + end + + it 'returns nil' do + expect(result).to be_nil + end + end + end + + describe '#resolve' do + context 'when parent is a group' do + let(:object) { group } + + it_behaves_like 'a work item type resolver' + end + + context 'when parent is a project' do + let(:object) { project } + + it_behaves_like 'a work item type resolver' + end end end |