diff --git a/app/models/forked_project_link.rb b/app/models/forked_project_link.rb
index 36cf7ad6a280584645d975ada0130c2059c1c11c..8d35864eff64296750fda4c6b63f261e4ff2711c 100644
--- a/app/models/forked_project_link.rb
+++ b/app/models/forked_project_link.rb
@@ -1,4 +1,4 @@
 class ForkedProjectLink < ActiveRecord::Base
-  belongs_to :forked_to_project, class_name: 'Project'
-  belongs_to :forked_from_project, class_name: 'Project'
+  belongs_to :forked_to_project, -> { where.not(pending_delete: true) }, class_name: 'Project'
+  belongs_to :forked_from_project, -> { where.not(pending_delete: true) }, class_name: 'Project'
 end
diff --git a/spec/models/forked_project_link_spec.rb b/spec/models/forked_project_link_spec.rb
index 6e8d43f988cd94ec9c921a021b3ef0a1b8fba0cd..5c13cf584f9a58c18506f9ecafe8c2b58fd11b6d 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) { build(: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
+      expect(forked_project_link).to receive(:destroy)
+
+      project_to.destroy
+    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