mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-03 23:00:14 -05:00
🐛 Fixed portal free trial message incorrectly showing (#17095)
no issue Fixed portal free trial message incorrectly showing when signing up for free. Message was showing due to `pageQuery` erroneously not being passed down the call stack to `getSiteProducts`
This commit is contained in:
parent
64518d2ad4
commit
a79035c2f6
4 changed files with 40 additions and 7 deletions
|
@ -606,8 +606,8 @@ class SignupPage extends React.Component {
|
|||
}
|
||||
|
||||
renderFreeTrialMessage() {
|
||||
const {site, t} = this.context;
|
||||
if (hasFreeTrialTier({site}) && !isInviteOnlySite({site})) {
|
||||
const {site, t, pageQuery} = this.context;
|
||||
if (hasFreeTrialTier({site, pageQuery}) && !isInviteOnlySite({site})) {
|
||||
return (
|
||||
<p className='gh-portal-free-trial-notification' data-testid="free-trial-notification-text">
|
||||
{t('After a free trial ends, you will be charged the regular price for the tier you\'ve chosen. You can always cancel before then.')}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from 'react';
|
||||
import SignupPage from './SignupPage';
|
||||
import {getFreeProduct, getProductData, getSiteData} from '../../utils/fixtures-generator';
|
||||
import {render, fireEvent} from '../../utils/test-utils';
|
||||
|
||||
const setup = (overrides) => {
|
||||
|
@ -7,7 +8,8 @@ const setup = (overrides) => {
|
|||
<SignupPage />,
|
||||
{
|
||||
overrideContext: {
|
||||
member: null
|
||||
member: null,
|
||||
...overrides
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@ -16,12 +18,14 @@ const setup = (overrides) => {
|
|||
const submitButton = utils.queryByRole('button', {name: 'Continue'});
|
||||
const chooseButton = utils.queryAllByRole('button', {name: 'Choose'});
|
||||
const signinButton = utils.queryByRole('button', {name: 'Sign in'});
|
||||
const freeTrialMessage = utils.queryByText(/After a free trial ends/i);
|
||||
return {
|
||||
nameInput,
|
||||
emailInput,
|
||||
submitButton,
|
||||
chooseButton,
|
||||
signinButton,
|
||||
freeTrialMessage,
|
||||
mockOnActionFn,
|
||||
...utils
|
||||
};
|
||||
|
@ -59,4 +63,31 @@ describe('SignupPage', () => {
|
|||
fireEvent.click(signinButton);
|
||||
expect(mockOnActionFn).toHaveBeenCalledWith('switchPage', {page: 'signin'});
|
||||
});
|
||||
|
||||
test('renders free trial message', () => {
|
||||
const {freeTrialMessage} = setup({
|
||||
site: getSiteData({
|
||||
products: [
|
||||
getProductData({trialDays: 7}),
|
||||
getFreeProduct({})
|
||||
]
|
||||
})
|
||||
});
|
||||
|
||||
expect(freeTrialMessage).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('does not render free trial message on free signup', () => {
|
||||
const {freeTrialMessage} = setup({
|
||||
site: getSiteData({
|
||||
products: [
|
||||
getProductData({trialDays: 7}),
|
||||
getFreeProduct({})
|
||||
]
|
||||
}),
|
||||
pageQuery: 'free'
|
||||
});
|
||||
|
||||
expect(freeTrialMessage).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -189,7 +189,8 @@ export function getProductData({
|
|||
id = `product_${objectId()}`,
|
||||
monthlyPrice = getPriceData(),
|
||||
yearlyPrice = getPriceData({interval: 'year'}),
|
||||
numOfBenefits = 2
|
||||
numOfBenefits = 2,
|
||||
trialDays = null
|
||||
}) {
|
||||
return {
|
||||
id: id,
|
||||
|
@ -198,7 +199,8 @@ export function getProductData({
|
|||
monthlyPrice: type === 'free' ? null : monthlyPrice,
|
||||
yearlyPrice: type === 'free' ? null : yearlyPrice,
|
||||
type: type,
|
||||
benefits: getBenefits({numOfBenefits})
|
||||
benefits: getBenefits({numOfBenefits}),
|
||||
trial_days: trialDays
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -410,8 +410,8 @@ export function getSiteProducts({site, pageQuery}) {
|
|||
return products;
|
||||
}
|
||||
|
||||
export function hasFreeTrialTier({site}) {
|
||||
const tiers = getSiteProducts({site});
|
||||
export function hasFreeTrialTier({site, pageQuery}) {
|
||||
const tiers = getSiteProducts({site, pageQuery});
|
||||
return tiers.some((tier) => {
|
||||
return !!tier?.trial_days;
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue