Commit a82977c64843aa177498f1a715121ae6e38bc323
1 parent
0d66cf2a
Exists in
master
and in
4 other branches
A bit of test refactoring
Showing
6 changed files
with
49 additions
and
75 deletions
Show diff stats
Guardfile
| 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 |