Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIzaak Alpert <ihalpert@blackberry.com>2013-04-25 18:15:33 +0400
committerIzaak Alpert <ialpert@blackberry.com>2013-07-18 06:41:30 +0400
commit3d7194f0112da12e8732df9ffe8b34fe7d0a9f6b (patch)
tree9b3c68c04b5ead5e35456595a07453b036b2dbc8 /spec/models
parentfd033671933fcc0f472480d98c907aefde357416 (diff)
Merge Request on forked projects
The good: - You can do a merge request for a forked commit and it will merge properly (i.e. it does work). - Push events take into account merge requests on forked projects - Tests around merge_actions now present, spinach, and other rspec tests - Satellites now clean themselves up rather then recreate The questionable: - Events only know about target projects - Project's merge requests only hold on to MR's where they are the target - All operations performed in the satellite The bad: - Duplication between project's repositories and satellites (e.g. commits_between) (for reference: http://feedback.gitlab.com/forums/176466-general/suggestions/3456722-merge-requests-between-projects-repos) Fixes: Make test repos/satellites only create when needed -Spinach/Rspec now only initialize test directory, and setup stubs (things that are relatively cheap) -project_with_code, source_project_with_code, and target_project_with_code now create/destroy their repos individually -fixed remote removal -How to merge renders properly -Update emails to show project/branches -Edit MR doesn't set target branch -Fix some failures on editing/creating merge requests, added a test -Added back a test around merge request observer -Clean up project_transfer_spec, Remove duplicate enable/disable observers -Ensure satellite lock files are cleaned up, Attempted to add some testing around these as well -Signifant speed ups for tests -Update formatting ordering in notes_on_merge_requests -Remove wiki schema update Fixes for search/search results -Search results was using by_project for a list of projects, updated this to use in_projects -updated search results to reference the correct (target) project -udpated search results to print both sides of the merge request Change-Id: I19407990a0950945cc95d62089cbcc6262dab1a8
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/commit_spec.rb1
-rw-r--r--spec/models/forked_project_link_spec.rb12
-rw-r--r--spec/models/merge_request_spec.rb40
-rw-r--r--spec/models/note_spec.rb16
-rw-r--r--spec/models/project_spec.rb10
5 files changed, 56 insertions, 23 deletions
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index ad99d8a390b..b84f24bf3ad 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -3,7 +3,6 @@ require 'spec_helper'
describe Commit do
let(:commit) { create(:project_with_code).repository.commit }
-
describe '#title' do
it "returns no_commit_message when safe_message is blank" do
commit.stub(:safe_message).and_return('')
diff --git a/spec/models/forked_project_link_spec.rb b/spec/models/forked_project_link_spec.rb
index 5f25e2abd23..44b8c6155be 100644
--- a/spec/models/forked_project_link_spec.rb
+++ b/spec/models/forked_project_link_spec.rb
@@ -12,9 +12,9 @@
require 'spec_helper'
describe ForkedProjectLink, "add link on fork" do
- let(:project_from) {create(:project)}
- let(:namespace) {create(:namespace)}
- let(:user) {create(:user, namespace: namespace)}
+ let(:project_from) { create(:project) }
+ let(:namespace) { create(:namespace) }
+ let(:user) { create(:user, namespace: namespace) }
before do
@project_to = fork_project(project_from, user)
@@ -30,9 +30,9 @@ describe ForkedProjectLink, "add link on fork" do
end
describe :forked_from_project do
- let(:forked_project_link) {build(:forked_project_link)}
- let(:project_from) {create(:project)}
- let(:project_to) {create(:project, forked_project_link: forked_project_link)}
+ let(:forked_project_link) { build(:forked_project_link) }
+ let(:project_from) { create(:project) }
+ let(:project_to) { create(:project, forked_project_link: forked_project_link) }
before :each do
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index a0a43fbb815..cb15d250c12 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -41,15 +41,12 @@ describe MergeRequest do
it { should include_module(Issuable) }
end
- describe "#mr_and_commit_notes" do
-
- end
describe "#mr_and_commit_notes" do
let!(:merge_request) { create(:merge_request) }
before do
- merge_request.stub(:commits) { [merge_request.project.repository.commit] }
+ merge_request.stub(:commits) { [merge_request.source_project.repository.commit] }
create(:note, commit_id: merge_request.commits.first.id, noteable_type: 'Commit')
create(:note, noteable: merge_request)
end
@@ -71,4 +68,39 @@ describe MergeRequest do
subject.is_being_reassigned?.should be_false
end
end
+
+ describe '#for_fork?' do
+ it 'returns true if the merge request is for a fork' do
+ subject.source_project = create(:source_project)
+ subject.target_project = create(:target_project)
+
+ subject.for_fork?.should be_true
+ end
+ it 'returns false if is not for a fork' do
+ subject.source_project = create(:source_project)
+ subject.target_project = subject.source_project
+ subject.for_fork?.should be_false
+ end
+ end
+
+
+ describe '#allow_source_branch_removal?' do
+ it 'should not allow removal when mr is a fork' do
+
+ subject.disallow_source_branch_removal?.should be_true
+ end
+ it 'should not allow removal when the mr is not a fork, but the source branch is the root reference' do
+ subject.target_project = subject.source_project
+ subject.source_branch = subject.source_project.repository.root_ref
+ subject.disallow_source_branch_removal?.should be_true
+ end
+
+ it 'should not disallow removal when the mr is not a fork, and but source branch is not the root reference' do
+ subject.target_project = subject.source_project
+ subject.source_branch = "Something Different #{subject.source_project.repository.root_ref}"
+ subject.for_fork?.should be_false
+ subject.disallow_source_branch_removal?.should be_false
+ end
+ end
+
end
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index ba94f940dc8..0f3af588457 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -144,12 +144,12 @@ describe Note do
end
describe '#create_status_change_note' do
- let(:project) { create(:project) }
- let(:thing) { create(:issue, project: project) }
- let(:author) { create(:user) }
- let(:status) { 'new_status' }
+ let(:project) { create(:project) }
+ let(:thing) { create(:issue, project: project) }
+ let(:author) { create(:user) }
+ let(:status) { 'new_status' }
- subject { Note.create_status_change_note(thing, author, status) }
+ subject { Note.create_status_change_note(thing, project, author, status) }
it 'creates and saves a Note' do
should be_a Note
@@ -157,9 +157,9 @@ describe Note do
end
its(:noteable) { should == thing }
- its(:project) { should == thing.project }
- its(:author) { should == author }
- its(:note) { should =~ /Status changed to #{status}/ }
+ its(:project) { should == thing.project }
+ its(:author) { should == author }
+ its(:note) { should =~ /Status changed to #{status}/ }
end
describe :authorization do
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 0845d2edea3..2f6a20a1b24 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -26,6 +26,9 @@
require 'spec_helper'
describe Project do
+ before(:each) { enable_observers }
+ after(:each) { disable_observers }
+
describe "Associations" do
it { should belong_to(:group) }
it { should belong_to(:namespace) }
@@ -95,12 +98,11 @@ describe Project do
end
describe "last_activity methods" do
- before { enable_observers }
- let(:project) { create(:project) }
+ let(:project) { create(:project) }
let(:last_event) { double(created_at: Time.now) }
describe "last_activity" do
- it "should alias last_activity to last_event"do
+ it "should alias last_activity to last_event" do
project.stub(last_event: last_event)
project.last_activity.should == last_event
end
@@ -122,7 +124,7 @@ describe Project do
let(:project) { create(:project_with_code) }
before do
- @merge_request = create(:merge_request, project: project)
+ @merge_request = create(:merge_request, source_project: project, target_project: project)
@key = create(:key, user_id: project.owner.id)
end