Skip to content

Commit 8ec646e

Browse files
committed
Update remaining tests
1 parent 31505e1 commit 8ec646e

4 files changed

Lines changed: 93 additions & 36 deletions

File tree

ghost/core/test/integration/jobs/process-outbox.test.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ describe('Process Outbox Job', function () {
2828
afterEach(async function () {
2929
sinon.restore();
3030
await db.knex('outbox').del();
31-
await db.knex('automated_emails').where('slug', MEMBER_WELCOME_EMAIL_SLUGS.free).del();
31+
await db.knex('welcome_email_automations').where('slug', MEMBER_WELCOME_EMAIL_SLUGS.free).del();
3232
try {
3333
await jobService.removeJob(JOB_NAME);
3434
} catch (err) {
@@ -64,16 +64,29 @@ describe('Process Outbox Job', function () {
6464
}
6565
});
6666

67-
await db.knex('automated_emails').insert({
68-
id: ObjectId().toHexString(),
69-
email_design_setting_id: defaultEmailDesignSettingId,
67+
const emailId = ObjectId().toHexString();
68+
const automationId = ObjectId().toHexString();
69+
70+
await db.knex('welcome_email_automations').insert({
71+
id: automationId,
7072
status: 'active',
7173
name: 'Free Member Welcome Email',
7274
slug: MEMBER_WELCOME_EMAIL_SLUGS.free,
75+
created_at: new Date()
76+
});
77+
78+
await db.knex('welcome_email_automated_emails').insert({
79+
id: emailId,
80+
welcome_email_automation_id: automationId,
81+
email_design_setting_id: defaultEmailDesignSettingId,
7382
subject: 'Welcome to {site_title}',
7483
lexical,
7584
created_at: new Date()
7685
});
86+
87+
await db.knex('welcome_email_automations')
88+
.where('id', automationId)
89+
.update({first_welcome_email_automated_email_id: emailId});
7790
});
7891

7992
it('processes pending outbox entries and deletes them after success', async function () {

ghost/core/test/unit/server/services/members/members-api/repositories/event-repository.test.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -315,10 +315,15 @@ describe('EventRepository', function () {
315315
}
316316
if (relation === 'automatedEmail') {
317317
return {
318-
toJSON: () => ({
319-
id: 'ae123',
320-
slug: 'member-welcome-email-free'
321-
})
318+
id: 'ae123',
319+
related: (rel) => {
320+
if (rel === 'welcomeEmailAutomation') {
321+
return {
322+
id: 'auto123',
323+
get: key => (key === 'slug' ? 'member-welcome-email-free' : undefined)
324+
};
325+
}
326+
}
322327
};
323328
}
324329
},
@@ -351,7 +356,7 @@ describe('EventRepository', function () {
351356
});
352357

353358
sinon.assert.calledOnceWithMatch(fake, {
354-
withRelated: ['member', 'automatedEmail'],
359+
withRelated: ['member', 'automatedEmail.welcomeEmailAutomation'],
355360
filter: 'custom:true',
356361
order: 'created_at desc, id desc'
357362
});
@@ -365,7 +370,7 @@ describe('EventRepository', function () {
365370
});
366371

367372
sinon.assert.calledOnceWithMatch(fake, {
368-
withRelated: ['member', 'automatedEmail'],
373+
withRelated: ['member', 'automatedEmail.welcomeEmailAutomation'],
369374
filter: 'custom:true',
370375
order: 'created_at desc, id desc'
371376
});
@@ -380,7 +385,7 @@ describe('EventRepository', function () {
380385
});
381386

382387
sinon.assert.calledOnceWithMatch(fake, {
383-
withRelated: ['member', 'automatedEmail'],
388+
withRelated: ['member', 'automatedEmail.welcomeEmailAutomation'],
384389
filter: 'custom:true',
385390
order: 'created_at desc, id desc'
386391
});

ghost/core/test/unit/server/services/members/members-api/repositories/member-repository.test.js

Lines changed: 56 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,7 +1454,7 @@ describe('MemberRepository', function () {
14541454
let MemberStatusEvent;
14551455
let MemberSubscribeEvent;
14561456
let newslettersService;
1457-
let AutomatedEmail;
1457+
let WelcomeEmailAutomation;
14581458
const oldNodeEnv = process.env.NODE_ENV;
14591459

14601460
beforeEach(function () {
@@ -1508,11 +1508,20 @@ describe('MemberRepository', function () {
15081508
getAll: sinon.stub().resolves([])
15091509
};
15101510

1511-
AutomatedEmail = {
1511+
WelcomeEmailAutomation = {
15121512
findOne: sinon.stub().resolves({
15131513
get: sinon.stub().callsFake((key) => {
1514-
const data = {lexical: '{"root":{}}', status: 'active'};
1514+
const data = {status: 'active'};
15151515
return data[key];
1516+
}),
1517+
related: sinon.stub().callsFake((relation) => {
1518+
assert.equal(relation, 'welcomeEmailAutomatedEmail');
1519+
return {
1520+
get: sinon.stub().callsFake((key) => {
1521+
const data = {lexical: '{"root":{}}'};
1522+
return data[key];
1523+
})
1524+
};
15161525
})
15171526
})
15181527
};
@@ -1529,7 +1538,7 @@ describe('MemberRepository', function () {
15291538
MemberStatusEvent,
15301539
MemberSubscribeEventModel: MemberSubscribeEvent,
15311540
newslettersService,
1532-
AutomatedEmail,
1541+
WelcomeEmailAutomation,
15331542
OfferRedemption: mockOfferRedemption
15341543
});
15351544

@@ -1553,7 +1562,7 @@ describe('MemberRepository', function () {
15531562
MemberStatusEvent,
15541563
MemberSubscribeEventModel: MemberSubscribeEvent,
15551564
newslettersService,
1556-
AutomatedEmail,
1565+
WelcomeEmailAutomation,
15571566
OfferRedemption: mockOfferRedemption
15581567
});
15591568

@@ -1577,7 +1586,7 @@ describe('MemberRepository', function () {
15771586
MemberStatusEvent,
15781587
MemberSubscribeEventModel: MemberSubscribeEvent,
15791588
newslettersService,
1580-
AutomatedEmail,
1589+
WelcomeEmailAutomation,
15811590
OfferRedemption: mockOfferRedemption
15821591
});
15831592

@@ -1595,7 +1604,7 @@ describe('MemberRepository', function () {
15951604
MemberStatusEvent,
15961605
MemberSubscribeEventModel: MemberSubscribeEvent,
15971606
newslettersService,
1598-
AutomatedEmail,
1607+
WelcomeEmailAutomation,
15991608
OfferRedemption: mockOfferRedemption
16001609
});
16011610

@@ -1606,10 +1615,19 @@ describe('MemberRepository', function () {
16061615
});
16071616

16081617
it('does NOT create outbox entry when welcome email is inactive', async function () {
1609-
AutomatedEmail.findOne.resolves({
1618+
WelcomeEmailAutomation.findOne.resolves({
16101619
get: sinon.stub().callsFake((key) => {
1611-
const data = {lexical: '{"root":{}}', status: 'inactive'};
1620+
const data = {status: 'inactive'};
16121621
return data[key];
1622+
}),
1623+
related: sinon.stub().callsFake((relation) => {
1624+
assert.equal(relation, 'welcomeEmailAutomatedEmail');
1625+
return {
1626+
get: sinon.stub().callsFake((key) => {
1627+
const data = {lexical: '{"root":{}}'};
1628+
return data[key];
1629+
})
1630+
};
16131631
})
16141632
});
16151633

@@ -1619,7 +1637,7 @@ describe('MemberRepository', function () {
16191637
MemberStatusEvent,
16201638
MemberSubscribeEventModel: MemberSubscribeEvent,
16211639
newslettersService,
1622-
AutomatedEmail,
1640+
WelcomeEmailAutomation,
16231641
OfferRedemption: mockOfferRedemption
16241642
});
16251643

@@ -1638,7 +1656,7 @@ describe('MemberRepository', function () {
16381656
MemberStatusEvent,
16391657
MemberSubscribeEventModel: MemberSubscribeEvent,
16401658
newslettersService,
1641-
AutomatedEmail,
1659+
WelcomeEmailAutomation,
16421660
StripeCustomer,
16431661
OfferRedemption: mockOfferRedemption
16441662
});
@@ -1667,7 +1685,7 @@ describe('MemberRepository', function () {
16671685

16681686
// The free welcome email should NOT be sent when stripeCustomer is present
16691687
sinon.assert.notCalled(Outbox.add);
1670-
sinon.assert.notCalled(AutomatedEmail.findOne);
1688+
sinon.assert.notCalled(WelcomeEmailAutomation.findOne);
16711689
sinon.assert.notCalled(Member.transaction);
16721690
});
16731691
});
@@ -1681,7 +1699,7 @@ describe('MemberRepository', function () {
16811699
let MemberStatusEvent;
16821700
let stripeAPIService;
16831701
let productRepository;
1684-
let AutomatedEmail;
1702+
let WelcomeEmailAutomation;
16851703
let subscriptionData;
16861704

16871705
beforeEach(function () {
@@ -1803,11 +1821,20 @@ describe('MemberRepository', function () {
18031821
update: sinon.stub().resolves({})
18041822
};
18051823

1806-
AutomatedEmail = {
1824+
WelcomeEmailAutomation = {
18071825
findOne: sinon.stub().resolves({
18081826
get: sinon.stub().callsFake((key) => {
1809-
const data = {lexical: '{"root":{}}', status: 'active'};
1827+
const data = {status: 'active'};
18101828
return data[key];
1829+
}),
1830+
related: sinon.stub().callsFake((relation) => {
1831+
assert.equal(relation, 'welcomeEmailAutomatedEmail');
1832+
return {
1833+
get: sinon.stub().callsFake((key) => {
1834+
const data = {lexical: '{"root":{}}'};
1835+
return data[key];
1836+
})
1837+
};
18111838
})
18121839
})
18131840
};
@@ -1836,7 +1863,7 @@ describe('MemberRepository', function () {
18361863
MemberStatusEvent,
18371864
stripeAPIService,
18381865
productRepository,
1839-
AutomatedEmail,
1866+
WelcomeEmailAutomation,
18401867
OfferRedemption: mockOfferRedemption
18411868
});
18421869

@@ -1881,7 +1908,7 @@ describe('MemberRepository', function () {
18811908
MemberStatusEvent,
18821909
stripeAPIService,
18831910
productRepository,
1884-
AutomatedEmail,
1911+
WelcomeEmailAutomation,
18851912
OfferRedemption: mockOfferRedemption
18861913
});
18871914

@@ -1918,10 +1945,19 @@ describe('MemberRepository', function () {
19181945
})
19191946
});
19201947

1921-
AutomatedEmail.findOne.resolves({
1948+
WelcomeEmailAutomation.findOne.resolves({
19221949
get: sinon.stub().callsFake((key) => {
1923-
const data = {lexical: '{"root":{}}', status: 'inactive'};
1950+
const data = {status: 'inactive'};
19241951
return data[key];
1952+
}),
1953+
related: sinon.stub().callsFake((relation) => {
1954+
assert.equal(relation, 'welcomeEmailAutomatedEmail');
1955+
return {
1956+
get: sinon.stub().callsFake((key) => {
1957+
const data = {lexical: '{"root":{}}'};
1958+
return data[key];
1959+
})
1960+
};
19251961
})
19261962
});
19271963

@@ -1934,7 +1970,7 @@ describe('MemberRepository', function () {
19341970
MemberStatusEvent,
19351971
stripeAPIService,
19361972
productRepository,
1937-
AutomatedEmail,
1973+
WelcomeEmailAutomation,
19381974
OfferRedemption: mockOfferRedemption
19391975
});
19401976

ghost/core/test/unit/server/services/outbox/handlers/member-created.test.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const {captureLoggerOutput, findByEvent} = require('../../../../../utils/logging
66
describe('member-created handler', function () {
77
let handler;
88
let memberWelcomeEmailServiceStub;
9-
let AutomatedEmailStub;
9+
let WelcomeEmailAutomationStub;
1010
let AutomatedEmailRecipientStub;
1111
let logCapture;
1212

@@ -19,8 +19,11 @@ describe('member-created handler', function () {
1919
}
2020
};
2121

22-
AutomatedEmailStub = {
23-
findOne: sinon.stub().resolves({id: 'ae123'})
22+
WelcomeEmailAutomationStub = {
23+
findOne: sinon.stub().resolves({
24+
id: 'automation123',
25+
get: sinon.stub().withArgs('first_welcome_email_automated_email_id').returns('ae123')
26+
})
2427
};
2528

2629
AutomatedEmailRecipientStub = {
@@ -30,7 +33,7 @@ describe('member-created handler', function () {
3033
logCapture = captureLoggerOutput();
3134

3235
handler.__set__('memberWelcomeEmailService', memberWelcomeEmailServiceStub);
33-
handler.__set__('AutomatedEmail', AutomatedEmailStub);
36+
handler.__set__('WelcomeEmailAutomation', WelcomeEmailAutomationStub);
3437
handler.__set__('AutomatedEmailRecipient', AutomatedEmailRecipientStub);
3538
});
3639

@@ -95,7 +98,7 @@ describe('member-created handler', function () {
9598
});
9699

97100
it('logs warning when no automated email found for slug', async function () {
98-
AutomatedEmailStub.findOne.resolves(null);
101+
WelcomeEmailAutomationStub.findOne.resolves(null);
99102

100103
await handler.handle({
101104
payload: {

0 commit comments

Comments
 (0)