Commit a82977c64843aa177498f1a715121ae6e38bc323

Authored by randx
1 parent 0d66cf2a

A bit of test refactoring

Guardfile
1 1 # A sample Guardfile
2 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 5 watch(%r{^spec/.+_spec\.rb$})
6 6 watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7 7 watch('spec/spec_helper.rb') { "spec" }
... ...
app/observers/users_project_observer.rb
... ... @@ -15,10 +15,9 @@ class UsersProjectObserver < ActiveRecord::Observer
15 15  
16 16 def after_destroy(users_project)
17 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 20 author_id: users_project.user.id
21 21 )
22 22 end
23   -
24 23 end
... ...
spec/models/event_spec.rb
... ... @@ -14,12 +14,12 @@ describe Event do
14 14 it { should respond_to(:commits) }
15 15 end
16 16  
17   - describe "Push event" do
18   - before do
  17 + describe "Push event" do
  18 + before do
19 19 project = Factory :project
20 20 @user = project.owner
21 21  
22   - data = {
  22 + data = {
23 23 before: "0000000000000000000000000000000000000000",
24 24 after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
25 25 ref: "refs/heads/master",
... ... @@ -50,25 +50,24 @@ describe Event do
50 50 it { @event.author.should == @user }
51 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 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 71 end
73 72 end
74 73 end
... ...
spec/observers/users_project_observer_spec.rb
1 1 require 'spec_helper'
2 2  
3 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 5 subject { UsersProjectObserver.instance }
12 6  
13 7 describe "#after_create" do
14 8 it "should called when UsersProject created" do
15 9 subject.should_receive(:after_create)
  10 +
16 11 UsersProject.observers.enable :users_project_observer do
17   - Factory.create(:users_project,
18   - project: project,
19   - user: user)
  12 + create(:users_project)
20 13 end
21 14 end
  15 +
22 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 20 subject.after_create(users_project)
25 21 end
  22 +
26 23 it "should create new event" do
27 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 27 author_id: users_project.user.id
31 28 )
  29 +
32 30 subject.after_create(users_project)
33 31 end
34 32 end
... ... @@ -36,29 +34,32 @@ describe UsersProjectObserver do
36 34 describe "#after_update" do
37 35 it "should called when UsersProject updated" do
38 36 subject.should_receive(:after_update)
  37 +
39 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 40 end
42 41 end
  42 +
43 43 it "should send email to user" do
44 44 Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
  45 +
45 46 subject.after_update(users_project)
46 47 end
47 48 end
  49 +
48 50 describe "#after_destroy" do
49 51 it "should called when UsersProject destroyed" do
50 52 subject.should_receive(:after_destroy)
  53 +
51 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 56 end
57 57 end
  58 +
58 59 it "should create new event" do
59 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 63 author_id: users_project.user.id
63 64 )
64 65 subject.after_destroy(users_project)
... ...
spec/requests/gitlab_flavored_markdown_spec.rb
... ... @@ -25,6 +25,7 @@ describe "Gitlab Flavored Markdown" do
25 25 @tag_name = "gfm-test-tag"
26 26 r.git.native(:tag, {}, @tag_name, commit.id)
27 27 end
  28 +
28 29 after do
29 30 # delete test branch and tag
30 31 project.repo.git.native(:branch, {D: true}, @branch_name)
... ...
spec/support/gitolite_stub.rb
... ... @@ -5,42 +5,16 @@ module GitoliteStub
5 5 end
6 6  
7 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 11 Gitolite::GitoliteAdmin.stub(new: gitolite_admin)
26   -
27 12 end
28 13  
29 14 def stub_gitlab_gitolite
30 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 19 Gitlab::GitoliteConfig.stub(new: gitolite_config)
46 20 end
... ...