diff --git a/app/models/user.rb b/app/models/user.rb index d8dd6a352..6fe68487a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -97,6 +97,8 @@ class User < ApplicationRecord has_many :poll_skips, dependent: :delete_all has_many :poll_votes, dependent: :delete_all has_many :profile_pins, as: :profile, inverse_of: :profile, dependent: :delete_all + has_many :segmented_users, dependent: :destroy + has_many :audience_segments, through: :segmented_users # we keep rating votes as they belong to the article, not to the user who viewed it has_many :rating_votes, dependent: :nullify diff --git a/spec/factories/segmented_user.rb b/spec/factories/segmented_user.rb new file mode 100644 index 000000000..06083c8a2 --- /dev/null +++ b/spec/factories/segmented_user.rb @@ -0,0 +1,6 @@ +FactoryBot.define do + factory :segmented_user do + user + audience_segment + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index b5800a8c2..c1a019b58 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -106,6 +106,8 @@ RSpec.describe User do it { is_expected.to have_many(:reactions).dependent(:destroy) } it { is_expected.to have_many(:response_templates).dependent(:delete_all) } it { is_expected.to have_many(:source_authored_user_subscriptions).dependent(:destroy) } + it { is_expected.to have_many(:segmented_users).dependent(:destroy) } + it { is_expected.to have_many(:audience_segments).through(:segmented_users) } it { is_expected.to have_many(:subscribed_to_user_subscriptions).dependent(:destroy) } it { is_expected.to have_many(:subscribers).dependent(:destroy) } it { is_expected.to have_many(:tweets).dependent(:nullify) } diff --git a/spec/services/users/delete_spec.rb b/spec/services/users/delete_spec.rb index 24a5a2f5b..7e1ed21a7 100644 --- a/spec/services/users/delete_spec.rb +++ b/spec/services/users/delete_spec.rb @@ -136,6 +136,7 @@ RSpec.describe Users::Delete, type: :service do end it "keeps the kept associations" do + # NB: each association must have a factory defined! expect(kept_associations).not_to be_empty user.reload described_class.call(user)