diff --git a/ghost/core/test/e2e-frontend/members.test.js b/ghost/core/test/e2e-frontend/members.test.js index 7fa3fa7fd3..a35c322e21 100644 --- a/ghost/core/test/e2e-frontend/members.test.js +++ b/ghost/core/test/e2e-frontend/members.test.js @@ -187,6 +187,8 @@ describe('Front-end members behavior', function () { getJsonResponse.newsletters.should.have.length(1); // Can update newsletter subscription + const originalNewsletters = getJsonResponse.newsletters; + const res = await request.put(`/members/api/member/newsletters?uuid=${memberUUID}`) .send({ newsletters: [] @@ -198,6 +200,18 @@ describe('Front-end members behavior', function () { jsonResponse.should.have.properties(['email', 'uuid', 'status', 'name', 'newsletters']); jsonResponse.should.not.have.property('id'); jsonResponse.newsletters.should.have.length(0); + + const resRestored = await request.put(`/members/api/member/newsletters?uuid=${memberUUID}`) + .send({ + newsletters: originalNewsletters + }) + .expect(200); + + const restoreJsonResponse = resRestored.body; + should.exist(restoreJsonResponse); + restoreJsonResponse.should.have.properties(['email', 'uuid', 'status', 'name', 'newsletters']); + restoreJsonResponse.should.not.have.property('id'); + restoreJsonResponse.newsletters.should.have.length(1); }); it('should serve theme 404 on members endpoint', async function () { diff --git a/ghost/members-api/lib/repositories/member.js b/ghost/members-api/lib/repositories/member.js index 982d3b051f..b40726354f 100644 --- a/ghost/members-api/lib/repositories/member.js +++ b/ghost/members-api/lib/repositories/member.js @@ -405,6 +405,12 @@ module.exports = class MemberRepository { 'expertise' ]); + if (data.newsletters) { + data.newsletters = data.newsletters.map(newsletter => ({ + id: newsletter.id + })); + } + // Trim whitespaces from expertise if (memberData.expertise) { memberData.expertise = memberData.expertise.trim();