mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-04-15 03:01:37 -05:00
🐛 Fixed newsletters not rendering in Portal Email Preferences (#22037)
ref https://linear.app/ghost/issue/ONC-723/support-escalation-re-fwd-email-preferences - On sites where the Default recipients setting was set to anything other than "Whoever has access to the post", the list of newsletters and the toggle to subscribe/unsubscribe would not be rendered on the Portal "Email Preferences" page. - The bug was introduced in v5.106.0, and intended to hide the newsletter list if Newsletter sending were disabled completely, but there was bug in the logic - This commit has a breaking test to prevent this in the future, and fixes the logic to only hide the newsletter list if `editor_default_email_recipients` is explicitly set to 'disabled'.
This commit is contained in:
parent
996c9d8c68
commit
713e75838a
3 changed files with 43 additions and 2 deletions
|
@ -134,4 +134,28 @@ describe('Account Email Page', () => {
|
|||
expect(unsubscribeBtns).toHaveLength(1);
|
||||
expect(unsubscribeBtns[0].textContent).toContain('Get notified when someone replies to your comment');
|
||||
});
|
||||
|
||||
test('newsletters are visible when editor default email recipients is set to visibility', async () => {
|
||||
const newsletterData = getNewslettersData({numOfNewsletters: 2});
|
||||
const siteData = getSiteData({
|
||||
newsletters: newsletterData,
|
||||
editorDefaultEmailRecipients: 'visibility',
|
||||
member: getMemberData({newsletters: newsletterData})
|
||||
});
|
||||
const {getAllByTestId} = setup({site: siteData});
|
||||
const unsubscribeBtns = getAllByTestId(`toggle-wrapper`);
|
||||
expect(unsubscribeBtns).toHaveLength(3);
|
||||
});
|
||||
|
||||
test('newsletters are visible when editor default email recipients is set to filter', async () => {
|
||||
const newsletterData = getNewslettersData({numOfNewsletters: 2});
|
||||
const siteData = getSiteData({
|
||||
newsletters: newsletterData,
|
||||
editorDefaultEmailRecipients: 'filter',
|
||||
member: getMemberData({newsletters: newsletterData})
|
||||
});
|
||||
const {getAllByTestId} = setup({site: siteData});
|
||||
const unsubscribeBtns = getAllByTestId(`toggle-wrapper`);
|
||||
expect(unsubscribeBtns).toHaveLength(3);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -87,7 +87,7 @@ export function getNewsletterFromUuid({site, uuid}) {
|
|||
}
|
||||
|
||||
export function hasNewsletterSendingEnabled({site}) {
|
||||
return site?.editor_default_email_recipients === 'visibility';
|
||||
return site?.editor_default_email_recipients !== 'disabled';
|
||||
}
|
||||
|
||||
export function allowCompMemberUpgrade({member}) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {hasAvailablePrices, getAllProductsForSite, getAvailableProducts, getCurrencySymbol, getFreeProduct, getMemberName, getMemberSubscription, getPriceFromSubscription, getPriceIdFromPageQuery, getSupportAddress, getDefaultNewsletterSender, getUrlHistory, hasMultipleProducts, isActiveOffer, isInviteOnly, isPaidMember, isPaidMembersOnly, isSameCurrency, transformApiTiersData, isSigninAllowed, isSignupAllowed, getCompExpiry, isInThePast} from './helpers';
|
||||
import {hasAvailablePrices, getAllProductsForSite, getAvailableProducts, getCurrencySymbol, getFreeProduct, getMemberName, getMemberSubscription, getPriceFromSubscription, getPriceIdFromPageQuery, getSupportAddress, getDefaultNewsletterSender, getUrlHistory, hasMultipleProducts, isActiveOffer, isInviteOnly, isPaidMember, isPaidMembersOnly, isSameCurrency, transformApiTiersData, isSigninAllowed, isSignupAllowed, getCompExpiry, isInThePast, hasNewsletterSendingEnabled} from './helpers';
|
||||
import * as Fixtures from './fixtures-generator';
|
||||
import {site as FixturesSite, member as FixtureMember, offer as FixtureOffer, transformTierFixture as TransformFixtureTiers} from '../utils/test-fixtures';
|
||||
import {isComplimentaryMember} from '../utils/helpers';
|
||||
|
@ -539,4 +539,21 @@ describe('Helpers - ', () => {
|
|||
expect(isInThePast(futureDate)).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('hasNewsletterSendingEnabled', () => {
|
||||
test('returns true when editor default email recipients is set to visibility', () => {
|
||||
const site = {editor_default_email_recipients: 'visibility'};
|
||||
expect(hasNewsletterSendingEnabled({site})).toBe(true);
|
||||
});
|
||||
|
||||
test('returns false when editor default email recipients is set to disabled', () => {
|
||||
const site = {editor_default_email_recipients: 'disabled'};
|
||||
expect(hasNewsletterSendingEnabled({site})).toBe(false);
|
||||
});
|
||||
|
||||
test('returns true when editor default email recipients is set to filter', () => {
|
||||
const site = {editor_default_email_recipients: 'filter'};
|
||||
expect(hasNewsletterSendingEnabled({site})).toBe(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue