aboutsummaryrefslogtreecommitdiffstats
path: root/packages/connect/test/ws_orders_channel_test.ts
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-08-24 01:52:09 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-08-24 01:52:09 +0800
commit7ad1a18a4aaa3da23fc013c55babea286a505f9d (patch)
treeae0e8267091b45dcdf661ec8cd76ce7699a82364 /packages/connect/test/ws_orders_channel_test.ts
parent572ad4615a3a0fa5649549cbd65eb912ea7a0e92 (diff)
parentb013cf2e145825a9e250c61bc77825384b2af69e (diff)
downloaddexon-sol-tools-7ad1a18a4aaa3da23fc013c55babea286a505f9d.tar
dexon-sol-tools-7ad1a18a4aaa3da23fc013c55babea286a505f9d.tar.gz
dexon-sol-tools-7ad1a18a4aaa3da23fc013c55babea286a505f9d.tar.bz2
dexon-sol-tools-7ad1a18a4aaa3da23fc013c55babea286a505f9d.tar.lz
dexon-sol-tools-7ad1a18a4aaa3da23fc013c55babea286a505f9d.tar.xz
dexon-sol-tools-7ad1a18a4aaa3da23fc013c55babea286a505f9d.tar.zst
dexon-sol-tools-7ad1a18a4aaa3da23fc013c55babea286a505f9d.zip
Merge branch 'development' into feature/forwarder-helper/init
* development: (31 commits) Update CI config to check development instead of v2-prototype branch fix: Make non-interactive npm login for publish tests more robust Run prettier Remove comment in updates json-schemas doc Add documentation for json-schemas Fix typo Remove artifacts Update variable names, make release candidate Update more names in docs Improve documentation Pin sra-report to 0xproject/connect v1.0.4 Run prettier lint everything Update websocket for SRA v2 Remove default query parameters Add networkId request param option Rename websocket files and types Use uuid as string for requestId Update changelogs Add fee recipients test ...
Diffstat (limited to 'packages/connect/test/ws_orders_channel_test.ts')
-rw-r--r--packages/connect/test/ws_orders_channel_test.ts49
1 files changed, 49 insertions, 0 deletions
diff --git a/packages/connect/test/ws_orders_channel_test.ts b/packages/connect/test/ws_orders_channel_test.ts
new file mode 100644
index 000000000..df30bc41d
--- /dev/null
+++ b/packages/connect/test/ws_orders_channel_test.ts
@@ -0,0 +1,49 @@
+import * as chai from 'chai';
+import * as dirtyChai from 'dirty-chai';
+import * as _ from 'lodash';
+import 'mocha';
+import * as Sinon from 'sinon';
+import * as WebSocket from 'websocket';
+
+import { WebSocketOrdersChannel } from '../src/ws_orders_channel';
+
+chai.config.includeStack = true;
+chai.use(dirtyChai);
+const expect = chai.expect;
+const emptyOrdersChannelHandler = {
+ onUpdate: _.noop.bind(_),
+ onError: _.noop.bind(_),
+ onClose: _.noop.bind(_),
+};
+
+describe('WebSocketOrdersChannel', () => {
+ const websocketUrl = 'ws://localhost:8080';
+ const openClient = new WebSocket.w3cwebsocket(websocketUrl);
+ Sinon.stub(openClient, 'readyState').get(() => WebSocket.w3cwebsocket.OPEN);
+ Sinon.stub(openClient, 'send').callsFake(_.noop.bind(_));
+ const openOrdersChannel = new WebSocketOrdersChannel(openClient, emptyOrdersChannelHandler);
+ const subscriptionOpts = {
+ baseAssetData: '0x323b5d4c32345ced77393b3530b1eed0f346429d',
+ quoteAssetData: '0xef7fff64389b814a946f3e92105513705ca6b990',
+ limit: 100,
+ };
+ describe('#subscribe', () => {
+ it('throws when subscriptionOpts does not conform to schema', () => {
+ const badSubscribeCall = openOrdersChannel.subscribe.bind(openOrdersChannel, {
+ makerAssetData: 5,
+ });
+ expect(badSubscribeCall).throws();
+ });
+ it('does not throw when inputs are of correct types', () => {
+ const goodSubscribeCall = openOrdersChannel.subscribe.bind(openOrdersChannel, subscriptionOpts);
+ expect(goodSubscribeCall).to.not.throw();
+ });
+ it('throws when client is closed', () => {
+ const closedClient = new WebSocket.w3cwebsocket(websocketUrl);
+ Sinon.stub(closedClient, 'readyState').get(() => WebSocket.w3cwebsocket.CLOSED);
+ const closedOrdersChannel = new WebSocketOrdersChannel(closedClient, emptyOrdersChannelHandler);
+ const badSubscribeCall = closedOrdersChannel.subscribe.bind(closedOrdersChannel, subscriptionOpts);
+ expect(badSubscribeCall).throws('WebSocket connection is closed');
+ });
+ });
+});