Skip to content
Snippets Groups Projects
Commit 001f3bc5 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Specs refactoring to reduce test time. Disabled observers by default for specs

parent 0ae89200
No related branches found
No related tags found
No related merge requests found
require 'spec_helper'
 
describe "Profile account page" do
before(:each) { enable_observers }
let(:user) { create(:user) }
 
before do
Loading
Loading
require 'spec_helper'
 
describe "Projects" do
before(:each) { enable_observers }
before { login_as :user }
 
describe "DELETE /projects/:id" do
Loading
Loading
require 'spec_helper'
 
describe MergeRequest do
let(:merge_request) { FactoryGirl.create(:merge_request_with_diffs) }
describe Issue, 'Votes' do
let(:issue) { create(:issue) }
 
describe "#upvotes" do
it "with no notes has a 0/0 score" do
merge_request.upvotes.should == 0
issue.upvotes.should == 0
end
 
it "should recognize non-+1 notes" do
merge_request.notes << create(:note, note: "No +1 here")
merge_request.should have(1).note
merge_request.notes.first.upvote?.should be_false
merge_request.upvotes.should == 0
add_note "No +1 here"
issue.should have(1).note
issue.notes.first.upvote?.should be_false
issue.upvotes.should == 0
end
 
it "should recognize a single +1 note" do
merge_request.notes << create(:note, note: "+1 This is awesome")
merge_request.upvotes.should == 1
add_note "+1 This is awesome"
issue.upvotes.should == 1
end
 
it "should recognize multiple +1 notes" do
merge_request.notes << create(:note, note: "+1 This is awesome")
merge_request.notes << create(:note, note: "+1 I want this")
merge_request.upvotes.should == 2
add_note "+1 This is awesome"
add_note "+1 I want this"
issue.upvotes.should == 2
end
end
 
describe "#downvotes" do
it "with no notes has a 0/0 score" do
merge_request.downvotes.should == 0
issue.downvotes.should == 0
end
 
it "should recognize non--1 notes" do
merge_request.notes << create(:note, note: "Almost got a -1")
merge_request.should have(1).note
merge_request.notes.first.downvote?.should be_false
merge_request.downvotes.should == 0
add_note "Almost got a -1"
issue.should have(1).note
issue.notes.first.downvote?.should be_false
issue.downvotes.should == 0
end
 
it "should recognize a single -1 note" do
merge_request.notes << create(:note, note: "-1 This is bad")
merge_request.downvotes.should == 1
add_note "-1 This is bad"
issue.downvotes.should == 1
end
 
it "should recognize multiple -1 notes" do
merge_request.notes << create(:note, note: "-1 This is bad")
merge_request.notes << create(:note, note: "-1 Away with this")
merge_request.downvotes.should == 2
add_note "-1 This is bad"
add_note "-1 Away with this"
issue.downvotes.should == 2
end
end
 
describe "#votes_count" do
it "with no notes has a 0/0 score" do
merge_request.votes_count.should == 0
issue.votes_count.should == 0
end
 
it "should recognize non notes" do
merge_request.notes << create(:note, note: "No +1 here")
merge_request.should have(1).note
merge_request.votes_count.should == 0
add_note "No +1 here"
issue.should have(1).note
issue.votes_count.should == 0
end
 
it "should recognize a single +1 note" do
merge_request.notes << create(:note, note: "+1 This is awesome")
merge_request.votes_count.should == 1
add_note "+1 This is awesome"
issue.votes_count.should == 1
end
 
it "should recognize a single -1 note" do
merge_request.notes << create(:note, note: "-1 This is bad")
merge_request.votes_count.should == 1
add_note "-1 This is bad"
issue.votes_count.should == 1
end
 
it "should recognize multiple notes" do
merge_request.notes << create(:note, note: "+1 This is awesome")
merge_request.notes << create(:note, note: "-1 This is bad")
merge_request.notes << create(:note, note: "+1 I want this")
merge_request.votes_count.should == 3
add_note "+1 This is awesome"
add_note "-1 This is bad"
add_note "+1 I want this"
issue.votes_count.should == 3
end
end
 
describe "#upvotes_in_percent" do
it "with no notes has a 0% score" do
merge_request.upvotes_in_percent.should == 0
issue.upvotes_in_percent.should == 0
end
 
it "should count a single 1 note as 100%" do
merge_request.notes << create(:note, note: "+1 This is awesome")
merge_request.upvotes_in_percent.should == 100
add_note "+1 This is awesome"
issue.upvotes_in_percent.should == 100
end
 
it "should count multiple +1 notes as 100%" do
merge_request.notes << create(:note, note: "+1 This is awesome")
merge_request.notes << create(:note, note: "+1 I want this")
merge_request.upvotes_in_percent.should == 100
add_note "+1 This is awesome"
add_note "+1 I want this"
issue.upvotes_in_percent.should == 100
end
 
it "should count fractions for multiple +1 and -1 notes correctly" do
merge_request.notes << create(:note, note: "+1 This is awesome")
merge_request.notes << create(:note, note: "+1 I want this")
merge_request.notes << create(:note, note: "-1 This is bad")
merge_request.notes << create(:note, note: "+1 me too")
merge_request.upvotes_in_percent.should == 75
add_note "+1 This is awesome"
add_note "+1 I want this"
add_note "-1 This is bad"
add_note "+1 me too"
issue.upvotes_in_percent.should == 75
end
end
 
describe "#downvotes_in_percent" do
it "with no notes has a 0% score" do
merge_request.downvotes_in_percent.should == 0
issue.downvotes_in_percent.should == 0
end
 
it "should count a single -1 note as 100%" do
merge_request.notes << create(:note, note: "-1 This is bad")
merge_request.downvotes_in_percent.should == 100
add_note "-1 This is bad"
issue.downvotes_in_percent.should == 100
end
 
it "should count multiple -1 notes as 100%" do
merge_request.notes << create(:note, note: "-1 This is bad")
merge_request.notes << create(:note, note: "-1 Away with this")
merge_request.downvotes_in_percent.should == 100
add_note "-1 This is bad"
add_note "-1 Away with this"
issue.downvotes_in_percent.should == 100
end
 
it "should count fractions for multiple +1 and -1 notes correctly" do
merge_request.notes << create(:note, note: "+1 This is awesome")
merge_request.notes << create(:note, note: "+1 I want this")
merge_request.notes << create(:note, note: "-1 This is bad")
merge_request.notes << create(:note, note: "+1 me too")
merge_request.downvotes_in_percent.should == 25
add_note "+1 This is awesome"
add_note "+1 I want this"
add_note "-1 This is bad"
add_note "+1 me too"
issue.downvotes_in_percent.should == 25
end
end
def add_note(text)
issue.notes << create(:note, note: text, project: issue.project)
end
end
Loading
Loading
@@ -39,7 +39,6 @@ describe Project do
it { should have_many(:snippets).dependent(:destroy) }
it { should have_many(:deploy_keys).dependent(:destroy) }
it { should have_many(:hooks).dependent(:destroy) }
it { should have_many(:wikis).dependent(:destroy) }
it { should have_many(:protected_branches).dependent(:destroy) }
end
 
Loading
Loading
@@ -97,6 +96,7 @@ describe Project do
end
 
describe "last_activity methods" do
before { enable_observers }
let(:project) { create(:project) }
let(:last_event) { double(created_at: Time.now) }
 
Loading
Loading
Loading
Loading
@@ -4,11 +4,7 @@ describe IssueObserver do
let(:some_user) { create :user }
let(:assignee) { create :user }
let(:author) { create :user }
let(:mock_issue) { double(:issue, id: 42, assignee: assignee, author: author) }
let(:assigned_issue) { create(:issue, assignee: assignee, author: author) }
let(:unassigned_issue) { create(:issue, author: author) }
let(:closed_assigned_issue) { create(:closed_issue, assignee: assignee, author: author) }
let(:closed_unassigned_issue) { create(:closed_issue, author: author) }
let(:mock_issue) { create(:issue, assignee: assignee, author: author) }
 
 
before { subject.stub(:current_user).and_return(some_user) }
Loading
Loading
@@ -18,15 +14,6 @@ describe IssueObserver do
subject { IssueObserver.instance }
 
describe '#after_create' do
it 'is called when an issue is created' do
subject.should_receive(:after_create)
Issue.observers.enable :issue_observer do
create(:issue, project: create(:project))
end
end
it 'trigger notification to send emails' do
subject.should_receive(:notification)
 
Loading
Loading
@@ -36,41 +23,28 @@ describe IssueObserver do
 
context '#after_close' do
context 'a status "closed"' do
before { mock_issue.stub(state: 'closed') }
it 'note is created if the issue is being closed' do
Note.should_receive(:create_status_change_note).with(assigned_issue, some_user, 'closed')
Note.should_receive(:create_status_change_note).with(mock_issue, some_user, 'closed')
 
assigned_issue.close
subject.after_close(mock_issue, nil)
end
 
it 'trigger notification to send emails' do
subject.should_receive(:notification)
assigned_issue.close
end
subject.notification.should_receive(:close_issue).with(mock_issue, some_user)
 
it 'creates a note' do
Note.should_receive(:create_status_change_note).with(unassigned_issue, some_user, 'closed')
unassigned_issue.close
subject.after_close(mock_issue, nil)
end
end
 
context 'a status "reopened"' do
it 'note is created if the issue is being reopened' do
Note.should_receive(:create_status_change_note).with(closed_assigned_issue, some_user, 'reopened')
closed_assigned_issue.reopen
end
it 'trigger notification to send emails' do
subject.should_receive(:notification)
closed_assigned_issue.reopen
end
before { mock_issue.stub(state: 'reopened') }
 
it 'create a note' do
Note.should_receive(:create_status_change_note).with(closed_unassigned_issue, some_user, 'reopened')
it 'note is created if the issue is being reopened' do
Note.should_receive(:create_status_change_note).with(mock_issue, some_user, 'reopened')
 
closed_unassigned_issue.reopen
subject.after_reopen(mock_issue, nil)
end
end
end
Loading
Loading
@@ -80,16 +54,6 @@ describe IssueObserver do
mock_issue.stub(:is_being_reassigned?).and_return(false)
end
 
it 'is called when an issue is changed' do
changed = create(:issue, project: create(:project))
subject.should_receive(:after_update)
Issue.observers.enable :issue_observer do
changed.description = 'I changed'
changed.save
end
end
context 'notification' do
it 'triggered if the issue is being reassigned' do
mock_issue.should_receive(:is_being_reassigned?).and_return(true)
Loading
Loading
Loading
Loading
@@ -16,12 +16,6 @@ describe MergeRequestObserver do
subject { MergeRequestObserver.instance }
 
describe '#after_create' do
it 'is called when a merge request is created' do
subject.should_receive(:after_create)
create(:merge_request, project: create(:project))
end
it 'trigger notification service' do
subject.should_receive(:notification)
subject.after_create(mr_mock)
Loading
Loading
require 'spec_helper'
 
describe UserObserver do
before(:each) { enable_observers }
subject { UserObserver.instance }
before { subject.stub(notification: mock('NotificationService').as_null_object) }
 
Loading
Loading
require 'spec_helper'
 
describe UsersProjectObserver do
before(:each) { enable_observers }
let(:user) { create(:user) }
let(:project) { create(:project) }
subject { UsersProjectObserver.instance }
Loading
Loading
Loading
Loading
@@ -2,6 +2,7 @@ require 'spec_helper'
 
describe Gitlab::API do
include ApiHelpers
before(:each) { enable_observers }
 
let(:user) { create(:user) }
let!(:project) { create(:project, namespace: user.namespace ) }
Loading
Loading
Loading
Loading
@@ -2,6 +2,7 @@ require 'spec_helper'
 
describe Gitlab::API do
include ApiHelpers
before(:each) { enable_observers }
 
let(:user) { create(:user) }
let(:user2) { create(:user) }
Loading
Loading
Loading
Loading
@@ -41,13 +41,15 @@ Spork.prefork do
config.include FactoryGirl::Syntax::Methods
config.include Devise::TestHelpers, type: :controller
 
config.include TestEnv
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
config.use_transactional_fixtures = false
 
config.before do
TestEnv.init
TestEnv.init(observers: false)
end
end
end
Loading
Loading
Loading
Loading
@@ -12,7 +12,15 @@ module TestEnv
# - add_key
# - remove_key
#
def init
def init(opts = {})
# Disable observers to improve test speed
#
# You can enable it in whole test case where needed by next string:
#
# before(:each) { enable_observers }
#
disable_observers if opts[:observers] == false
# Use tmp dir for FS manipulations
repos_path = Rails.root.join('tmp', 'test-git-base-path')
Gitlab.config.gitlab_shell.stub(repos_path: repos_path)
Loading
Loading
@@ -60,4 +68,12 @@ module TestEnv
command = "git init --quiet --bare #{path};"
system(command)
end
def enable_observers
ActiveRecord::Base.observers.enable(:all)
end
def disable_observers
ActiveRecord::Base.observers.disable(:all)
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment