cryptomarket
Version:
The CryptoMarket for Node.js
67 lines (60 loc) • 2.21 kB
text/typescript
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();
}
});