Commit baa6067d authored by Doug Stull's avatar Doug Stull

Merge branch 'delete-test-cases-on-transfer-to-free-group' into 'master'

Delete test cases when migrating project to a free group

See merge request gitlab-org/gitlab!67374
parents 06b79431 9dd8f87a
...@@ -362,6 +362,14 @@ NOTE: ...@@ -362,6 +362,14 @@ NOTE:
GitLab administrators can use the administration interface to move any project to any GitLab administrators can use the administration interface to move any project to any
namespace if needed. namespace if needed.
##### Transferring a GitLab.com project to a different subscription tier
When you transfer a project from a namespace that's licensed for GitLab SaaS Premium or Ultimate to Free, some data related to the paid features is deleted.
For example, [project access tokens](../../../user/project/settings/project_access_tokens.md) are revoked, and
[pipeline subscriptions](../../../ci/pipelines/multi_project_pipelines.md#trigger-a-pipeline-when-an-upstream-project-is-rebuilt)
and [test cases](../../../ci/test_cases/index.md) are deleted.
#### Delete a project #### Delete a project
You can mark a project to be deleted. You can mark a project to be deleted.
......
...@@ -50,6 +50,7 @@ module EE ...@@ -50,6 +50,7 @@ module EE
def remove_paid_features def remove_paid_features
revoke_project_access_tokens revoke_project_access_tokens
delete_pipeline_subscriptions delete_pipeline_subscriptions
delete_test_cases
end end
def revoke_project_access_tokens def revoke_project_access_tokens
...@@ -66,6 +67,12 @@ module EE ...@@ -66,6 +67,12 @@ module EE
project.upstream_project_subscriptions.destroy_all # rubocop: disable Cop/DestroyAll project.upstream_project_subscriptions.destroy_all # rubocop: disable Cop/DestroyAll
end end
def delete_test_cases
return if new_namespace.licensed_feature_available?(:quality_management)
project.issues.with_issue_type(:test_case).delete_all
end
end end
end end
end end
...@@ -204,5 +204,26 @@ RSpec.describe Projects::TransferService do ...@@ -204,5 +204,26 @@ RSpec.describe Projects::TransferService do
end end
end end
end end
describe 'test cases' do
before do
create(:quality_test_case, project: project, author: user)
stub_ee_application_setting(should_check_namespace_plan: true)
end
context 'when target namespace has a premium plan' do
it 'does not delete the test cases' do
subject.execute(premium_group)
expect { subject.execute(premium_group) }.not_to change { project.issues.with_issue_type(:test_case).count }
end
end
context 'when target namespace has a free plan' do
it 'deletes the test cases' do
expect { subject.execute(free_group) }.to change { project.issues.with_issue_type(:test_case).count }.from(1).to(0)
end
end
end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment