Commit a82977c64843aa177498f1a715121ae6e38bc323

Authored by randx
1 parent 0d66cf2a

A bit of test refactoring

1 # A sample Guardfile 1 # A sample Guardfile
2 # More info at https://github.com/guard/guard#readme 2 # More info at https://github.com/guard/guard#readme
3 3
4 -guard 'rspec', :version => 2, :all_on_start => false do 4 +guard 'rspec', :version => 2, :all_on_start => false, :all_after_pass => false do
5 watch(%r{^spec/.+_spec\.rb$}) 5 watch(%r{^spec/.+_spec\.rb$})
6 watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } 6 watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7 watch('spec/spec_helper.rb') { "spec" } 7 watch('spec/spec_helper.rb') { "spec" }
app/observers/users_project_observer.rb
@@ -15,10 +15,9 @@ class UsersProjectObserver < ActiveRecord::Observer @@ -15,10 +15,9 @@ class UsersProjectObserver < ActiveRecord::Observer
15 15
16 def after_destroy(users_project) 16 def after_destroy(users_project)
17 Event.create( 17 Event.create(
18 - project_id: users_project.project.id,  
19 - action: Event::Left, 18 + project_id: users_project.project.id,
  19 + action: Event::Left,
20 author_id: users_project.user.id 20 author_id: users_project.user.id
21 ) 21 )
22 end 22 end
23 -  
24 end 23 end
spec/models/event_spec.rb
@@ -14,12 +14,12 @@ describe Event do @@ -14,12 +14,12 @@ describe Event do
14 it { should respond_to(:commits) } 14 it { should respond_to(:commits) }
15 end 15 end
16 16
17 - describe "Push event" do  
18 - before do 17 + describe "Push event" do
  18 + before do
19 project = Factory :project 19 project = Factory :project
20 @user = project.owner 20 @user = project.owner
21 21
22 - data = { 22 + data = {
23 before: "0000000000000000000000000000000000000000", 23 before: "0000000000000000000000000000000000000000",
24 after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e", 24 after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
25 ref: "refs/heads/master", 25 ref: "refs/heads/master",
@@ -50,25 +50,24 @@ describe Event do @@ -50,25 +50,24 @@ describe Event do
50 it { @event.author.should == @user } 50 it { @event.author.should == @user }
51 end 51 end
52 52
53 - describe "Joined project team" do  
54 - let(:project) {Factory.create :project}  
55 - let(:new_user) {Factory.create :user}  
56 - it "should create event" do  
57 - UsersProject.observers.enable :users_project_observer  
58 - expect{  
59 - UsersProject.bulk_import(project, [new_user.id], UsersProject::DEVELOPER)  
60 - }.to change{Event.count}.by(1) 53 + describe 'Team events' do
  54 + let(:user_project) { stub.as_null_object }
  55 + let(:observer) { UsersProjectObserver.instance }
  56 +
  57 + before {
  58 + Event.should_receive :create
  59 + }
  60 +
  61 + describe "Joined project team" do
  62 + it "should create event" do
  63 + observer.after_create user_project
  64 + end
61 end 65 end
62 - end  
63 - describe "Left project team" do  
64 - let(:project) {Factory.create :project}  
65 - let(:new_user) {Factory.create :user}  
66 - it "should create event" do  
67 - UsersProject.bulk_import(project, [new_user.id], UsersProject::DEVELOPER)  
68 - UsersProject.observers.enable :users_project_observer  
69 - expect{  
70 - UsersProject.bulk_delete(project, [new_user.id])  
71 - }.to change{Event.count}.by(1) 66 +
  67 + describe "Left project team" do
  68 + it "should create event" do
  69 + observer.after_destroy user_project
  70 + end
72 end 71 end
73 end 72 end
74 end 73 end
spec/observers/users_project_observer_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 describe UsersProjectObserver do 3 describe UsersProjectObserver do
4 - let(:user) { Factory.create :user }  
5 - let(:project) { Factory.create(:project,  
6 - code: "Fuu",  
7 - path: "Fuu" ) }  
8 - let(:users_project) { Factory.create(:users_project,  
9 - project: project,  
10 - user: user )} 4 + let(:users_project) { stub.as_null_object }
11 subject { UsersProjectObserver.instance } 5 subject { UsersProjectObserver.instance }
12 6
13 describe "#after_create" do 7 describe "#after_create" do
14 it "should called when UsersProject created" do 8 it "should called when UsersProject created" do
15 subject.should_receive(:after_create) 9 subject.should_receive(:after_create)
  10 +
16 UsersProject.observers.enable :users_project_observer do 11 UsersProject.observers.enable :users_project_observer do
17 - Factory.create(:users_project,  
18 - project: project,  
19 - user: user) 12 + create(:users_project)
20 end 13 end
21 end 14 end
  15 +
22 it "should send email to user" do 16 it "should send email to user" do
23 - Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true)) 17 + Event.stub(:create => true)
  18 + Notify.should_receive(:project_access_granted_email).and_return(stub(deliver: true))
  19 +
24 subject.after_create(users_project) 20 subject.after_create(users_project)
25 end 21 end
  22 +
26 it "should create new event" do 23 it "should create new event" do
27 Event.should_receive(:create).with( 24 Event.should_receive(:create).with(
28 - project_id: users_project.project.id,  
29 - action: Event::Joined, 25 + project_id: users_project.project.id,
  26 + action: Event::Joined,
30 author_id: users_project.user.id 27 author_id: users_project.user.id
31 ) 28 )
  29 +
32 subject.after_create(users_project) 30 subject.after_create(users_project)
33 end 31 end
34 end 32 end
@@ -36,29 +34,32 @@ describe UsersProjectObserver do @@ -36,29 +34,32 @@ describe UsersProjectObserver do
36 describe "#after_update" do 34 describe "#after_update" do
37 it "should called when UsersProject updated" do 35 it "should called when UsersProject updated" do
38 subject.should_receive(:after_update) 36 subject.should_receive(:after_update)
  37 +
39 UsersProject.observers.enable :users_project_observer do 38 UsersProject.observers.enable :users_project_observer do
40 - users_project.update_attribute(:project_access, 40) 39 + create(:users_project).update_attribute(:project_access, 40)
41 end 40 end
42 end 41 end
  42 +
43 it "should send email to user" do 43 it "should send email to user" do
44 Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true)) 44 Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
  45 +
45 subject.after_update(users_project) 46 subject.after_update(users_project)
46 end 47 end
47 end 48 end
  49 +
48 describe "#after_destroy" do 50 describe "#after_destroy" do
49 it "should called when UsersProject destroyed" do 51 it "should called when UsersProject destroyed" do
50 subject.should_receive(:after_destroy) 52 subject.should_receive(:after_destroy)
  53 +
51 UsersProject.observers.enable :users_project_observer do 54 UsersProject.observers.enable :users_project_observer do
52 - UsersProject.bulk_delete(  
53 - users_project.project,  
54 - [users_project.user.id]  
55 - ) 55 + create(:users_project).destroy
56 end 56 end
57 end 57 end
  58 +
58 it "should create new event" do 59 it "should create new event" do
59 Event.should_receive(:create).with( 60 Event.should_receive(:create).with(
60 - project_id: users_project.project.id,  
61 - action: Event::Left, 61 + project_id: users_project.project.id,
  62 + action: Event::Left,
62 author_id: users_project.user.id 63 author_id: users_project.user.id
63 ) 64 )
64 subject.after_destroy(users_project) 65 subject.after_destroy(users_project)
spec/requests/gitlab_flavored_markdown_spec.rb
@@ -25,6 +25,7 @@ describe "Gitlab Flavored Markdown" do @@ -25,6 +25,7 @@ describe "Gitlab Flavored Markdown" do
25 @tag_name = "gfm-test-tag" 25 @tag_name = "gfm-test-tag"
26 r.git.native(:tag, {}, @tag_name, commit.id) 26 r.git.native(:tag, {}, @tag_name, commit.id)
27 end 27 end
  28 +
28 after do 29 after do
29 # delete test branch and tag 30 # delete test branch and tag
30 project.repo.git.native(:branch, {D: true}, @branch_name) 31 project.repo.git.native(:branch, {D: true}, @branch_name)
spec/support/gitolite_stub.rb
@@ -5,42 +5,16 @@ module GitoliteStub @@ -5,42 +5,16 @@ module GitoliteStub
5 end 5 end
6 6
7 def stub_gitolite_admin 7 def stub_gitolite_admin
8 - gitolite_repo = mock(  
9 - clean_permissions: true,  
10 - add_permission: true  
11 - )  
12 -  
13 - gitolite_config = mock(  
14 - add_repo: true,  
15 - get_repo: gitolite_repo,  
16 - has_repo?: true  
17 - )  
18 -  
19 - gitolite_admin = double(  
20 - 'Gitolite::GitoliteAdmin',  
21 - config: gitolite_config,  
22 - save: true,  
23 - ) 8 + gitolite_admin = double('Gitolite::GitoliteAdmin')
  9 + gitolite_admin.as_null_object
24 10
25 Gitolite::GitoliteAdmin.stub(new: gitolite_admin) 11 Gitolite::GitoliteAdmin.stub(new: gitolite_admin)
26 -  
27 end 12 end
28 13
29 def stub_gitlab_gitolite 14 def stub_gitlab_gitolite
30 gitolite_config = double('Gitlab::GitoliteConfig') 15 gitolite_config = double('Gitlab::GitoliteConfig')
31 - gitolite_config.stub(  
32 - apply: ->() { yield(self) },  
33 - write_key: true,  
34 - rm_key: true,  
35 - update_projects: true,  
36 - update_project: true,  
37 - update_project!: true,  
38 - destroy_project: true,  
39 - destroy_project!: true,  
40 - admin_all_repo: true,  
41 - admin_all_repo!: true,  
42 -  
43 - ) 16 + gitolite_config.stub(apply: ->() { yield(self) })
  17 + gitolite_config.as_null_object
44 18
45 Gitlab::GitoliteConfig.stub(new: gitolite_config) 19 Gitlab::GitoliteConfig.stub(new: gitolite_config)
46 end 20 end