Skip to content
This repository has been archived by the owner on Apr 8, 2024. It is now read-only.

Commit

Permalink
fix(subscription-info): return subscription and not parent object
Browse files Browse the repository at this point in the history
  • Loading branch information
stfsy committed Jan 3, 2023
1 parent 4764578 commit f184ad7
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 2 deletions.
5 changes: 3 additions & 2 deletions lib/subscription-info.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ class SubscriptionInfo {
*/

constructor(storagePath, { api = {}, hookStorage = {} }) {
this._storage = resource({ documentPath: storagePath, resourceName: 'subscriptions' })
this._resourceName = 'subscription'
this._storage = resource({ documentPath: storagePath, resourceName: this._resourceName })
this._api = api
this._hookStorage = hookStorage
}
Expand Down Expand Up @@ -133,7 +134,7 @@ class SubscriptionInfo {
if (Array.isArray(subscriptionOrIds)) {
try {
const sub = await this._storage.get(subscriptionOrIds)
return sub
return sub[this._resourceName]
} catch (e) {
if (e.message == 'Not Found') {
throw new Error(SubscriptionInfo.ERROR_SUBSCRIPTION_NOT_FOUND)
Expand Down
75 changes: 75 additions & 0 deletions test/spec/subscription-info.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,29 @@ describe('SubscriptionInfo', () => {
const status = await subscriptionInfo.getAllSubscriptionsStatus(sub)
expect(status[createPayload.subscription_plan_id]).to.be.false
})
it('also accepts clientId array', async () => {
const subscriptionId = uuid()
const createPayload = Object.assign({}, subscriptionCreated,
{
subscription_id: subscriptionId,
passthrough: JSON.stringify(customData(ids)),
event_time: new Date().toISOString()
}
)
await subscriptions.addSubscriptionCreatedStatus(createPayload)

const payload = Object.assign({}, subscriptionCancelled,
{
subscription_id: subscriptionId,
passthrough: JSON.stringify(customData(ids)),
cancellation_effective_date: new Date(new Date().getTime()).toISOString()
}
)
await subscriptions.addSubscriptionCancelledStatus(payload)

const status = await subscriptionInfo.getAllSubscriptionsStatus(ids)
expect(status[createPayload.subscription_plan_id]).to.be.false
})
it('allows 10s clock drift', async () => {
const subscriptionId = uuid()
const createPayload = Object.assign({}, subscriptionCreated,
Expand Down Expand Up @@ -424,6 +447,31 @@ describe('SubscriptionInfo', () => {
const dates = await subscriptionInfo.getStartAndEndDates(sub)
expect(dates).to.have.keys(createPayload.subscription_plan_id, createPayload2.subscription_plan_id)
})
it('also accepts clientId array as parameter', async () => {
const subscriptionId = uuid()
const startTimeString = new Date().toISOString()
const createPayload = Object.assign({}, subscriptionCreated,
{
subscription_id: subscriptionId,
passthrough: JSON.stringify(customData(ids)),
event_time: startTimeString
}
)
await subscriptions.addSubscriptionCreatedStatus(createPayload)
const createPayload2 = Object.assign({}, subscriptionCreated,
{
subscription_id: subscriptionId,
passthrough: JSON.stringify(customData(ids)),
event_time: startTimeString,
subscription_plan_id: '4'
}
)
await subscriptions.addSubscriptionCreatedStatus(createPayload2)

const { subscription: sub } = await storage.get(ids)
const dates = await subscriptionInfo.getStartAndEndDates(ids)
expect(dates).to.have.keys(createPayload.subscription_plan_id, createPayload2.subscription_plan_id)
})
it('returns only start date if theres no end date', async () => {
const subscriptionId = uuid()
const startTimeString = new Date().toISOString()
Expand Down Expand Up @@ -543,6 +591,21 @@ describe('SubscriptionInfo', () => {

expect(sorted).to.be.true
})
it('accepts also clientId array as parameter', async () => {
const trail = await subscriptionInfo.getPaymentsTrail(ids)

const sorted = Object.values(trail).every((payments) => {
return payments.every((payment, index, array) => {
if (index === 0) {
return true
} else {
return new Date(payment.event_time).getTime() <= new Date(array[index - 1].event_time).getTime()
}
})
})

expect(sorted).to.be.true
})
it('returns a sorted listed of payments per subscription plan id 8', async () => {
const { subscription: sub } = await storage.get(ids)
const trail = await subscriptionInfo.getPaymentsTrail(sub)
Expand Down Expand Up @@ -678,5 +741,17 @@ describe('SubscriptionInfo', () => {
expect(subscriptionTrail[0].type).to.equal('subscription_cancelled')
expect(subscriptionTrail[0].description).to.equal('deleted')
})
it('also accepts clientIds array as parameter', async () => {
const trail = await subscriptionInfo.getStatusTrail(ids)
const subscriptionTrail = trail[subscriptionCreated.subscription_plan_id]
expect(subscriptionTrail).to.have.length(3)
// expect(subscriptionTrail).to.have.length(3)
expect(subscriptionTrail[2].type).to.equal('subscription_created')
expect(subscriptionTrail[2].description).to.equal('active')
expect(subscriptionTrail[1].type).to.equal('subscription_updated')
expect(subscriptionTrail[1].description).to.equal('active')
expect(subscriptionTrail[0].type).to.equal('subscription_cancelled')
expect(subscriptionTrail[0].description).to.equal('deleted')
})
})
})

0 comments on commit f184ad7

Please sign in to comment.