From f212b51f7f83f63cb59dff45f38f82480bd7bb14 Mon Sep 17 00:00:00 2001 From: cmrd Senya <senya@riseup.net> Date: Sun, 1 Oct 2017 03:05:57 +0300 Subject: [PATCH] Check for user existence on aspect membership destruction --- app/models/aspect_membership.rb | 4 +--- spec/models/aspect_membership_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/models/aspect_membership.rb b/app/models/aspect_membership.rb index 18c5869bbe..87bc6c5745 100644 --- a/app/models/aspect_membership.rb +++ b/app/models/aspect_membership.rb @@ -11,9 +11,7 @@ class AspectMembership < ApplicationRecord has_one :person, :through => :contact before_destroy do - if self.contact && self.contact.aspects.size == 1 - self.user.disconnect(self.contact) - end + user&.disconnect(contact) if contact&.aspects&.size == 1 true end diff --git a/spec/models/aspect_membership_spec.rb b/spec/models/aspect_membership_spec.rb index d9585c5541..d8f1de0fe1 100644 --- a/spec/models/aspect_membership_spec.rb +++ b/spec/models/aspect_membership_spec.rb @@ -26,5 +26,13 @@ describe AspectMembership, :type => :model do alice.add_contact_to_aspect(contact, aspect) aspect_membership.destroy end + + it "doesn't fail destruction if the user entry was deleted in prior" do + aspect_membership.user.delete + id = aspect_membership.id + + expect { AspectMembership.find(id).destroy }.not_to raise_error + expect(AspectMembership.where(id: id)).not_to exist + end end end -- GitLab