diff options
Diffstat (limited to 'spec/services/projects/apple_target_platform_detector_service_spec.rb')
-rw-r--r-- | spec/services/projects/apple_target_platform_detector_service_spec.rb | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/spec/services/projects/apple_target_platform_detector_service_spec.rb b/spec/services/projects/apple_target_platform_detector_service_spec.rb new file mode 100644 index 00000000000..6391161824c --- /dev/null +++ b/spec/services/projects/apple_target_platform_detector_service_spec.rb @@ -0,0 +1,61 @@ +# 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 |