diff options
author | DJ Mountney <dj@gitlab.com> | 2017-07-10 21:20:52 +0000 |
---|---|---|
committer | DJ Mountney <dj@gitlab.com> | 2017-07-10 21:20:52 +0000 |
commit | e643c0db35617d2b0ba607708322e827c15ce132 (patch) | |
tree | 2094291da16a3c4021176f7441b865970cfeccf8 /spec/models/forked_project_link_spec.rb | |
parent | ba4250c119df661f32bc7e72b8001798464a9785 (diff) | |
parent | 26b6e299e1c97b956306572c5c9f6c02f428bfd7 (diff) | |
download | gitlab-ce-e643c0db35617d2b0ba607708322e827c15ce132.tar.gz |
Merge branch 'master' into 'catch-redis-address-error'
# Conflicts:
# lib/gitlab/current_settings.rb
Diffstat (limited to 'spec/models/forked_project_link_spec.rb')
-rw-r--r-- | spec/models/forked_project_link_spec.rb | 76 |
1 files changed, 49 insertions, 27 deletions
diff --git a/spec/models/forked_project_link_spec.rb b/spec/models/forked_project_link_spec.rb index 6e8d43f988c..38fbdd2536a 100644 --- a/spec/models/forked_project_link_spec.rb +++ b/spec/models/forked_project_link_spec.rb @@ -2,53 +2,75 @@ require 'spec_helper' describe ForkedProjectLink, "add link on fork" do let(:project_from) { create(:project, :repository) } + let(:project_to) { fork_project(project_from, user) } let(:user) { create(:user) } let(:namespace) { user.namespace } before do - create(:project_member, :reporter, user: user, project: project_from) - @project_to = fork_project(project_from, user) + project_from.add_reporter(user) + end + + it 'project_from knows its forks' do + _ = project_to + + expect(project_from.forks.count).to eq(1) end it "project_to knows it is forked" do - expect(@project_to.forked?).to be_truthy + expect(project_to.forked?).to be_truthy end it "project knows who it is forked from" do - expect(@project_to.forked_from_project).to eq(project_from) + expect(project_to.forked_from_project).to eq(project_from) end -end -describe '#forked?' do - let(:forked_project_link) { build(:forked_project_link) } - let(:project_from) { create(:project, :repository) } - let(:project_to) { create(:project, forked_project_link: forked_project_link) } + context 'project_to is pending_delete' do + before do + project_to.update!(pending_delete: true) + end - before :each do - forked_project_link.forked_from_project = project_from - forked_project_link.forked_to_project = project_to - forked_project_link.save! + it { expect(project_from.forks.count).to eq(0) } end - it "project_to knows it is forked" do - expect(project_to.forked?).to be_truthy - end + context 'project_from is pending_delete' do + before do + project_from.update!(pending_delete: true) + end - it "project_from is not forked" do - expect(project_from.forked?).to be_falsey + it { expect(project_to.forked_from_project).to be_nil } end - it "project_to.destroy destroys fork_link" do - expect(forked_project_link).to receive(:destroy) - project_to.destroy + describe '#forked?' do + let(:project_to) { create(:project, forked_project_link: forked_project_link) } + let(:forked_project_link) { create(:forked_project_link) } + + before do + forked_project_link.forked_from_project = project_from + forked_project_link.forked_to_project = project_to + forked_project_link.save! + end + + it "project_to knows it is forked" do + expect(project_to.forked?).to be_truthy + end + + it "project_from is not forked" do + expect(project_from.forked?).to be_falsey + end + + it "project_to.destroy destroys fork_link" do + project_to.destroy + + expect(ForkedProjectLink.exists?(id: forked_project_link.id)).to eq(false) + end end -end -def fork_project(from_project, user) - shell = double('gitlab_shell', fork_repository: true) + def fork_project(from_project, user) + service = Projects::ForkService.new(from_project, user) + shell = double('gitlab_shell', fork_repository: true) - service = Projects::ForkService.new(from_project, user) - allow(service).to receive(:gitlab_shell).and_return(shell) + allow(service).to receive(:gitlab_shell).and_return(shell) - service.execute + service.execute + end end |