require 'spec_helper'
describe ProtectedBranch do
- pending "add some examples to (or delete) #{__FILE__}"
+ let(:project) { Factory(:project) }
+
+ describe 'Associations' do
+ it { should belong_to(:project) }
+ end
+
+ describe 'Validation' do
+ it { should validate_presence_of(:project_id) }
+ it { should validate_presence_of(:name) }
+ end
+
+ describe 'Callbacks' do
+ subject { ProtectedBranch.new(:project => project, :name => 'branch_name') }
+
+ it 'call update_repository after save' do
+ subject.should_receive(:update_repository)
+ subject.save
+ end
+
+ it 'call update_repository after destroy' do
+ subject.should_receive(:update_repository)
+ subject.destroy
+ end
+ end
+
+ describe '#update_repository' do
+ let(:gitolite) { mock }
+
+ subject { ProtectedBranch.new(:project => project) }
+
+ it "updates the branch's project repo permissions" do
+ Gitlabhq::GitHost.should_receive(:system).and_return(gitolite)
+ gitolite.should_receive(:update_project).with(project.path, project)
+
+ subject.update_repository
+ end
+ end
+
+ describe '#commit' do
+ subject { ProtectedBranch.new(:project => project, :name => 'cant_touch_this') }
+
+ it 'commits itself to its project' do
+ project.should_receive(:commit).with('cant_touch_this')
+
+ subject.commit
+ end
+ end
end