hive-stream 2.0.3 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/.env.example +3 -2
  2. package/.travis.yml +11 -11
  3. package/LICENSE +21 -21
  4. package/README.md +238 -236
  5. package/dist/actions.d.ts +10 -9
  6. package/dist/actions.js +23 -15
  7. package/dist/actions.js.map +1 -1
  8. package/dist/adapters/base.adapter.d.ts +25 -21
  9. package/dist/adapters/base.adapter.js +49 -63
  10. package/dist/adapters/base.adapter.js.map +1 -1
  11. package/dist/adapters/mongodb.adapter.d.ts +37 -29
  12. package/dist/adapters/mongodb.adapter.js +158 -113
  13. package/dist/adapters/mongodb.adapter.js.map +1 -1
  14. package/dist/adapters/sqlite.adapter.d.ts +41 -23
  15. package/dist/adapters/sqlite.adapter.js +397 -121
  16. package/dist/adapters/sqlite.adapter.js.map +1 -1
  17. package/dist/api.d.ts +6 -0
  18. package/dist/api.js +56 -0
  19. package/dist/api.js.map +1 -0
  20. package/dist/config.d.ts +16 -14
  21. package/dist/config.js +18 -15
  22. package/dist/config.js.map +1 -1
  23. package/dist/contracts/coinflip.contract.d.ts +14 -0
  24. package/dist/contracts/coinflip.contract.js +95 -0
  25. package/dist/contracts/coinflip.contract.js.map +1 -0
  26. package/dist/contracts/dice.contract.d.ts +29 -29
  27. package/dist/contracts/dice.contract.js +155 -157
  28. package/dist/contracts/dice.contract.js.map +1 -1
  29. package/dist/contracts/lotto.contract.d.ts +20 -16
  30. package/dist/contracts/lotto.contract.js +246 -107
  31. package/dist/contracts/lotto.contract.js.map +1 -1
  32. package/dist/exchanges/bittrex.d.ts +6 -0
  33. package/dist/exchanges/bittrex.js +35 -0
  34. package/dist/exchanges/bittrex.js.map +1 -0
  35. package/dist/exchanges/exchange.d.ts +9 -0
  36. package/dist/exchanges/exchange.js +27 -0
  37. package/dist/exchanges/exchange.js.map +1 -0
  38. package/dist/hive-rates.d.ts +9 -0
  39. package/dist/hive-rates.js +76 -0
  40. package/dist/hive-rates.js.map +1 -0
  41. package/dist/index.d.ts +11 -10
  42. package/dist/index.js +32 -15
  43. package/dist/index.js.map +1 -1
  44. package/dist/streamer.d.ts +93 -70
  45. package/dist/streamer.js +545 -439
  46. package/dist/streamer.js.map +1 -1
  47. package/dist/test.d.ts +1 -1
  48. package/dist/test.js +25 -27
  49. package/dist/test.js.map +1 -1
  50. package/dist/types/hive-stream.d.ts +6 -6
  51. package/dist/types/hive-stream.js +2 -2
  52. package/dist/utils.d.ts +27 -14
  53. package/dist/utils.js +261 -85
  54. package/dist/utils.js.map +1 -1
  55. package/ecosystem.config.js +17 -17
  56. package/jest.config.js +8 -13
  57. package/package.json +48 -44
  58. package/test-contract-block.md +18 -18
  59. package/tests/adapters/sqlite.adapter.spec.ts +43 -0
  60. package/tests/contracts/coinflip.contract.spec.ts +132 -0
  61. package/tests/contracts/dice.contract.spec.ts +159 -156
  62. package/tests/contracts/entrants.json +728 -728
  63. package/tests/contracts/lotto.contract.spec.ts +323 -372
  64. package/tests/setup.ts +18 -20
  65. package/tests/streamer.spec.ts +151 -151
  66. package/tests/utils.spec.ts +94 -99
  67. package/tsconfig.build.json +22 -20
  68. package/tslint.json +20 -20
  69. package/wallaby.js +26 -0
  70. package/.env +0 -1
  71. package/dist/adapters/file.adapter.d.ts +0 -8
  72. package/dist/adapters/file.adapter.js +0 -70
  73. package/dist/adapters/file.adapter.js.map +0 -1
  74. package/dist/test/setup.d.ts +0 -0
  75. package/dist/test/setup.js +0 -9
  76. package/dist/test/setup.js.map +0 -1
  77. package/dist/test/streamer.spec.d.ts +0 -1
  78. package/dist/test/streamer.spec.js +0 -145
  79. package/dist/test/streamer.spec.js.map +0 -1
  80. package/dist/test/utils.spec.d.ts +0 -1
  81. package/dist/test/utils.spec.js +0 -11
  82. package/dist/test/utils.spec.js.map +0 -1
  83. package/dist/tests/contracts/dice.contract.spec.d.ts +0 -1
  84. package/dist/tests/contracts/dice.contract.spec.js +0 -130
  85. package/dist/tests/contracts/dice.contract.spec.js.map +0 -1
  86. package/dist/tests/contracts/entrants.json +0 -729
  87. package/dist/tests/contracts/lotto.contract.spec.d.ts +0 -1
  88. package/dist/tests/contracts/lotto.contract.spec.js +0 -300
  89. package/dist/tests/contracts/lotto.contract.spec.js.map +0 -1
  90. package/dist/tests/setup.d.ts +0 -1
  91. package/dist/tests/setup.js +0 -19
  92. package/dist/tests/setup.js.map +0 -1
  93. package/dist/tests/streamer.spec.d.ts +0 -1
  94. package/dist/tests/streamer.spec.js +0 -123
  95. package/dist/tests/streamer.spec.js.map +0 -1
  96. package/dist/tests/utils.spec.d.ts +0 -1
  97. package/dist/tests/utils.spec.js +0 -87
  98. package/dist/tests/utils.spec.js.map +0 -1
  99. package/hive-stream.json +0 -1
@@ -1 +0,0 @@
1
- export {};
@@ -1,300 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const mongodb_1 = require("mongodb");
16
- const utils_1 = require("@hivechain/dhive/lib/utils");
17
- const lotto_contract_1 = require("./../../src/contracts/lotto.contract");
18
- const streamer_1 = require("../../src/streamer");
19
- const entrants_json_1 = __importDefault(require("./entrants.json"));
20
- describe('Lotto Contract', () => {
21
- let sut;
22
- let contract;
23
- let connection;
24
- let db;
25
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
26
- try {
27
- const url = `mongodb://127.0.0.1/lotto-test`;
28
- connection = yield mongodb_1.MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true });
29
- db = yield connection.db();
30
- }
31
- catch (e) {
32
- throw e;
33
- }
34
- }));
35
- beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
36
- sut = new streamer_1.Streamer({ ACTIVE_KEY: '' });
37
- contract = new lotto_contract_1.LottoContract();
38
- sut['adapter']['db'] = db;
39
- jest.restoreAllMocks();
40
- yield sut.start();
41
- }));
42
- afterEach(() => __awaiter(void 0, void 0, void 0, function* () {
43
- yield sut.stop();
44
- yield db.collection('lottery').deleteMany({});
45
- }));
46
- afterAll(() => {
47
- connection.close();
48
- });
49
- test('Registers the lotto contract', () => {
50
- sut.registerContract('testlotto', contract);
51
- const findContract = sut['contracts'].find(c => c.name === 'testlotto');
52
- expect(findContract).not.toBeUndefined();
53
- });
54
- test('User enters the lotto, existing draw found', () => __awaiter(void 0, void 0, void 0, function* () {
55
- try {
56
- sut.registerContract('testlotto', contract);
57
- contract['_instance'] = sut;
58
- contract['adapter']['db'] = db;
59
- const lottery = db.collection('lottery');
60
- yield lottery.insertOne({ startDate: new Date(), type: 'hourly', status: 'active', entries: [] });
61
- jest.spyOn(contract, 'buy');
62
- jest.spyOn(contract, 'getBalance').mockResolvedValue(2000);
63
- jest.spyOn(sut, 'getTransaction').mockResolvedValue({ test: 123 });
64
- jest.spyOn(sut, 'verifyTransfer').mockResolvedValue(true);
65
- jest.spyOn(sut, 'transferHiveTokens').mockResolvedValue(true);
66
- jest.spyOn(sut, 'transferHiveTokensMultiple').mockResolvedValue(true);
67
- const memo = JSON.stringify({
68
- hivePayload: {
69
- id: 'hivestream',
70
- name: 'testlotto',
71
- action: 'buy',
72
- payload: {
73
- type: 'hourly'
74
- }
75
- }
76
- });
77
- sut.processOperation(['transfer', { from: 'testuser', amount: '10.000 HIVE', memo }], 778782, 'dfjfsdfsdfsd34hfkj88787', 'fkjsdkfj', 'fhkjsdhfkjsdf', '2019-06-23');
78
- yield utils_1.sleep(100);
79
- expect(contract.buy).toBeCalled();
80
- }
81
- catch (e) {
82
- throw e;
83
- }
84
- }));
85
- test('User enters the lotto, but they have hit the entry limit', () => __awaiter(void 0, void 0, void 0, function* () {
86
- try {
87
- sut.registerContract('testlotto', contract);
88
- contract['_instance'] = sut;
89
- contract['adapter']['db'] = db;
90
- const lottery = db.collection('lottery');
91
- const entries = [];
92
- for (const entrant of entrants_json_1.default) {
93
- entries.push({
94
- account: entrant.from,
95
- date: new Date()
96
- });
97
- }
98
- yield lottery.insertOne({ startDate: new Date(), type: 'hourly', status: 'active', entries });
99
- jest.spyOn(contract, 'buy');
100
- jest.spyOn(contract, 'getBalance').mockResolvedValue(2000);
101
- jest.spyOn(sut, 'getTransaction').mockResolvedValue({ test: 123 });
102
- jest.spyOn(sut, 'verifyTransfer').mockResolvedValue(true);
103
- jest.spyOn(sut, 'transferHiveTokens').mockResolvedValue(true);
104
- jest.spyOn(sut, 'transferHiveTokensMultiple').mockResolvedValue(true);
105
- const memo = JSON.stringify({
106
- hivePayload: {
107
- id: 'hivestream',
108
- name: 'testlotto',
109
- action: 'buy',
110
- payload: {
111
- type: 'hourly'
112
- }
113
- }
114
- });
115
- sut.processOperation(['transfer', { from: 'beggars', amount: '10.000 HIVE', memo }], 778782, 'dfjfsdfsdfsd34hfkj88787', 'fkjsdkfj', 'fhkjsdhfkjsdf', '2019-06-23');
116
- yield utils_1.sleep(100);
117
- expect(sut.transferHiveTokens).toBeCalledWith('beggars', 'beggars', '10.000', 'HIVE', '[Refund] You have exceeded the allow number of entries');
118
- }
119
- catch (e) {
120
- throw e;
121
- }
122
- }));
123
- test('Draw the hourly lottery', () => __awaiter(void 0, void 0, void 0, function* () {
124
- try {
125
- sut.registerContract('testlotto', contract);
126
- contract['_instance'] = sut;
127
- contract['adapter']['db'] = db;
128
- const lottery = db.collection('lottery');
129
- const entries = [];
130
- for (const entrant of entrants_json_1.default) {
131
- entries.push({
132
- account: entrant.from,
133
- date: new Date()
134
- });
135
- }
136
- yield lottery.insertOne({ startDate: new Date(), type: 'hourly', status: 'active', entries });
137
- jest.spyOn(contract, 'buy');
138
- jest.spyOn(contract, 'getBalance').mockResolvedValue(2000);
139
- jest.spyOn(sut, 'getTransaction').mockResolvedValue({ test: 123 });
140
- jest.spyOn(sut, 'verifyTransfer').mockResolvedValue(true);
141
- jest.spyOn(sut, 'transferHiveTokens').mockResolvedValue(true);
142
- jest.spyOn(sut, 'transferHiveTokensMultiple').mockResolvedValue(true);
143
- const drawn = yield contract.drawHourlyLottery();
144
- expect(drawn).toHaveLength(3);
145
- expect(drawn.includes(undefined)).toBeFalsy();
146
- expect(sut.transferHiveTokensMultiple).toBeCalledTimes(1);
147
- expect(sut.transferHiveTokensMultiple).toBeCalledWith('beggars', expect.any(Array), '164.667', 'HIVE', 'Congratulations you won the hourly lottery. You won 164.667 HIVE');
148
- }
149
- catch (e) {
150
- throw e;
151
- }
152
- }));
153
- test('Draw the hourly lottery, but not enough entrants, so we refund', () => __awaiter(void 0, void 0, void 0, function* () {
154
- try {
155
- sut.registerContract('testlotto', contract);
156
- contract['_instance'] = sut;
157
- contract['adapter']['db'] = db;
158
- const lottery = db.collection('lottery');
159
- const entries = [];
160
- const reducedEntries = entrants_json_1.default.slice(0, 2);
161
- for (const entrant of reducedEntries) {
162
- entries.push({
163
- account: entrant.from,
164
- date: new Date()
165
- });
166
- }
167
- yield lottery.insertOne({ startDate: new Date(), type: 'hourly', status: 'active', entries });
168
- jest.spyOn(contract, 'buy');
169
- jest.spyOn(contract, 'getBalance').mockResolvedValue(2000);
170
- jest.spyOn(sut, 'getTransaction').mockResolvedValue({ test: 123 });
171
- jest.spyOn(sut, 'verifyTransfer').mockResolvedValue(true);
172
- jest.spyOn(sut, 'transferHiveTokens').mockResolvedValue(true);
173
- jest.spyOn(sut, 'transferHiveTokensMultiple').mockResolvedValue(true);
174
- const drawn = yield contract.drawHourlyLottery();
175
- expect(sut.transferHiveTokensMultiple).toBeCalledTimes(1);
176
- }
177
- catch (e) {
178
- throw e;
179
- }
180
- }));
181
- test('Draw the hourly lottery, balance cannot afford to pay out winnings', () => __awaiter(void 0, void 0, void 0, function* () {
182
- try {
183
- sut.registerContract('testlotto', contract);
184
- contract['_instance'] = sut;
185
- contract['adapter']['db'] = db;
186
- const lottery = db.collection('lottery');
187
- const entries = [];
188
- for (const entrant of entrants_json_1.default) {
189
- entries.push({
190
- account: entrant.from,
191
- date: new Date()
192
- });
193
- }
194
- yield lottery.insertOne({ startDate: new Date(), type: 'hourly', status: 'active', entries });
195
- jest.spyOn(contract, 'buy');
196
- jest.spyOn(contract, 'getBalance').mockResolvedValue(10);
197
- jest.spyOn(sut, 'getTransaction').mockResolvedValue({ test: 123 });
198
- jest.spyOn(sut, 'verifyTransfer').mockResolvedValue(true);
199
- jest.spyOn(sut, 'transferHiveTokens').mockResolvedValue(true);
200
- jest.spyOn(sut, 'transferHiveTokensMultiple').mockResolvedValue(true);
201
- expect(contract.drawHourlyLottery()).rejects.toEqual(new Error('Balance is less than amount to pay out'));
202
- }
203
- catch (e) {
204
- throw e;
205
- }
206
- }));
207
- test('Draw the daily lottery', () => __awaiter(void 0, void 0, void 0, function* () {
208
- try {
209
- sut.registerContract('testlotto', contract);
210
- contract['_instance'] = sut;
211
- contract['adapter']['db'] = db;
212
- const lottery = db.collection('lottery');
213
- const entries = [];
214
- const entrants = [...entrants_json_1.default, ...entrants_json_1.default];
215
- for (const entrant of entrants) {
216
- entries.push({
217
- account: entrant.from,
218
- date: new Date()
219
- });
220
- }
221
- yield lottery.insertOne({ startDate: new Date(), type: 'daily', status: 'active', entries });
222
- jest.spyOn(contract, 'buy');
223
- jest.spyOn(contract, 'getBalance').mockResolvedValue(2000);
224
- jest.spyOn(sut, 'getTransaction').mockResolvedValue({ test: 123 });
225
- jest.spyOn(sut, 'verifyTransfer').mockResolvedValue(true);
226
- jest.spyOn(sut, 'transferHiveTokens').mockResolvedValue(true);
227
- jest.spyOn(sut, 'transferHiveTokensMultiple').mockResolvedValue(true);
228
- const drawn = yield contract.drawDailyLottery();
229
- expect(drawn).toHaveLength(10);
230
- expect(drawn.includes(undefined)).toBeFalsy();
231
- expect(sut.transferHiveTokensMultiple).toBeCalledWith('beggars', expect.any(Array), '98.800', 'HIVE', 'Congratulations you won the daily lottery. You won 98.800 HIVE');
232
- }
233
- catch (e) {
234
- throw e;
235
- }
236
- }));
237
- test('User attempts to enter lotto with invalid currency, refund them', () => __awaiter(void 0, void 0, void 0, function* () {
238
- try {
239
- sut.registerContract('testlotto', contract);
240
- contract['_instance'] = sut;
241
- contract['adapter']['db'] = db;
242
- const lottery = db.collection('lottery');
243
- yield lottery.insertOne({ startDate: new Date(), type: 'hourly', status: 'active', entries: [] });
244
- jest.spyOn(contract, 'buy');
245
- jest.spyOn(contract, 'getBalance').mockResolvedValue(2000);
246
- jest.spyOn(sut, 'getTransaction').mockResolvedValue({ test: 123 });
247
- jest.spyOn(sut, 'verifyTransfer').mockResolvedValue(true);
248
- jest.spyOn(sut, 'transferHiveTokens').mockResolvedValue(true);
249
- jest.spyOn(sut, 'transferHiveTokensMultiple').mockResolvedValue(true);
250
- const memo = JSON.stringify({
251
- hivePayload: {
252
- id: 'hivestream',
253
- name: 'testlotto',
254
- action: 'buy',
255
- payload: {
256
- type: 'hourly'
257
- }
258
- }
259
- });
260
- sut.processOperation(['transfer', { from: 'testuser', amount: '10.000 HBD', memo }], 778782, 'dfjfsdfsdfsd34hfkj88787', 'fkjsdkfj', 'fhkjsdhfkjsdf', '2019-06-23');
261
- yield utils_1.sleep(100);
262
- expect(sut.transferHiveTokens).toBeCalledWith('beggars', 'testuser', '10.000', 'HBD', '[Refund] You sent an invalid currency.');
263
- }
264
- catch (e) {
265
- throw e;
266
- }
267
- }));
268
- test('User sent too much, refund them the diference', () => __awaiter(void 0, void 0, void 0, function* () {
269
- try {
270
- sut.registerContract('testlotto', contract);
271
- contract['_instance'] = sut;
272
- contract['adapter']['db'] = db;
273
- const lottery = db.collection('lottery');
274
- yield lottery.insertOne({ startDate: new Date(), type: 'hourly', status: 'active', entries: [] });
275
- jest.spyOn(contract, 'buy');
276
- jest.spyOn(contract, 'getBalance').mockResolvedValue(2000);
277
- jest.spyOn(sut, 'getTransaction').mockResolvedValue({ test: 123 });
278
- jest.spyOn(sut, 'verifyTransfer').mockResolvedValue(true);
279
- jest.spyOn(sut, 'transferHiveTokens').mockResolvedValue(true);
280
- jest.spyOn(sut, 'transferHiveTokensMultiple').mockResolvedValue(true);
281
- const memo = JSON.stringify({
282
- hivePayload: {
283
- id: 'hivestream',
284
- name: 'testlotto',
285
- action: 'buy',
286
- payload: {
287
- type: 'hourly'
288
- }
289
- }
290
- });
291
- sut.processOperation(['transfer', { from: 'testuser', amount: '20.000 HIVE', memo }], 778782, 'dfjfsdfsdfsd34hfkj88787', 'fkjsdkfj', 'fhkjsdhfkjsdf', '2019-06-23');
292
- yield utils_1.sleep(100);
293
- expect(sut.transferHiveTokens).toBeCalledWith('beggars', 'testuser', '10.000', 'HIVE', '[Refund] A ticket costs 10 HIVE. You sent 20.000 HIVE. You were refunded 10.000 HIVE.');
294
- }
295
- catch (e) {
296
- throw e;
297
- }
298
- }));
299
- });
300
- //# sourceMappingURL=lotto.contract.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lotto.contract.spec.js","sourceRoot":"","sources":["../../../tests/contracts/lotto.contract.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // (global as any).console = {
4
- // log: jest.fn(), // console.log are ignored in tests
5
- // // Keep native behaviour for other methods, use those to print out things in your own tests, not `console.log`
6
- // error: console.error,
7
- // warn: console.warn,
8
- // info: console.info,
9
- // debug: console.debug,
10
- // };
11
- jasmine.DEFAULT_TIMEOUT_INTERVAL = 600000;
12
- const customGlobal = global;
13
- customGlobal.fetch = require('jest-fetch-mock');
14
- customGlobal.fetchMock = customGlobal.fetch;
15
- ;
16
- process.on('unhandledRejection', (error) => {
17
- throw error; // Or whatever you like...
18
- });
19
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../tests/setup.ts"],"names":[],"mappings":";;AAEA,8BAA8B;AAC9B,0DAA0D;AAE1D,qHAAqH;AACrH,4BAA4B;AAC5B,0BAA0B;AAC1B,0BAA0B;AAC1B,4BAA4B;AAC5B,KAAK;AAEL,OAAO,CAAC,wBAAwB,GAAG,MAAM,CAAC;AAE1C,MAAM,YAAY,GAAwB,MAA6B,CAAC;AACxE,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChD,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AAAA,CAAC;AAE7C,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;IACzC,MAAM,KAAK,CAAC,CAAC,0BAA0B;AACzC,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,123 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const actions_1 = require("../src/actions");
13
- const streamer_1 = require("../src/streamer");
14
- describe('Streamer', () => {
15
- let sut;
16
- beforeEach(() => {
17
- sut = new streamer_1.Streamer({
18
- JSON_ID: 'testing'
19
- });
20
- });
21
- afterEach(() => {
22
- sut.stop();
23
- });
24
- describe('Adapters', () => {
25
- test('Registers adapter and calls the create lifecycle method', () => {
26
- const adapter = {
27
- create: jest.fn().mockResolvedValue(true),
28
- destroy: jest.fn()
29
- };
30
- sut.registerAdapter(adapter);
31
- expect(adapter.create).toBeCalled();
32
- });
33
- });
34
- describe('Actions', () => {
35
- test('Registers a new action', () => __awaiter(void 0, void 0, void 0, function* () {
36
- const adapter = {
37
- create: jest.fn().mockResolvedValue(true),
38
- destroy: jest.fn(),
39
- loadActions: jest.fn().mockResolvedValue([])
40
- };
41
- sut.registerAdapter(adapter);
42
- const action = new actions_1.TimeAction('1m', 'testoneminute', 'testcontract', 'testmethod');
43
- yield sut.registerAction(action);
44
- const foundAction = sut['actions'].find(a => a.id === 'testoneminute');
45
- expect(foundAction).not.toBeUndefined();
46
- }));
47
- test('Does not allow duplicate actions of the same id', () => __awaiter(void 0, void 0, void 0, function* () {
48
- const adapter = {
49
- create: jest.fn().mockResolvedValue(true),
50
- destroy: jest.fn(),
51
- loadActions: jest.fn().mockResolvedValue([])
52
- };
53
- sut.registerAdapter(adapter);
54
- const action = new actions_1.TimeAction('1m', 'testoneminute', 'testcontract', 'testmethod');
55
- const action2 = new actions_1.TimeAction('1m', 'testoneminute', 'testcontract', 'testmethod');
56
- yield sut.registerAction(action);
57
- yield sut.registerAction(action2);
58
- expect(sut['actions'].length).toStrictEqual(1);
59
- }));
60
- test('Registers actions loaded from adapter loadActions call', () => __awaiter(void 0, void 0, void 0, function* () {
61
- const adapter = {
62
- create: jest.fn().mockResolvedValue(true),
63
- destroy: jest.fn(),
64
- loadActions: jest.fn().mockResolvedValue([new actions_1.TimeAction('1m', 'testoneminute', 'testcontract', 'testmethod')])
65
- };
66
- sut.registerAdapter(adapter);
67
- const action = new actions_1.TimeAction('1h', 'testonehour', 'testcontract', 'testmethod');
68
- yield sut.registerAction(action);
69
- const foundAction = sut['actions'].find(a => a.id === 'testoneminute');
70
- expect(foundAction).not.toBeUndefined();
71
- }));
72
- });
73
- describe('Contracts', () => {
74
- test('Should register a new contract', () => {
75
- const contract = {
76
- myMethod: jest.fn()
77
- };
78
- sut.registerContract('testcontract', contract);
79
- expect(contract['_instance']).toBeInstanceOf(streamer_1.Streamer);
80
- expect(sut['contracts'].length).toStrictEqual(1);
81
- });
82
- test('Should register a new contract and call its create method', () => {
83
- const contract = {
84
- create: jest.fn(),
85
- myMethod: jest.fn()
86
- };
87
- sut.registerContract('testcontract', contract);
88
- expect(contract.create).toBeCalled();
89
- expect(contract['_instance']).toBeInstanceOf(streamer_1.Streamer);
90
- expect(sut['contracts'].length).toStrictEqual(1);
91
- });
92
- test('Should unregister a registered contract', () => {
93
- const contract = {
94
- myMethod: jest.fn()
95
- };
96
- sut.registerContract('testcontract', contract);
97
- sut.unregisterContract('testcontract');
98
- expect(sut['contracts'].length).toStrictEqual(0);
99
- });
100
- test('Should unregister a registered contract and call its destroy method', () => {
101
- const contract = {
102
- destroy: jest.fn(),
103
- myMethod: jest.fn()
104
- };
105
- sut.registerContract('testcontract', contract);
106
- sut.unregisterContract('testcontract');
107
- expect(contract.destroy).toBeCalled();
108
- expect(sut['contracts'].length).toStrictEqual(0);
109
- });
110
- });
111
- test('Start method should resume from previous block number', () => __awaiter(void 0, void 0, void 0, function* () {
112
- const adapter = {
113
- loadState: jest.fn().mockResolvedValue({ lastBlockNumber: 509992 })
114
- };
115
- sut.registerAdapter(adapter);
116
- jest.spyOn(sut, 'getBlock').mockImplementation(() => true);
117
- jest.spyOn(sut, 'getLatestBlock').mockImplementation(() => true);
118
- yield sut.start();
119
- expect(sut['lastBlockNumber']).toStrictEqual(509992);
120
- sut.stop();
121
- }));
122
- });
123
- //# sourceMappingURL=streamer.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamer.spec.js","sourceRoot":"","sources":["../../tests/streamer.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,87 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const utils_1 = require("./../src/utils");
13
- describe('Utils', () => {
14
- beforeEach(() => {
15
- fetchMock.resetMocks();
16
- });
17
- describe('Round Precision', () => {
18
- test('Properly rounds precision of number to 3 places', () => {
19
- const value = 99.299223;
20
- expect(utils_1.Utils.roundPrecision(value, 3)).toStrictEqual(99.299);
21
- });
22
- test('Properly rounds precision of number up and to 3 places', () => {
23
- const value = 99.2966;
24
- expect(utils_1.Utils.roundPrecision(value, 3)).toStrictEqual(99.297);
25
- });
26
- test('Invalid numeric values passed', () => {
27
- expect(utils_1.Utils.roundPrecision('dasd', 3)).toBeNaN();
28
- });
29
- });
30
- test('Should generate two deterministic numbers', () => {
31
- // Should generate a deterministic random number
32
- expect(utils_1.Utils.randomNumber('dasdasdas', '2312fsdfsdfsdf', 'kfjlksdjflksdjf999')).toStrictEqual(26);
33
- expect(utils_1.Utils.randomNumber('fdfsdfsdfsdfsf', '2312fsdfsdfsdf', 'kfjlksdjflksdjf999')).toStrictEqual(43);
34
- });
35
- test('Should shuffle array in a non-deterministic way', () => {
36
- const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
37
- const arrayCloned = [...array];
38
- utils_1.Utils.shuffle(array);
39
- expect(array).not.toMatchObject(arrayCloned);
40
- });
41
- describe('Generate String', () => {
42
- test('Generates a memo 6 characters in length', () => {
43
- expect(utils_1.Utils.randomString(6)).toHaveLength(6);
44
- });
45
- test('Generates a memo using default 12 character length', () => {
46
- expect(utils_1.Utils.randomString()).toHaveLength(12);
47
- });
48
- });
49
- describe('Random Range', () => {
50
- test('Should generate a random number between 0 and 10', () => {
51
- expect(utils_1.Utils.randomRange(0, 10)).toBeLessThanOrEqual(10);
52
- });
53
- test('Should generate the number 10', () => {
54
- expect(utils_1.Utils.randomRange(10, 10)).toStrictEqual(10);
55
- });
56
- test('Only pass min and not max', () => {
57
- expect(utils_1.Utils.randomRange(0)).toBeLessThanOrEqual(2000);
58
- });
59
- test('Pass non numeric values to random range', () => {
60
- expect(utils_1.Utils.randomRange('dd', 'asjj')).toBeNaN();
61
- });
62
- });
63
- describe('Convert Hive Amount', () => {
64
- test('Converts amount', () => __awaiter(void 0, void 0, void 0, function* () {
65
- const amount = 25;
66
- const fiatSymbol = 'USD';
67
- const hiveSymbol = 'HIVE';
68
- fetch
69
- .once(JSON.stringify({ 'success': true, 'message': '', 'result': { 'Bid': 6905.98900000, 'Ask': 6925.65900000, 'Last': 6925.66500000 } }))
70
- .once(JSON.stringify({ 'success': true, 'message': '', 'result': { 'Bid': 0.00003083, 'Ask': 0.00003169, 'Last': 0.00003192 } }))
71
- .once(JSON.stringify({ 'success': true, 'message': '', 'result': { 'Bid': 0.00010800, 'Ask': 0.00010900, 'Last': 0.00010800 } }))
72
- .once(JSON.stringify({ 'rates': { 'CAD': 1.4383752203, 'HKD': 7.7558193453, 'ISK': 140.4989335064, 'PHP': 51.4003524066, 'DKK': 6.9281276083, 'HUF': 326.7458035797, 'CZK': 25.6283038116, 'GBP': 0.862190485, 'RON': 4.4960586108, 'SEK': 10.2675507744, 'IDR': 16574.9976815358, 'INR': 76.1620142817, 'BRL': 5.0683483261, 'RUB': 79.8293610313, 'HRK': 7.053695632, 'JPY': 110.4609106928, 'THB': 32.8646944264, 'CHF': 0.982101456, 'EUR': 0.9273856997, 'MYR': 4.4449596587, 'BGN': 1.8137809515, 'TRY': 6.5859222851, 'CNY': 7.0838356673, 'NOK': 11.3667810442, 'NZD': 1.7563757767, 'ZAR': 17.6333116943, 'USD': 1.0, 'MXN': 24.6805156264, 'SGD': 1.4601687842, 'AUD': 1.7236390615, 'ILS': 3.6698506909, 'KRW': 1256.7003616804, 'PLN': 4.2711675786 }, 'base': 'USD', 'date': '2020-03-23' }));
73
- const value = yield utils_1.Utils.convertHiveAmount(amount, fiatSymbol, hiveSymbol);
74
- expect(fetch).toBeCalledWith(`https://api.bittrex.com/api/v1.1/public/getticker?market=USD-BTC`);
75
- expect(fetch).toBeCalledWith(`https://api.bittrex.com/api/v1.1/public/getticker?market=BTC-HIVE`);
76
- expect(fetch).toBeCalledWith(`https://api.bittrex.com/api/v1.1/public/getticker?market=BTC-HBD`);
77
- expect(fetch).toBeCalledWith(`https://api.exchangeratesapi.io/latest?base=USD`);
78
- expect(value).toStrictEqual(113.088);
79
- }));
80
- });
81
- describe('Get transfer URL', () => {
82
- test('Gets a transfer URL string', () => {
83
- expect(utils_1.Utils.getTransferUrl('beggars', 'TEST123', '10.000 HIVE', 'http://localhost:5001')).toStrictEqual(`https://hivesigner.com/sign/transfer?to=beggars&memo=TEST123&amount=10.000 HIVE&redirect_uri=http://localhost:5001`);
84
- });
85
- });
86
- });
87
- //# sourceMappingURL=utils.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../tests/utils.spec.ts"],"names":[],"mappings":"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"}
package/hive-stream.json DELETED
@@ -1 +0,0 @@
1
- {"lastBlockNumber":42374138,"actions":[]}