Skip to content
Snippets Groups Projects
Verified Commit 2e497d84 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Prevent project stars duplication when fork project

parent 1a9b2a47
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -7,7 +7,12 @@ module Projects
end
 
def execute
project = @from_project.dup
project_params = {
visibility_level: @from_project.visibility_level,
description: @from_project.description,
}
project = Project.new(project_params)
project.name = @from_project.name
project.path = @from_project.path
project.namespace = current_user.namespace
Loading
Loading
Loading
Loading
@@ -5,44 +5,40 @@ describe Projects::ForkService do
before do
@from_namespace = create(:namespace)
@from_user = create(:user, namespace: @from_namespace )
@from_project = create(:project, creator_id: @from_user.id, namespace: @from_namespace)
@from_project = create(:project, creator_id: @from_user.id,
namespace: @from_namespace, star_count: 107,
description: 'wow such project')
@to_namespace = create(:namespace)
@to_user = create(:user, namespace: @to_namespace)
end
 
context 'fork project' do
describe "successfully creates project in the user namespace" do
let(:to_project) { fork_project(@from_project, @to_user) }
 
it "successfully creates project in the user namespace" do
@to_project = fork_project(@from_project, @to_user)
@to_project.owner.should == @to_user
@to_project.namespace.should == @to_user.namespace
it { to_project.owner.should == @to_user }
it { to_project.namespace.should == @to_user.namespace }
it { to_project.star_count.should be_zero }
it { to_project.description.should == @from_project.description }
end
end
 
context 'fork project failure' do
it "fails due to transaction failure" do
# make the mock gitlab-shell fail
@to_project = fork_project(@from_project, @to_user, false)
@to_project.errors.should_not be_empty
@to_project.errors[:base].should include("Fork transaction failed.")
end
end
 
context 'project already exists' do
it "should fail due to validation, not transaction failure" do
@existing_project = create(:project, creator_id: @to_user.id, name: @from_project.name, namespace: @to_namespace)
@to_project = fork_project(@from_project, @to_user)
@existing_project.persisted?.should be_true
@to_project.errors[:base].should include("Invalid fork destination")
@to_project.errors[:base].should_not include("Fork transaction failed.")
end
end
end
 
Loading
Loading
@@ -53,5 +49,4 @@ describe Projects::ForkService do
context.stub(gitlab_shell: shell)
context.execute
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