diff options
Diffstat (limited to 'spec/graphql/resolvers/container_repositories_resolver_spec.rb')
-rw-r--r-- | spec/graphql/resolvers/container_repositories_resolver_spec.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/spec/graphql/resolvers/container_repositories_resolver_spec.rb b/spec/graphql/resolvers/container_repositories_resolver_spec.rb new file mode 100644 index 00000000000..b888d79626e --- /dev/null +++ b/spec/graphql/resolvers/container_repositories_resolver_spec.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Resolvers::ContainerRepositoriesResolver do + include GraphqlHelpers + + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be_with_reload(:project) { create(:project, group: group) } + let_it_be(:container_repositories) { create(:container_repository, project: project) } + + let(:args) { {} } + + describe '#resolve' do + let(:object) { project } + + subject { resolve(described_class, ctx: { current_user: user }, args: args, obj: object) } + + shared_examples 'returning container repositories' do + it { is_expected.to contain_exactly(container_repositories) } + + context 'with a named search' do + let_it_be(:named_container_repository) { create(:container_repository, project: project, name: 'Foobar') } + + let(:args) { { name: 'ooba' } } + + it { is_expected.to contain_exactly(named_container_repository) } + end + end + + context 'with authorized user' do + before do + group.add_user(user, :maintainer) + end + + context 'when the object is a project' do + it_behaves_like 'returning container repositories' + end + + context 'when the object is a group' do + let(:object) { group } + + it_behaves_like 'returning container repositories' + end + + context 'when the object is an invalid type' do + let(:object) { Object.new } + + it { expect { subject }.to raise_exception('invalid subject_type') } + end + end + + context 'with unauthorized user' do + it { is_expected.to be nil } + end + end +end |