diff --git a/ee/app/workers/gitlab_subscriptions/members/destroyed_worker.rb b/ee/app/workers/gitlab_subscriptions/members/destroyed_worker.rb index 05a6903b9500507af529177a21b1c636b43ced7d..fcfd32a61457c82843037e2c93d83fca146f7389 100644 --- a/ee/app/workers/gitlab_subscriptions/members/destroyed_worker.rb +++ b/ee/app/workers/gitlab_subscriptions/members/destroyed_worker.rb @@ -17,7 +17,7 @@ def handle_event(event) return unless user && namespace&.group_namespace? - return if namespace.billed_project_user?(user) || namespace.billed_group_user?(user) + return if ::Member.in_hierarchy(namespace).with_user(user).exists? GitlabSubscriptions::SeatAssignment.find_by_namespace_and_user(namespace, user)&.destroy end diff --git a/ee/spec/workers/gitlab_subscriptions/members/destroyed_worker_spec.rb b/ee/spec/workers/gitlab_subscriptions/members/destroyed_worker_spec.rb index 3e64a3a3a2b504ce69b20591a5b927f8990c6f05..d5453e42632b1a92b0c32b950a2b07ca00c06032 100644 --- a/ee/spec/workers/gitlab_subscriptions/members/destroyed_worker_spec.rb +++ b/ee/spec/workers/gitlab_subscriptions/members/destroyed_worker_spec.rb @@ -89,17 +89,25 @@ it_behaves_like 'returns early' end - context 'when user is still billed member of group hierarchy' do + context 'when user is still a member of group hierarchy' do let(:another_sub_group) { create(:group, parent: root_namespace) } before do - another_sub_group.add_developer(user) + another_sub_group.add_guest(user) end it_behaves_like 'returns early' + + context 'when the user is blocked' do + before do + user.block! + end + + it_behaves_like 'returns early' + end end - context 'when user is still billed member of project hierarchy' do + context 'when user is still a member of project hierarchy' do let(:project) { build(:project, group: root_namespace) } before do