require_relative '../spec_helper' module Vendorificator describe Segment do describe '#work_dir' do it 'includes vendor group' do env = basic_environment env.stubs(:relative_root_dir) env.git.stubs(:git_work_tree) categorized = Vendor.new(env, 'test', group: 'group').segment uncategorized = Vendor.new(env, 'test').segment assert { categorized.work_dir.include? 'group' } deny { uncategorized.work_dir.include? 'group' } end end describe '#head' do let(:seg) { Vendor.new(basic_environment, 'test').segment } let(:rev_parse) { basic_environment.git.capturing.expects(:rev_parse).with({:verify => true, :quiet => true}, "refs/heads/vendor/test") } it "returns SHA1 of segment's head" do rev_parse.returns "a2745fdf2d7e51f139f9417c5ca045b389fa939f\n" head = seg.head assert { head == 'a2745fdf2d7e51f139f9417c5ca045b389fa939f' } end it "returns nil when segment's branch does not exist" do rev_parse.raises MiniGit::GitError head = seg.head assert { head.nil? } end end describe '#branch_name' do it 'includes vendor group' do uncategorized = Vendor.new(basic_environment, 'test').segment categorized = Vendor.new(basic_environment, 'test', group: 'group').segment deny { uncategorized.branch_name.include? 'group' } assert { categorized.branch_name.include? 'group' } end end describe '#pushable_refs' do let(:environment) do Environment.new(Thor::Shell::Basic.new) do vendor :nginx, :group => :cookbooks vendor :nginx_simplecgi, :group => :cookbooks end end before do environment.git.capturing.stubs(:show_ref).returns < 'test_group').segment end it 'finds a module by name' do assert { segment.included_in_list?(['test_name']) } end it 'finds a module by qualified name' do assert { segment.included_in_list?(['test_group/test_name']) } end it 'finds a module by path' do segment.stubs(:work_dir).returns('./vendor/test_group/test_name') assert { segment.included_in_list?(['./vendor/test_group/test_name']) } end it 'finds a module by merge commit' do segment.stubs(:merged_base).returns('foobar') segment.stubs(:work_dir).returns('abc/def') assert { segment.included_in_list?(['foobar']) } end it 'finds a module by branch name' do segment.stubs(:merged_base).returns('abcdef') segment.stubs(:work_dir).returns('abc/def') segment.stubs(:branch_name).returns('foo/bar') assert { segment.included_in_list?(['foo/bar']) } end end end end