@causalfoundry/js-sdk
Version:
Causal Foundry WEB SDK (JS/TS)
119 lines (96 loc) • 3.36 kB
text/typescript
/**
* @jest-environment jsdom
*/
import CfCore from "../../../core/CfCore"
import Payments from ".."
import { CurrencyCode } from "../../../core/commonTypes";
import {
PaymentAction,
PaymentMethod,
} from "../typings";
import { PaymentsTypes } from "../typings";
import { ContentBlock } from "../../Navigation/typings";
let mockSender;
let mockImpressionManager = {}
describe('Payments', () => {
beforeAll(() => {
mockSender = {
add() { return false }
}
})
afterEach(() => {
// to remove the singleton instance
(CfCore as any).instance = null
})
it('Should deliver an "DeferredPayment" event with payment mechanism', async () => {
const senderSpy = jest.spyOn(mockSender, 'add')
CfCore.createInstance(mockSender as any, mockImpressionManager as any, false, ContentBlock.Core,'device-id', false)
const event = {
id: '134',
order_id: '1234',
action: PaymentAction.PaymentProcessed,
account_balance: -5,
payment_amount: 100,
currency: CurrencyCode.EUR,
type: PaymentMethod.Credit,
is_successful: true
}
await Payments.logDeferredPaymentEvent(event)
expect(senderSpy).toBeCalledWith(
expect.anything(),
expect.anything(),
expect.objectContaining(
{
type: PaymentsTypes.DeferredPayment,
props: { ...event }
}),
expect.anything())
})
it('Should deliver an "DeferredPayment" event with default payment mechanism', async () => {
const senderSpy = jest.spyOn(mockSender, 'add')
CfCore.createInstance(mockSender as any, mockImpressionManager as any, false, ContentBlock.Core,'device-id', false)
const event = {
id: '134',
order_id: '1234',
action: PaymentAction.PaymentProcessed,
account_balance: -5,
payment_amount: 100,
currency: CurrencyCode.EUR,
is_successful: true
}
const publicEvent = {
...event,
type: PaymentMethod.BankTransfer
}
await Payments.logDeferredPaymentEvent(event)
expect(senderSpy).toBeCalledWith(
expect.anything(),
expect.anything(),
expect.objectContaining(
{
type: PaymentsTypes.DeferredPayment,
props: { ...publicEvent }
}),
expect.anything())
})
it('Should deliver an "PaymentMethod"', async () => {
const senderSpy = jest.spyOn(mockSender, 'add')
CfCore.createInstance(mockSender as any, mockImpressionManager as any, false, ContentBlock.Core,'device-id', false)
const event = {
order_id: "123",
type: PaymentMethod.BankCard,
payment_amount: 123,
currency: CurrencyCode.AED
}
await Payments.logPaymentMethodEvent(event)
expect(senderSpy).toBeCalledWith(
expect.anything(),
expect.anything(),
expect.objectContaining(
{
type: PaymentsTypes.PaymentMethod,
props: { ...event }
}),
expect.anything())
})
})