diff --git a/ghost/members-api/lib/repositories/member.js b/ghost/members-api/lib/repositories/member.js index c8b502ccc8..8e1eccedaa 100644 --- a/ghost/members-api/lib/repositories/member.js +++ b/ghost/members-api/lib/repositories/member.js @@ -98,6 +98,24 @@ module.exports = class MemberRepository { return subscription.plan && subscription.plan.nickname && subscription.plan.nickname.toLowerCase() === 'complimentary'; } + _resolveContextSource(context) { + let source; + + if (context.import || context.importer) { + source = 'import'; + } else if (context.internal) { + source = 'system'; + } else if (context.user) { + source = 'admin'; + } else if (context.api_key) { + source = 'api'; + } else { + source = 'member'; + } + + return source; + } + getMRR({interval, amount, status = null, canceled = false, discount = null}) { if (status === 'trialing') { return 0; @@ -250,19 +268,7 @@ module.exports = class MemberRepository { } const context = options && options.context || {}; - let source; - - if (context.import || context.importer) { - source = 'import'; - } else if (context.internal) { - source = 'system'; - } else if (context.user) { - source = 'admin'; - } else if (context.api_key) { - source = 'api'; - } else { - source = 'member'; - } + const source = this._resolveContextSource(context); const eventData = _.pick(data, ['created_at']); diff --git a/ghost/members-api/test/unit/lib/repositories/member.test.js b/ghost/members-api/test/unit/lib/repositories/member.test.js index abe3edf47e..c95175cfa3 100644 --- a/ghost/members-api/test/unit/lib/repositories/member.test.js +++ b/ghost/members-api/test/unit/lib/repositories/member.test.js @@ -1,3 +1,4 @@ +const assert = require('assert'); const MemberRepository = require('../../../../lib/repositories/member'); describe('MemberRepository', function () { @@ -7,4 +8,45 @@ describe('MemberRepository', function () { repo.isComplimentarySubscription({}); }); }); + + describe('#resolveContextSource', function (){ + it('Maps context to source', function (){ + const repo = new MemberRepository({}); + + let source = repo._resolveContextSource({ + import: true + }); + assert.equal(source, 'import'); + + source = repo._resolveContextSource({ + importer: true + }); + assert.equal(source, 'import'); + + source = repo._resolveContextSource({ + user: true + }); + assert.equal(source, 'admin'); + + source = repo._resolveContextSource({ + user: true, + api_key: true + }); + assert.equal(source, 'admin'); + + source = repo._resolveContextSource({ + api_key: true + }); + assert.equal(source, 'api'); + + source = repo._resolveContextSource({ + }); + assert.equal(source, 'member'); + + source = repo._resolveContextSource({ + generic_context: true + }); + assert.equal(source, 'member'); + }); + }); });