diff options
Diffstat (limited to 'spec/models/ci/catalog/listing_spec.rb')
-rw-r--r-- | spec/models/ci/catalog/listing_spec.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/models/ci/catalog/listing_spec.rb b/spec/models/ci/catalog/listing_spec.rb new file mode 100644 index 00000000000..b6a9372c8b9 --- /dev/null +++ b/spec/models/ci/catalog/listing_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Ci::Catalog::Listing, feature_category: :pipeline_composition do + let_it_be(:namespace) { create(:namespace) } + let_it_be(:project_1) { create(:project, namespace: namespace) } + let_it_be(:project_2) { create(:project, namespace: namespace) } + let_it_be(:project_3) { create(:project) } + + let(:list) { described_class.new(namespace) } + + describe '#new' do + context 'when namespace is not a root namespace' do + let(:namespace) { create(:group, :nested) } + + it 'raises an exception' do + expect { list }.to raise_error(ArgumentError, 'Namespace is not a root namespace') + end + end + end + + describe '#resources' do + subject(:resources) { list.resources } + + context 'when the namespace has no catalog resources' do + it { is_expected.to be_empty } + end + + context 'when the namespace has catalog resources' do + let!(:resource) { create(:catalog_resource, project: project_1) } + + it 'contains only catalog resources for projects in that namespace' do + is_expected.to contain_exactly(resource) + end + end + end +end |