spec/plugin_spec.rb in cocoapods-keys-1.2.1 vs spec/plugin_spec.rb in cocoapods-keys-1.3.0

- old
+ new

@@ -1,14 +1,206 @@ require 'spec_helper' require 'cocoapods' require 'cocoapods-core' require 'plugin' -# + # include Pod # # describe Installer do # it "only runs if the podfile has keys support" do # installer = Installer.new(Sandbox.new("."), Podfile.new) # installer.install! # end # # end + +RSpec.configure do |config| + config.mock_with :rspec do |mocks| + mocks.verify_partial_doubles = true + end +end + +describe CocoaPodsKeys, '#plugin' do + before(:each) do + @config = Pod::Config.instance + @podfile = double('Podfile') + allow(@config).to receive(:podfile).and_return(@podfile) + + @target_defs = double('TargetDefinition') + @target_a = double('TargetDefinition') + @target_b = double('TargetDefinition') + + allow(@target_a).to receive(:label).and_return('Pods-TargetA') + allow(@target_b).to receive(:label).and_return('Pods-TargetB') + end + + context 'with no targets defined in the Podfile' do + before(:each) do + allow(@podfile).to receive(:root_target_definitions).and_return([]) + end + + it 'adds Keys to the global Pod' do + expect(@podfile).to receive(:pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), {}) + end + + %w(target targets).each do |target_tag| + context "with a non-existant target specified as a string in '#{target_tag}'" do + it 'fails to assign the key to the tag' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(Pod::UI).to receive(:puts).with('Could not find a target named \'TargetA\' in your Podfile. Stopping keys'.red) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => 'TargetA') + end + end + + context "with a non-existant target specified as an array in '#{target_tag}'" do + it 'fails to assign the key to the tag' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(Pod::UI).to receive(:puts).with('Could not find a target named \'TargetA\' in your Podfile. Stopping keys'.red) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => ['TargetA']) + end + end + end + end + + context 'with a single target defined in the Podfile' do + before(:each) do + @config = Pod::Config.instance + @podfile = double('Podfile') + allow(@config).to receive(:podfile).and_return(@podfile) + + allow(@podfile).to receive(:root_target_definitions).and_return([@target_defs]) + allow(@target_defs).to receive(:children).and_return([@target_a]) + end + + context 'with no targets specified' do + it 'adds Keys to the global Pod' do + expect(@podfile).to receive(:pod).with('Keys', anything) + expect(@target_a).not_to receive(:store_pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), {}) + end + end + + %w(target targets).each do |target_tag| + context "with a string specified in '#{target_tag}'" do + it 'adds Keys to the target' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(@target_a).to receive(:store_pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => 'TargetA') + end + end + + context "with an array specified in '#{target_tag}'" do + it 'adds Keys to the target' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(@target_a).to receive(:store_pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => ['TargetA']) + end + end + + context "with a non-existant target specified as a string in '#{target_tag}'" do + it 'fails to assign the key to the tag' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(Pod::UI).to receive(:puts).with('Could not find a target named \'TargetB\' in your Podfile. Stopping keys'.red) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => 'TargetB') + end + end + + context "with a non-existant target specified as an array in '#{target_tag}'" do + it 'fails to assign the key to the tag' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(Pod::UI).to receive(:puts).with('Could not find a target named \'TargetB\' in your Podfile. Stopping keys'.red) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => ['TargetB']) + end + end + end + end + + context 'with two targets defined in the Podfile' do + before(:each) do + @config = Pod::Config.instance + @podfile = double('Podfile') + allow(@config).to receive(:podfile).and_return(@podfile) + + allow(@podfile).to receive(:root_target_definitions).and_return([@target_defs]) + allow(@target_defs).to receive(:children).and_return([@target_a, @target_b]) + end + + context 'with no targets specified' do + it 'adds Keys to the global Pod' do + expect(@podfile).to receive(:pod).with('Keys', anything) + expect(@target_a).not_to receive(:store_pod).with('Keys', anything) + expect(@target_b).not_to receive(:store_pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), {}) + end + end + + %w(target targets).each do |target_tag| + context "with 'TargetA' specified as a string in '#{target_tag}'" do + it 'adds Keys to Target A' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(@target_a).to receive(:store_pod).with('Keys', anything) + expect(@target_b).not_to receive(:store_pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => 'TargetA') + end + end + + context "with 'TargetA' specified in an array in '#{target_tag}'" do + it 'adds Keys to Target A' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(@target_a).to receive(:store_pod).with('Keys', anything) + expect(@target_b).not_to receive(:store_pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => ['TargetA']) + end + end + + context "with 'TargetA' specified as a string in '#{target_tag}'" do + it 'adds Keys to Target B' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(@target_a).not_to receive(:store_pod).with('Keys', anything) + expect(@target_b).to receive(:store_pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => 'TargetB') + end + end + + context "with 'TargetB' specified in an array in '#{target_tag}'" do + it 'adds Keys to Target B' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(@target_a).not_to receive(:store_pod).with('Keys', anything) + expect(@target_b).to receive(:store_pod).with('Keys', anything) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => ['TargetB']) + end + end + + context "with a non-existant target specified as a string in '#{target_tag}'" do + it 'fails to assign the key to the tag' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(Pod::UI).to receive(:puts).with('Could not find a target named \'TargetC\' in your Podfile. Stopping keys'.red) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => 'TargetC') + end + end + + context "with a non-existant target specified as an array in '#{target_tag}'" do + it 'fails to assign the key to the tag' do + expect(@podfile).not_to receive(:pod).with('Keys', anything) + expect(Pod::UI).to receive(:puts).with('Could not find a target named \'TargetC\' in your Podfile. Stopping keys'.red) + + CocoaPodsKeys.add_keys_to_pods(Pathname.new('Pods/CocoaPodsKeys/'), target_tag => ['TargetC']) + end + end + end + end +end