Skip to content

Commit

Permalink
feat(subscription-info): add find subscription id method
Browse files Browse the repository at this point in the history
  • Loading branch information
stfsy committed Jan 8, 2023
1 parent 726cd7e commit 7ff3dbc
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
21 changes: 21 additions & 0 deletions lib/subscription-info.js
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,27 @@ class SubscriptionInfo {
_isSubscriptionStatusCurrentlyActive(status) {
return ACTIVE_SUBSCRIPTION_DESCRIPTIONS.includes(status.description)
}

/**
* Reads the target subscription from the database, or uses the given subscription object
* to find the subscription id.
*
* @param {Object|Array<String>} subscriptionOrIds subscription object or array of ids if subscription should be read from database
* @param {String} planId the target plan
* @returns {String}
*/
async findSubscriptionIdByPlanId(subscriptionOrIds, planId) {
const subscription = await this._getOrReadSubscription(subscriptionOrIds)
const { status } = subscription

const subscriptionStatus = status.find(({ subscription_plan_id }) => subscription_plan_id == planId)

if (subscriptionStatus) {
return subscriptionStatus.subscription_id
} else {
return null
}
}
}

module.exports = SubscriptionInfo
23 changes: 23 additions & 0 deletions test/spec/subscription-info.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -754,4 +754,27 @@ describe('SubscriptionInfo', () => {
expect(subscriptionTrail[0].description).to.equal('deleted')
})
})

describe('.findSubscriptionIdByPlanId', () => {
let subscriptionId
beforeEach(async () => {
subscriptionId = uuid()
const createPayload = Object.assign({}, subscriptionCreated,
{
subscription_id: subscriptionId,
passthrough: JSON.stringify(customData(ids)),
event_time: new Date().toISOString()
}
)
await subscriptions.addSubscriptionCreatedStatus(createPayload)
})
it('returns the subscription id', async () => {
const id = await subscriptionInfo.findSubscriptionIdByPlanId(ids, '8')
expect(id).to.equal(subscriptionId)
})
it('returns null if no subscription id was found for plan', async () => {
const id = await subscriptionInfo.findSubscriptionIdByPlanId(ids, '18')
expect(id).to.be.null
})
})
})

0 comments on commit 7ff3dbc

Please sign in to comment.