67 lines
1.8 KiB
Ruby
67 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe ::Packages::Nuget::ServiceIndexPresenter do
|
|
let_it_be(:project) { create(:project) }
|
|
let_it_be(:group) { create(:group) }
|
|
|
|
let(:presenter) { described_class.new(target) }
|
|
|
|
describe '#version' do
|
|
subject { presenter.version }
|
|
|
|
context 'for a group' do
|
|
let(:target) { group }
|
|
|
|
it { is_expected.to eq '3.0.0' }
|
|
end
|
|
|
|
context 'for a project' do
|
|
let(:target) { project }
|
|
|
|
it { is_expected.to eq '3.0.0' }
|
|
end
|
|
end
|
|
|
|
describe '#resources' do
|
|
subject { presenter.resources }
|
|
|
|
shared_examples 'returning valid resources' do |resources_count: 8, include_publish_service: true|
|
|
it 'has valid resources' do
|
|
expect(subject.size).to eq resources_count
|
|
subject.each do |resource|
|
|
%i[@id @type comment].each do |field|
|
|
expect(resource).to have_key(field)
|
|
expect(resource[field]).to be_a(String)
|
|
end
|
|
end
|
|
end
|
|
|
|
it "does #{'not ' unless include_publish_service}return the publish resource" do
|
|
services_types = subject.map { |res| res[:@type] }
|
|
|
|
described_class::SERVICE_VERSIONS[:publish].each do |publish_service_version|
|
|
if include_publish_service
|
|
expect(services_types).to include(publish_service_version)
|
|
else
|
|
expect(services_types).not_to include(publish_service_version)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'for a group' do
|
|
let(:target) { group }
|
|
|
|
# at the group level we don't have the publish and download service
|
|
it_behaves_like 'returning valid resources', resources_count: 6, include_publish_service: false
|
|
end
|
|
|
|
context 'for a project' do
|
|
let(:target) { project }
|
|
|
|
it_behaves_like 'returning valid resources'
|
|
end
|
|
end
|
|
end
|