Skip to content

Commit

Permalink
chore: use object to resolve payment method services
Browse files Browse the repository at this point in the history
  • Loading branch information
mkurapov committed Oct 4, 2023
1 parent 40f4045 commit bdfb97b
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 42 deletions.
31 changes: 1 addition & 30 deletions packages/backend/src/payment-method/handler/service.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
import {
PaymentMethod,
PaymentMethodHandlerService,
StartQuoteOptions
} from './service'
import { PaymentMethodHandlerService, StartQuoteOptions } from './service'
import { initIocContainer } from '../../'
import { createTestApp, TestContainer } from '../../tests/app'
import { Config } from '../../config/app'
Expand Down Expand Up @@ -64,30 +60,5 @@ describe('PaymentMethodHandlerService', (): void => {

expect(ilpPaymentServiceGetQuoteSpy).toHaveBeenCalledWith(options)
})

test('throws if invalid payment method', async (): Promise<void> => {
const asset = await createAsset(deps, {
code: 'USD',
scale: 2
})

const paymentPointer = await createPaymentPointer(deps, {
assetId: asset.id
})

const options: StartQuoteOptions = {
paymentPointer,
receiver: await createReceiver(deps, paymentPointer),
debitAmount: {
assetCode: 'USD',
assetScale: 2,
value: 100n
}
}

expect(() =>
paymentMethodHandlerService.getQuote('' as PaymentMethod, options)
).toThrow('Payment method not supported')
})
})
})
17 changes: 5 additions & 12 deletions packages/backend/src/payment-method/handler/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,12 @@ export async function createPaymentMethodHandlerService({
ilpPaymentService
}

return {
getQuote: (method, quoteOptions) =>
getPaymentMethodService(deps, method).getQuote(quoteOptions)
const paymentMethods: { [key in PaymentMethod]: PaymentMethodService } = {
ILP: deps.ilpPaymentService
}
}

function getPaymentMethodService(
deps: ServiceDependencies,
method: PaymentMethod
): PaymentMethodService {
if (method === 'ILP') {
return deps.ilpPaymentService
return {
getQuote: (method, quoteOptions) =>
paymentMethods[method].getQuote(quoteOptions)
}

throw new Error('Payment method not supported')
}

0 comments on commit bdfb97b

Please sign in to comment.