diff --git a/apps/portal/src/components/pages/SignupPage.js b/apps/portal/src/components/pages/SignupPage.js
index 1479510980..e673d1b279 100644
--- a/apps/portal/src/components/pages/SignupPage.js
+++ b/apps/portal/src/components/pages/SignupPage.js
@@ -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 (
{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.')}
diff --git a/apps/portal/src/components/pages/SignupPage.test.js b/apps/portal/src/components/pages/SignupPage.test.js
index e4e557a405..be8eaa0bdb 100644
--- a/apps/portal/src/components/pages/SignupPage.test.js
+++ b/apps/portal/src/components/pages/SignupPage.test.js
@@ -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) => {
,
{
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();
+ });
});
diff --git a/apps/portal/src/utils/fixtures-generator.js b/apps/portal/src/utils/fixtures-generator.js
index b63950e6b4..a3349460ca 100644
--- a/apps/portal/src/utils/fixtures-generator.js
+++ b/apps/portal/src/utils/fixtures-generator.js
@@ -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
};
}
diff --git a/apps/portal/src/utils/helpers.js b/apps/portal/src/utils/helpers.js
index ebcf2baa60..99e9ae6ca2 100644
--- a/apps/portal/src/utils/helpers.js
+++ b/apps/portal/src/utils/helpers.js
@@ -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;
});