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 | 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
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 | ... | ... |