/** * KushkiService unit test file */ import { expect } from "chai"; import { IDENTIFIERS } from "constant/Identifiers"; import * as faker from "faker"; import { CONTAINER } from "infrastructure/Container"; import * as jsf from "json-schema-faker"; import * as path from "path"; import "reflect-metadata"; import { IKushkiService } from "repository/IKushkiService"; import * as rp from "request-promise"; import { createSandbox, SinonSandbox, SinonSpy } from "sinon"; import { DynamoTransactionSns } from "types/dynamo_transaction_sns"; const SCHEMA_PATH: string = "src/schema"; const URL: string = "www.google.com"; let gPrivateMId: string; let gWebHookRequestBody: DynamoTransactionSns; let gService: IKushkiService; let gSandbox: SinonSandbox; describe("Kushki Service", () => { beforeEach(async () => { gPrivateMId = faker.random .number({ min: 100000000000, max: 999999999999999999 }) .toString(); gWebHookRequestBody = await jsf.resolve( { $ref: "dynamo_transaction_sns.json", }, null, path.resolve(SCHEMA_PATH) ); gSandbox = createSandbox(); gSandbox.stub(rp, "post").returns(Promise.resolve(true)); gService = CONTAINER.get(IDENTIFIERS.KushkiService); }); afterEach(() => { gSandbox.restore(); }); it("generate ticketNumber", () => { const ticket_number: string = gService.generateTicketNumber(); expect(ticket_number).to.be.a("string"); }); it("get real time", () => { const real_time: number = gService.getTime(); expect(real_time).to.be.a("number"); }); it("send webhook request", (done: Mocha.Done) => { const spy: SinonSpy = gSandbox.spy(); gService .buildWebHookRequest(gWebHookRequestBody.transaction, gPrivateMId, URL) .subscribe( spy, () => done("should not call subscribe catch"), () => { expect(spy.called).to.be.eq(true, "Subscribe next should be call"); done(); } ); }); });