@causalfoundry/js-sdk
Version:
Causal Foundry WEB SDK (JS/TS)
72 lines (53 loc) • 1.87 kB
text/typescript
/**
* @jest-environment jsdom
*/
const fs = require('fs')
const yaml = require('js-yaml');
var beautify = require("json-beautify");
import Ajv from 'ajv'
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 - API', () => {
let schemaValidate;
beforeAll(() => {
const schemaPath = `${__dirname}/../../../../scripts/standardized-schema.json`
const jsonSchema = fs.readFileSync(schemaPath, 'utf8')
const ajv = new Ajv()
schemaValidate = ajv.compile(JSON.parse(jsonSchema))
mockSender = {
add() { return false }
}
})
afterEach(() => {
// to remove the singleton instance
(CfCore as any).instance = null
})
it('Should deliver an "DeferredPayment" event', async () => {
const senderSpy = jest.spyOn(mockSender, 'add')
const bsCore = CfCore.createInstance(mockSender as any, mockImpressionManager as any, false, ContentBlock.Core, 'device-id')
const event = {
id: '134',
order_id: '1234',
action: PaymentAction.PaymentProcessed,
account_balance: -5,
payment_amount: 100,
currency: CurrencyCode.EUR,
is_successful: true
}
await Payments.logDeferredPaymentEvent(event)
const valid = schemaValidate(senderSpy.mock.calls[0][2])
if (!valid) {
console.log(beautify(senderSpy.mock.calls[0][2], null, 2, 80))
console.log(schemaValidate.errors)
}
expect(valid).toEqual(true)
})
})