diff --git a/app/models/user.rb b/app/models/user.rb index a030f7422..6e5db433f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,7 +1,8 @@ class User < ApplicationRecord include Verification attribute :registering_from_web, default: false - %i[newsletter email_digest email_on_direct_message].each do |field| + %i[newsletter email_digest email_on_direct_message recommended_debates + recommended_proposals].each do |field| attribute field, :boolean, default: -> { !Setting["feature.gdpr.require_consent_for_notifications"] } end diff --git a/db/migrate/20251009085327_remove_default_value_in_user_recommendations.rb b/db/migrate/20251009085327_remove_default_value_in_user_recommendations.rb new file mode 100644 index 000000000..557c01a6b --- /dev/null +++ b/db/migrate/20251009085327_remove_default_value_in_user_recommendations.rb @@ -0,0 +1,8 @@ +class RemoveDefaultValueInUserRecommendations < ActiveRecord::Migration[7.1] + def change + change_table :users do |t| + t.change_default :recommended_debates, from: true, to: nil + t.change_default :recommended_proposals, from: true, to: nil + end + end +end diff --git a/db/schema.rb b/db/schema.rb index c7eb4545c..d74ea7a2e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2025_10_09_084919) do +ActiveRecord::Schema[7.1].define(version: 2025_10_09_085327) do # These are extensions that must be enabled in order to support this database enable_extension "pg_trgm" enable_extension "plpgsql" @@ -1625,8 +1625,8 @@ ActiveRecord::Schema[7.1].define(version: 2025_10_09_084919) do t.integer "failed_email_digests_count", default: 0 t.text "former_users_data_log", default: "" t.boolean "public_interests", default: false - t.boolean "recommended_debates", default: true - t.boolean "recommended_proposals", default: true + t.boolean "recommended_debates" + t.boolean "recommended_proposals" t.string "subscriptions_token" t.integer "failed_attempts", default: 0, null: false t.datetime "locked_at", precision: nil diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 3d95d6fc3..843f475d1 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -146,6 +146,34 @@ describe User do end end + describe "#recommended_debates" do + it "is true by default when the consent for notifications setting is disabled" do + Setting["feature.gdpr.require_consent_for_notifications"] = false + + expect(build(:user).recommended_debates).to be true + end + + it "is false by default when the consent for notifications setting is enabled" do + Setting["feature.gdpr.require_consent_for_notifications"] = true + + expect(build(:user).recommended_debates).to be false + end + end + + describe "#recommended_proposals" do + it "is true by default when the consent for notifications setting is disabled" do + Setting["feature.gdpr.require_consent_for_notifications"] = false + + expect(build(:user).recommended_proposals).to be true + end + + it "is false by default when the consent for notifications setting is enabled" do + Setting["feature.gdpr.require_consent_for_notifications"] = true + + expect(build(:user).recommended_proposals).to be false + end + end + describe "#official_position_badge" do it "is false by default" do expect(subject.official_position_badge).to be false