UNPKG

cryptomarket

Version:

The CryptoMarket for Node.js

67 lines (60 loc) 2.21 kB
const keys = require("../../../../keys.json"); import { expect } from "chai"; import { WSTradingClient } from "../../lib"; import { SUBSCRIPTION_MODE } from "../../lib/constants"; import { SECOND, goodBalance, goodReport, timeout } from "../testHelpers"; describe("tradingClient subscriptions", function () { let wsclient: WSTradingClient; beforeEach(() => { wsclient = new WSTradingClient(keys.apiKey, keys.apiSecret, undefined, 10_000); }); afterEach(() => { wsclient.close(); }); describe("Subscribe to reports", function () { it("gets a feed of order reports", async function () { this.timeout(0); await wsclient.connect(); await wsclient.subscribeToReports((reports, type) => { const allGood = reports.map(goodReport).every(Boolean) expect(allGood).to.be.true }); await timeout(3 * SECOND); const clientOrderID = newRandomID(); await newOrderRequest(clientOrderID); await timeout(3 * SECOND); await wsclient.cancelSpotOrder(clientOrderID); const unsubscriptionSuccess = await wsclient.unsubscribeToReports(); expect(unsubscriptionSuccess).to.be.true; }); }); describe("subscribe to spot balances", function () { it("gets a feed of spot balances", async function () { this.timeout(0) await wsclient.connect() await wsclient.subscribeToSpotBalance(balances => { const allGood = balances.map(goodBalance).every(Boolean) expect(allGood).to.be.true }, SUBSCRIPTION_MODE.UPDATES) await timeout(3 * SECOND) const clientOrderID = newRandomID() await newOrderRequest(clientOrderID); await timeout(3 * SECOND); await wsclient.cancelSpotOrder(clientOrderID); const unsubscriptionSuccess = await wsclient.unsubscribeToSpotBalance(); expect(unsubscriptionSuccess).to.be.true; }) }) function newOrderRequest(clientOrderID: string) { return wsclient.createSpotOrder({ clientOrderId: clientOrderID, symbol: "EOSETH", side: "sell", quantity: "0.01", price: "1000", }); } function newRandomID(): string { return Math.floor(Date.now() / 1000).toString(); } });