A bit of test refactoring

This commit is contained in:
randx 2012-09-15 01:00:59 +03:00
parent 0d66cf2a38
commit a82977c648
6 changed files with 49 additions and 75 deletions

View file

@ -1,7 +1,7 @@
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
guard 'rspec', :version => 2, :all_on_start => false do
guard 'rspec', :version => 2, :all_on_start => false, :all_after_pass => false do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }

View file

@ -15,10 +15,9 @@ class UsersProjectObserver < ActiveRecord::Observer
def after_destroy(users_project)
Event.create(
project_id: users_project.project.id,
action: Event::Left,
project_id: users_project.project.id,
action: Event::Left,
author_id: users_project.user.id
)
end
end

View file

@ -14,12 +14,12 @@ describe Event do
it { should respond_to(:commits) }
end
describe "Push event" do
before do
describe "Push event" do
before do
project = Factory :project
@user = project.owner
data = {
data = {
before: "0000000000000000000000000000000000000000",
after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
ref: "refs/heads/master",
@ -50,25 +50,24 @@ describe Event do
it { @event.author.should == @user }
end
describe "Joined project team" do
let(:project) {Factory.create :project}
let(:new_user) {Factory.create :user}
it "should create event" do
UsersProject.observers.enable :users_project_observer
expect{
UsersProject.bulk_import(project, [new_user.id], UsersProject::DEVELOPER)
}.to change{Event.count}.by(1)
describe 'Team events' do
let(:user_project) { stub.as_null_object }
let(:observer) { UsersProjectObserver.instance }
before {
Event.should_receive :create
}
describe "Joined project team" do
it "should create event" do
observer.after_create user_project
end
end
end
describe "Left project team" do
let(:project) {Factory.create :project}
let(:new_user) {Factory.create :user}
it "should create event" do
UsersProject.bulk_import(project, [new_user.id], UsersProject::DEVELOPER)
UsersProject.observers.enable :users_project_observer
expect{
UsersProject.bulk_delete(project, [new_user.id])
}.to change{Event.count}.by(1)
describe "Left project team" do
it "should create event" do
observer.after_destroy user_project
end
end
end
end

View file

@ -1,34 +1,32 @@
require 'spec_helper'
describe UsersProjectObserver do
let(:user) { Factory.create :user }
let(:project) { Factory.create(:project,
code: "Fuu",
path: "Fuu" ) }
let(:users_project) { Factory.create(:users_project,
project: project,
user: user )}
let(:users_project) { stub.as_null_object }
subject { UsersProjectObserver.instance }
describe "#after_create" do
it "should called when UsersProject created" do
subject.should_receive(:after_create)
UsersProject.observers.enable :users_project_observer do
Factory.create(:users_project,
project: project,
user: user)
create(:users_project)
end
end
it "should send email to user" do
Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
Event.stub(:create => true)
Notify.should_receive(:project_access_granted_email).and_return(stub(deliver: true))
subject.after_create(users_project)
end
it "should create new event" do
Event.should_receive(:create).with(
project_id: users_project.project.id,
action: Event::Joined,
project_id: users_project.project.id,
action: Event::Joined,
author_id: users_project.user.id
)
subject.after_create(users_project)
end
end
@ -36,29 +34,32 @@ describe UsersProjectObserver do
describe "#after_update" do
it "should called when UsersProject updated" do
subject.should_receive(:after_update)
UsersProject.observers.enable :users_project_observer do
users_project.update_attribute(:project_access, 40)
create(:users_project).update_attribute(:project_access, 40)
end
end
it "should send email to user" do
Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
subject.after_update(users_project)
end
end
describe "#after_destroy" do
it "should called when UsersProject destroyed" do
subject.should_receive(:after_destroy)
UsersProject.observers.enable :users_project_observer do
UsersProject.bulk_delete(
users_project.project,
[users_project.user.id]
)
create(:users_project).destroy
end
end
it "should create new event" do
Event.should_receive(:create).with(
project_id: users_project.project.id,
action: Event::Left,
project_id: users_project.project.id,
action: Event::Left,
author_id: users_project.user.id
)
subject.after_destroy(users_project)

View file

@ -25,6 +25,7 @@ describe "Gitlab Flavored Markdown" do
@tag_name = "gfm-test-tag"
r.git.native(:tag, {}, @tag_name, commit.id)
end
after do
# delete test branch and tag
project.repo.git.native(:branch, {D: true}, @branch_name)

View file

@ -5,42 +5,16 @@ module GitoliteStub
end
def stub_gitolite_admin
gitolite_repo = mock(
clean_permissions: true,
add_permission: true
)
gitolite_config = mock(
add_repo: true,
get_repo: gitolite_repo,
has_repo?: true
)
gitolite_admin = double(
'Gitolite::GitoliteAdmin',
config: gitolite_config,
save: true,
)
gitolite_admin = double('Gitolite::GitoliteAdmin')
gitolite_admin.as_null_object
Gitolite::GitoliteAdmin.stub(new: gitolite_admin)
end
def stub_gitlab_gitolite
gitolite_config = double('Gitlab::GitoliteConfig')
gitolite_config.stub(
apply: ->() { yield(self) },
write_key: true,
rm_key: true,
update_projects: true,
update_project: true,
update_project!: true,
destroy_project: true,
destroy_project!: true,
admin_all_repo: true,
admin_all_repo!: true,
)
gitolite_config.stub(apply: ->() { yield(self) })
gitolite_config.as_null_object
Gitlab::GitoliteConfig.stub(new: gitolite_config)
end