spec/octopolo/scripts/new_branch_spec.rb in octopolo-1.2.1 vs spec/octopolo/scripts/new_branch_spec.rb in octopolo-1.3.0

- old
+ new

@@ -4,34 +4,56 @@ module Octopolo module Scripts describe NewBranch do let(:config) { stub(:config, :deploy_branch => "production") } let(:git) { stub(:Git) } + let(:cli) { stub(:Cli) } let(:new_branch_name) { stub(:string) } let(:custom_source_branch) { stub(:string) } subject { NewBranch } before do - NewBranch.any_instance.stub(:config => config, :git => git) + NewBranch.any_instance.stub(:config => config, :git => git, :cli => cli) end context "::execute" do context "with no arguments given" do it "fails if given no arguments" do expect { subject.execute }.to raise_error(ArgumentError) end end - context "with a only new branch name given" do + + context "with reserved new branch name" do + it "exits when aborted" do + allow(git).to receive(:reserved_branch?) { true } + allow(cli).to receive(:ask_boolean) { false } + allow(cli).to receive(:say).with(anything) + git.should_receive(:alert_reserved_branch) + expect { subject.execute(new_branch_name) }.to raise_error(SystemExit) + end + + it "proceeds when confirmed" do + allow(git).to receive(:reserved_branch?) { true } + allow(cli).to receive(:ask_boolean) { true } + allow(cli).to receive(:say).with(anything) + git.should_receive(:new_branch).with(new_branch_name, "production") + subject.execute(new_branch_name) + end + end + + context "with only new branch name given" do it "delegates to Git.new_branch" do + allow(git).to receive(:reserved_branch?) { false } git.should_receive(:new_branch).with(new_branch_name, "production") subject.execute(new_branch_name) end end - context "with a only new branch name given" do + context "with new and source branch names given" do it "delegates to Git.new_branch" do + allow(git).to receive(:reserved_branch?) { false } git.should_receive(:new_branch).with(new_branch_name, custom_source_branch) subject.execute(new_branch_name, custom_source_branch) end end end