diff options
author | Fabio Berger <me@fabioberger.com> | 2018-08-23 06:46:45 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-08-23 06:46:45 +0800 |
commit | 61255309d2f7e2724d29f58f1c1493a1a87a182c (patch) | |
tree | 33eabfcf58f782fa2ccb070e05a6cd711af2ab29 /packages/connect/test/orders_channel_message_parsers_test.ts | |
parent | 27d329ff2559c643b54489d0796bb2c2fcda264f (diff) | |
parent | cb19623a3aaf22a386bd4a7d6477048a604be9a2 (diff) | |
download | dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.gz dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.bz2 dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.lz dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.xz dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.zst dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.zip |
merge development
Diffstat (limited to 'packages/connect/test/orders_channel_message_parsers_test.ts')
-rw-r--r-- | packages/connect/test/orders_channel_message_parsers_test.ts | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/packages/connect/test/orders_channel_message_parsers_test.ts b/packages/connect/test/orders_channel_message_parsers_test.ts new file mode 100644 index 000000000..4d4a2d23f --- /dev/null +++ b/packages/connect/test/orders_channel_message_parsers_test.ts @@ -0,0 +1,59 @@ +import * as chai from 'chai'; +import * as dirtyChai from 'dirty-chai'; +import 'mocha'; + +import { ordersChannelMessageParser } from '../src/utils/orders_channel_message_parser'; + +import { orderResponse } from './fixtures/standard_relayer_api/order/0xabc67323774bdbd24d94f977fa9ac94a50f016026fd13f42990861238897721f'; +import { unknownOrdersChannelMessage } from './fixtures/standard_relayer_api/unknown_orders_channel_message'; +import { + malformedUpdateOrdersChannelMessage, + updateOrdersChannelMessage, +} from './fixtures/standard_relayer_api/update_orders_channel_message'; + +chai.config.includeStack = true; +chai.use(dirtyChai); +const expect = chai.expect; + +describe('ordersChannelMessageParser', () => { + describe('#parser', () => { + it('parses update messages', () => { + const updateMessage = ordersChannelMessageParser.parse(updateOrdersChannelMessage); + expect(updateMessage.type).to.be.equal('update'); + expect(updateMessage.payload).to.be.deep.equal([orderResponse]); + }); + it('returns unknown message for messages with unsupported types', () => { + const unknownMessage = ordersChannelMessageParser.parse(unknownOrdersChannelMessage); + expect(unknownMessage.type).to.be.equal('unknown'); + expect(unknownMessage.payload).to.be.undefined(); + }); + it('throws when message does not include a type', () => { + const typelessMessage = `{ + "channel": "orders", + "requestId": "4d8efcee-adde-4475-9601-f0b30962ca2b", + "payload": [] + }`; + const badCall = () => ordersChannelMessageParser.parse(typelessMessage); + expect(badCall).throws(`Message is missing a type parameter: ${typelessMessage}`); + }); + it('throws when type is not a string', () => { + const messageWithBadType = `{ + "type": 1, + "channel": "orders", + "requestId": "4d8efcee-adde-4475-9601-f0b30962ca2b", + "payload": [] + }`; + const badCall = () => ordersChannelMessageParser.parse(messageWithBadType); + expect(badCall).throws('Expected type to be of type string, encountered: 1'); + }); + it('throws when update message has malformed payload', () => { + const badCall = () => ordersChannelMessageParser.parse(malformedUpdateOrdersChannelMessage); + expect(badCall).throws(/^Expected message to conform to schema/); + }); + it('throws when input message is not valid JSON', () => { + const nonJsonString = 'h93b{sdfs9fsd f'; + const badCall = () => ordersChannelMessageParser.parse(nonJsonString); + expect(badCall).throws('Unexpected token h in JSON at position 0'); + }); + }); +}); |