0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/test/unit/server/services/members/utils.test.js
Rishabh Garg 90e7887007
Added default newsletter subscription for new members (#14431)
refs https://github.com/TryGhost/Team/issues/1469

Currently, all new members get auto subscribed to the default newsletter. This change adds same behavior with multiple newsletters by auto subscribing all available newsletters on site for new members(If flag is enabled). 
Note: In future, this will also take into consideration the `subscribe_on_signup` flag for a newsletter to filter which newsletters should a member be auto-subscribed.

- adds newsletters service for working with newsletter data
- bumps `@tryghost/members-api` package which handles default subscription
- adds new test fixture/data for newsletters
2022-04-07 08:30:00 +05:30

106 lines
4 KiB
JavaScript

const sinon = require('sinon');
const should = require('should');
const {formattedMemberResponse} = require('../../../../../core/server/services/members/utils');
const labs = require('../../../../../core/shared/labs');
describe('Members Service - utils', function () {
describe('formattedMemberResponse', function () {
let labsStub;
beforeEach(function () {
labsStub = sinon.stub(labs, 'isSet').returns(true);
});
afterEach(function () {
sinon.restore();
});
it('returns correct data', async function () {
const member1 = formattedMemberResponse({
uuid: 'uuid-1',
email: 'jamie+1@example.com',
name: 'Jamie Larson',
avatar_image: 'https://gravatar.com/avatar/7d8efd2c2a781111599a8cae293cf704?s=250&d=blank',
subscribed: true,
status: 'free',
extra: 'property'
});
should(member1).deepEqual({
uuid: 'uuid-1',
email: 'jamie+1@example.com',
name: 'Jamie Larson',
firstname: 'Jamie',
avatar_image: 'https://gravatar.com/avatar/7d8efd2c2a781111599a8cae293cf704?s=250&d=blank',
subscribed: true,
subscriptions: [],
paid: false
});
});
it('formats newsletter data', async function () {
const member1 = formattedMemberResponse({
uuid: 'uuid-1',
email: 'jamie+1@example.com',
name: 'Jamie Larson',
avatar_image: 'https://gravatar.com/avatar/7d8efd2c2a781111599a8cae293cf704?s=250&d=blank',
subscribed: true,
status: 'comped',
extra: 'property',
newsletters: [{
id: 'newsletter-1',
name: 'Daily brief',
description: 'One email daily',
sender_name: 'Jamie',
sender_email: 'jamie@example.com',
sort_order: 0
}]
});
should(member1).deepEqual({
uuid: 'uuid-1',
email: 'jamie+1@example.com',
name: 'Jamie Larson',
firstname: 'Jamie',
avatar_image: 'https://gravatar.com/avatar/7d8efd2c2a781111599a8cae293cf704?s=250&d=blank',
subscribed: true,
subscriptions: [],
paid: true,
newsletters: [{
id: 'newsletter-1',
name: 'Daily brief',
description: 'One email daily',
sort_order: 0
}]
});
});
it('removes newsletter data if flag is disabled', async function () {
labsStub.returns(false);
const member1 = formattedMemberResponse({
uuid: 'uuid-1',
email: 'jamie+1@example.com',
name: 'Jamie Larson',
avatar_image: 'https://gravatar.com/avatar/7d8efd2c2a781111599a8cae293cf704?s=250&d=blank',
subscribed: true,
status: 'paid',
extra: 'property',
newsletters: [{
id: 'newsletter-1',
name: 'Daily brief',
description: 'One email daily',
sender_name: 'Jamie',
sender_email: 'jamie@example.com',
sort_order: 0
}]
});
should(member1).deepEqual({
uuid: 'uuid-1',
email: 'jamie+1@example.com',
name: 'Jamie Larson',
firstname: 'Jamie',
avatar_image: 'https://gravatar.com/avatar/7d8efd2c2a781111599a8cae293cf704?s=250&d=blank',
subscribed: true,
subscriptions: [],
paid: true
});
});
});
});