@acala-network/chopsticks-testing 0.8.0-4 → 0.8.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.
package/lib/check.js CHANGED
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkHrmp = exports.checkUmp = exports.checkSystemEvents = exports.checkEvents = exports.check = exports.Checker = void 0;
4
- const vitest_1 = require("vitest");
1
+ import { expect } from 'vitest';
5
2
  const processCodecOrArray = (codec, fn) => Array.isArray(codec) ? codec.map(fn) : fn(codec);
6
3
  const toHuman = (codec) => processCodecOrArray(codec, (c) => c?.toHuman?.() ?? c);
7
4
  const toHex = (codec) => processCodecOrArray(codec, (c) => c?.toHex?.() ?? c);
8
5
  const toJson = (codec) => processCodecOrArray(codec, (c) => c?.toJSON?.() ?? c);
9
- class Checker {
6
+ export class Checker {
10
7
  #value;
11
8
  #pipeline = [];
12
9
  #format = 'json';
@@ -148,11 +145,10 @@ class Checker {
148
145
  return value;
149
146
  }
150
147
  async toMatchSnapshot(msg) {
151
- return (0, vitest_1.expect)(await this.value()).toMatchSnapshot(msg ?? this.#message);
148
+ return expect(await this.value()).toMatchSnapshot(msg ?? this.#message);
152
149
  }
153
150
  }
154
- exports.Checker = Checker;
155
- const check = (value, msg) => {
151
+ export const check = (value, msg) => {
156
152
  if (value instanceof Checker) {
157
153
  if (msg) {
158
154
  return value.message(msg);
@@ -161,19 +157,14 @@ const check = (value, msg) => {
161
157
  }
162
158
  return new Checker(value, msg);
163
159
  };
164
- exports.check = check;
165
- const checkEvents = ({ events }, ...filters) => (0, exports.check)(events, 'events')
160
+ export const checkEvents = ({ events }, ...filters) => check(events, 'events')
166
161
  .filterEvents(...filters)
167
162
  .redact();
168
- exports.checkEvents = checkEvents;
169
- const checkSystemEvents = ({ api }, ...filters) => (0, exports.check)(api.query.system.events(), 'system events')
163
+ export const checkSystemEvents = ({ api }, ...filters) => check(api.query.system.events(), 'system events')
170
164
  .filterEvents(...filters)
171
165
  .redact();
172
- exports.checkSystemEvents = checkSystemEvents;
173
- const checkUmp = ({ api }) => (0, exports.check)(api.query.parachainSystem.upwardMessages(), 'ump').map((value) => api.createType('Vec<XcmVersionedXcm>', value).toJSON());
174
- exports.checkUmp = checkUmp;
175
- const checkHrmp = ({ api }) => (0, exports.check)(api.query.parachainSystem.hrmpOutboundMessages(), 'hrmp').map((value) => value.map(({ recipient, data }) => ({
166
+ export const checkUmp = ({ api }) => check(api.query.parachainSystem.upwardMessages(), 'ump').map((value) => api.createType('Vec<XcmVersionedXcm>', value).toJSON());
167
+ export const checkHrmp = ({ api }) => check(api.query.parachainSystem.hrmpOutboundMessages(), 'hrmp').map((value) => value.map(({ recipient, data }) => ({
176
168
  data: api.createType('(XcmpMessageFormat, XcmVersionedXcm)', data),
177
169
  recipient,
178
170
  })));
179
- exports.checkHrmp = checkHrmp;
package/lib/index.js CHANGED
@@ -1,26 +1,9 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.testingPairs = exports.sendTransaction = exports.defer = exports.redact = exports.matchSystemEvents = exports.matchEvents = exports.expectHex = exports.expectJson = exports.setupNetworks = exports.setupContextWithConfig = exports.setupContext = exports.createConfig = void 0;
18
- const api_1 = require("@polkadot/api");
19
- const chopsticks_1 = require("@acala-network/chopsticks");
20
- const keyring_1 = require("@polkadot/keyring");
21
- const vitest_1 = require("vitest");
22
- __exportStar(require("./check"), exports);
23
- const createConfig = ({ endpoint, blockNumber, blockHash, wasmOverride, db, timeout, port, maxMemoryBlockCount, }) => {
1
+ import { ApiPromise, WsProvider } from '@polkadot/api';
2
+ import { BuildBlockMode, connectParachains, connectVertical, fetchConfig, setupWithServer, } from '@acala-network/chopsticks';
3
+ import { Keyring, createTestKeyring } from '@polkadot/keyring';
4
+ import { expect } from 'vitest';
5
+ export * from './check';
6
+ export const createConfig = ({ endpoint, blockNumber, blockHash, wasmOverride, db, timeout, port, maxMemoryBlockCount, }) => {
24
7
  // random port if not specified
25
8
  port = port ?? Math.floor(Math.random() * 10000) + 10000;
26
9
  const config = {
@@ -28,7 +11,7 @@ const createConfig = ({ endpoint, blockNumber, blockHash, wasmOverride, db, time
28
11
  port,
29
12
  block: blockNumber || blockHash,
30
13
  mockSignatureHost: true,
31
- 'build-block-mode': chopsticks_1.BuildBlockMode.Manual,
14
+ 'build-block-mode': BuildBlockMode.Manual,
32
15
  'max-memory-block-count': maxMemoryBlockCount ?? 100,
33
16
  db,
34
17
  'wasm-override': wasmOverride,
@@ -36,16 +19,14 @@ const createConfig = ({ endpoint, blockNumber, blockHash, wasmOverride, db, time
36
19
  };
37
20
  return config;
38
21
  };
39
- exports.createConfig = createConfig;
40
- const setupContext = async (option) => {
41
- return (0, exports.setupContextWithConfig)((0, exports.createConfig)(option));
22
+ export const setupContext = async (option) => {
23
+ return setupContextWithConfig(createConfig(option));
42
24
  };
43
- exports.setupContext = setupContext;
44
- const setupContextWithConfig = async ({ timeout, ...config }) => {
45
- const { chain, listenPort, close } = await (0, chopsticks_1.setupWithServer)(config);
25
+ export const setupContextWithConfig = async ({ timeout, ...config }) => {
26
+ const { chain, listenPort, close } = await setupWithServer(config);
46
27
  const url = `ws://localhost:${listenPort}`;
47
- const ws = new api_1.WsProvider(url, undefined, undefined, timeout);
48
- const api = await api_1.ApiPromise.create({
28
+ const ws = new WsProvider(url, undefined, undefined, timeout);
29
+ const api = await ApiPromise.create({
49
30
  provider: ws,
50
31
  signedExtensions: {
51
32
  SetEvmOrigin: {
@@ -79,32 +60,31 @@ const setupContextWithConfig = async ({ timeout, ...config }) => {
79
60
  await close();
80
61
  },
81
62
  async pause() {
82
- await ws.send('dev_setBlockBuildMode', [chopsticks_1.BuildBlockMode.Instant]);
63
+ await ws.send('dev_setBlockBuildMode', [BuildBlockMode.Instant]);
83
64
  // log a bit later to ensure the message is visible
84
65
  setTimeout(() => console.log(`Test paused. Polkadot.js apps URL: https://polkadot.js.org/apps/?rpc=${url}`), 100);
85
66
  return new Promise((_resolve) => { }); // wait forever
86
67
  },
87
68
  };
88
69
  };
89
- exports.setupContextWithConfig = setupContextWithConfig;
90
- const setupNetworks = async (networkOptions) => {
70
+ export const setupNetworks = async (networkOptions) => {
91
71
  const ret = {};
92
72
  let wasmOverriden = false;
93
73
  for (const [name, options] of Object.entries(networkOptions)) {
94
- const config = typeof options === 'string' ? await (0, chopsticks_1.fetchConfig)(options) : options ?? (await (0, chopsticks_1.fetchConfig)(name));
95
- ret[name] = await (0, exports.setupContextWithConfig)(config);
74
+ const config = typeof options === 'string' ? await fetchConfig(options) : options ?? (await fetchConfig(name));
75
+ ret[name] = await setupContextWithConfig(config);
96
76
  wasmOverriden ||= config['wasm-override'] != null;
97
77
  }
98
78
  const relaychainName = Object.keys(ret).filter((x) => ['polkadot', 'kusama'].includes(x.toLocaleLowerCase()))[0];
99
79
  const { [relaychainName]: relaychain, ...parachains } = ret;
100
80
  if (relaychain) {
101
81
  for (const parachain of Object.values(parachains)) {
102
- await (0, chopsticks_1.connectVertical)(relaychain.chain, parachain.chain);
82
+ await connectVertical(relaychain.chain, parachain.chain);
103
83
  }
104
84
  }
105
85
  const parachainList = Object.values(parachains).map((i) => i.chain);
106
86
  if (parachainList.length > 0) {
107
- await (0, chopsticks_1.connectParachains)(parachainList);
87
+ await connectParachains(parachainList);
108
88
  }
109
89
  if (wasmOverriden) {
110
90
  // trigger runtime upgrade if needed (due to wasm override)
@@ -118,19 +98,16 @@ const setupNetworks = async (networkOptions) => {
118
98
  }
119
99
  return ret;
120
100
  };
121
- exports.setupNetworks = setupNetworks;
122
101
  const processCodecOrArray = (codec, fn) => Array.isArray(codec) ? codec.map(fn) : fn(codec);
123
102
  const toHuman = (codec) => processCodecOrArray(codec, (c) => c?.toHuman?.() ?? c);
124
103
  const toJson = (codec) => processCodecOrArray(codec, (c) => c?.toJSON?.() ?? c);
125
104
  const toHex = (codec) => processCodecOrArray(codec, (c) => c?.toHex?.() ?? c);
126
- const expectJson = (codec) => {
127
- return (0, vitest_1.expect)(toJson(codec));
105
+ export const expectJson = (codec) => {
106
+ return expect(toJson(codec));
128
107
  };
129
- exports.expectJson = expectJson;
130
- const expectHex = (codec) => {
131
- return (0, vitest_1.expect)(toHex(codec));
108
+ export const expectHex = (codec) => {
109
+ return expect(toHex(codec));
132
110
  };
133
- exports.expectHex = expectHex;
134
111
  const _matchEvents = async (msg, events, ...filters) => {
135
112
  let data = toHuman(await events).map(({ event: { index: _, ...event } }) => event);
136
113
  if (filters.length > 0) {
@@ -145,17 +122,15 @@ const _matchEvents = async (msg, events, ...filters) => {
145
122
  });
146
123
  });
147
124
  }
148
- return (0, vitest_1.expect)(data).toMatchSnapshot(msg);
125
+ return expect(data).toMatchSnapshot(msg);
149
126
  };
150
- const matchEvents = async (events, ...filters) => {
151
- return _matchEvents('events', (0, exports.redact)(events), ...filters);
127
+ export const matchEvents = async (events, ...filters) => {
128
+ return _matchEvents('events', redact(events), ...filters);
152
129
  };
153
- exports.matchEvents = matchEvents;
154
- const matchSystemEvents = async ({ api }, ...filters) => {
155
- await _matchEvents('system events', (0, exports.redact)(api.query.system.events()), ...filters);
130
+ export const matchSystemEvents = async ({ api }, ...filters) => {
131
+ await _matchEvents('system events', redact(api.query.system.events()), ...filters);
156
132
  };
157
- exports.matchSystemEvents = matchSystemEvents;
158
- const redact = async (data) => {
133
+ export const redact = async (data) => {
159
134
  const json = toHuman(await data);
160
135
  const process = (obj) => {
161
136
  if (obj == null) {
@@ -192,8 +167,7 @@ const redact = async (data) => {
192
167
  };
193
168
  return process(json);
194
169
  };
195
- exports.redact = redact;
196
- function defer() {
170
+ export function defer() {
197
171
  const deferred = {};
198
172
  deferred.promise = new Promise((resolve, reject) => {
199
173
  deferred.resolve = resolve;
@@ -201,8 +175,7 @@ function defer() {
201
175
  });
202
176
  return deferred;
203
177
  }
204
- exports.defer = defer;
205
- const sendTransaction = async (tx) => {
178
+ export const sendTransaction = async (tx) => {
206
179
  const signed = await tx;
207
180
  const deferred = defer();
208
181
  await signed.send((status) => {
@@ -218,11 +191,10 @@ const sendTransaction = async (tx) => {
218
191
  events: deferred.promise,
219
192
  };
220
193
  };
221
- exports.sendTransaction = sendTransaction;
222
- const testingPairs = (keyringType = 'ed25519', ss58Format) => {
223
- const keyringEth = (0, keyring_1.createTestKeyring)({ type: 'ethereum' });
194
+ export const testingPairs = (keyringType = 'ed25519', ss58Format) => {
195
+ const keyringEth = createTestKeyring({ type: 'ethereum' });
224
196
  // default to ed25519 because sr25519 signature is non-deterministic
225
- const keyring = new keyring_1.Keyring({ type: keyringType, ss58Format });
197
+ const keyring = new Keyring({ type: keyringType, ss58Format });
226
198
  return {
227
199
  alice: keyring.addFromUri('//Alice'),
228
200
  bob: keyring.addFromUri('//Bob'),
@@ -238,4 +210,3 @@ const testingPairs = (keyringType = 'ed25519', ss58Format) => {
238
210
  keyringEth,
239
211
  };
240
212
  };
241
- exports.testingPairs = testingPairs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acala-network/chopsticks-testing",
3
- "version": "0.8.0-4",
3
+ "version": "0.8.0-6",
4
4
  "author": "Bryan Chen <xlchen1291@gmail.com>",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
@@ -8,10 +8,10 @@
8
8
  "build": "tsc -p ./tsconfig.json"
9
9
  },
10
10
  "dependencies": {
11
- "@acala-network/chopsticks": "0.8.0-4"
11
+ "@acala-network/chopsticks": "0.8.0-6"
12
12
  },
13
13
  "peerDependencies": {
14
- "vitest": "^0.33.0"
14
+ "vitest": "^0.34.0"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@types/chai": "^4.3.5",