From bc7e0543a3051ebc052d64e1bd2ae2b4549e51b8 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 8 Jun 2026 11:04:02 -0400 Subject: [PATCH] Add coverage for email subscription account controls (#39333) --- .../email_subscriptions/accounts_spec.rb | 26 ++++++++++++ .../email_subscriptions/accounts_spec.rb | 42 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 spec/requests/admin/email_subscriptions/accounts_spec.rb create mode 100644 spec/system/admin/email_subscriptions/accounts_spec.rb diff --git a/spec/requests/admin/email_subscriptions/accounts_spec.rb b/spec/requests/admin/email_subscriptions/accounts_spec.rb new file mode 100644 index 00000000000..6e609e356db --- /dev/null +++ b/spec/requests/admin/email_subscriptions/accounts_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Admin Email Subscriptions Accounts' do + let(:user) { Fabricate(:admin_user) } + let(:account) { Fabricate :account } + + before { sign_in user } + + context 'when feature is disabled' do + around do |example| + original = Rails.application.config.x.email_subscriptions + Rails.application.config.x.email_subscriptions = false + example.run + Rails.application.config.x.email_subscriptions = original + end + + it 'returns not found' do + get admin_email_subscriptions_account_path(account.id) + + expect(response) + .to have_http_status(404) + end + end +end diff --git a/spec/system/admin/email_subscriptions/accounts_spec.rb b/spec/system/admin/email_subscriptions/accounts_spec.rb new file mode 100644 index 00000000000..e164da2bffe --- /dev/null +++ b/spec/system/admin/email_subscriptions/accounts_spec.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Admin Email Subscriptions Accounts' do + let(:account) { Fabricate :account, user: Fabricate(:user, role:) } + let(:role) { Fabricate(:user_role, permissions: UserRole::FLAGS[:manage_email_subscriptions]) } + let(:user) { Fabricate(:admin_user) } + + before { sign_in user } + + context 'when feature is enabled' do + around do |example| + original = Rails.application.config.x.email_subscriptions + Rails.application.config.x.email_subscriptions = true + example.run + Rails.application.config.x.email_subscriptions = original + end + + describe 'Managing the email subscription feature for an account' do + before { Fabricate :email_subscription, account: } + + it 'views setting status and toggles enabled' do + visit admin_email_subscriptions_account_path(account.id) + expect(page) + .to have_title(/Email newsletters of/) + + # Change from disabled to enabled + expect { click_on I18n.t('admin.email_subscriptions.accounts.show.enable_feature') } + .to change { account.reload.user_email_subscriptions_enabled? }.from(false).to(true) + + # Change back from enabled to disabled + expect { click_on I18n.t('admin.email_subscriptions.accounts.show.disable_feature') } + .to change { account.reload.user_email_subscriptions_enabled? }.from(true).to(false) + + # Delete the subscription + expect { find('.table-icon-link').click } + .to change(account.email_subscriptions, :count).by(-1) + end + end + end +end