diff --git a/app/models/fork_network.rb b/app/models/fork_network.rb index 0323a8d222a3b53356c2ba9027012bdb3332bd89..d40cba138ba235296bec52c1ccecfab5950abaf2 100644 --- a/app/models/fork_network.rb +++ b/app/models/fork_network.rb @@ -2,6 +2,8 @@ class ForkNetwork < ApplicationRecord belongs_to :root_project, class_name: 'Project' + belongs_to :organization, class_name: 'Organizations::Organization', optional: true + has_many :fork_network_members has_many :projects, through: :fork_network_members diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb index 23028e5a0c8385640b4e9f760621e7d4e986bbe3..913e029f48107704f1e19ea9c2755db518fb89a9 100644 --- a/app/services/projects/fork_service.rb +++ b/app/services/projects/fork_service.rb @@ -109,7 +109,13 @@ def allowed_fork? end def fork_network - @fork_network ||= @project.fork_network || @project.build_root_of_fork_network + @fork_network ||= @project.fork_network || build_fork_network + end + + def build_fork_network + @project.build_root_of_fork_network.tap do |fork_network| + fork_network.organization = @project.organization + end end def build_fork_network_member(fork_to_project) diff --git a/spec/factories/fork_networks.rb b/spec/factories/fork_networks.rb index 12ea688bbce9d8f5a3f43ac851543cbde6f804a3..2d529d9e132bcf6ab982210c975091cf27029523 100644 --- a/spec/factories/fork_networks.rb +++ b/spec/factories/fork_networks.rb @@ -3,5 +3,9 @@ FactoryBot.define do factory :fork_network do association :root_project, factory: :project + + before(:create) do |network| + network.organization_id = network.root_project.organization_id + end end end diff --git a/spec/services/projects/fork_service_spec.rb b/spec/services/projects/fork_service_spec.rb index 2fd07d3ea9520168eed483c67c94d44d2edc9a8d..6b1cf6029dc622dceaf4180a57fd3fed2dee1172 100644 --- a/spec/services/projects/fork_service_spec.rb +++ b/spec/services/projects/fork_service_spec.rb @@ -91,6 +91,7 @@ expect(fork_network).not_to be_nil expect(fork_network.root_project).to eq(project) expect(fork_network.projects).to contain_exactly(project, fork_of_project) + expect(fork_network.organization).to eq(project.organization) end it 'imports the repository of the forked project', :sidekiq_might_not_need_inline do