gitlab-org--gitlab-foss/spec/services/projects/apple_target_platform_detec...

62 lines
1.6 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Projects::AppleTargetPlatformDetectorService do
let_it_be(:project) { build(:project) }
subject { described_class.new(project).execute }
context 'when project is not an xcode project' do
before do
allow(Gitlab::FileFinder).to receive(:new) { instance_double(Gitlab::FileFinder, find: []) }
end
it 'returns an empty array' do
is_expected.to match_array []
end
end
context 'when project is an xcode project' do
using RSpec::Parameterized::TableSyntax
let(:finder) { instance_double(Gitlab::FileFinder) }
before do
allow(Gitlab::FileFinder).to receive(:new) { finder }
end
def search_query(sdk, filename)
"SDKROOT = #{sdk} filename:#{filename}"
end
context 'when setting string is found' do
where(:sdk, :filename, :result) do
'iphoneos' | 'project.pbxproj' | [:ios]
'iphoneos' | '*.xcconfig' | [:ios]
end
with_them do
before do
allow(finder).to receive(:find).with(anything) { [] }
allow(finder).to receive(:find).with(search_query(sdk, filename)) { [instance_double(Gitlab::Search::FoundBlob)] }
end
it 'returns an array of unique detected targets' do
is_expected.to match_array result
end
end
end
context 'when setting string is not found' do
before do
allow(finder).to receive(:find).with(anything) { [] }
end
it 'returns an empty array' do
is_expected.to match_array []
end
end
end
end