@acala-network/chopsticks-testing 0.9.5-1 → 0.9.5-3
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/dist/cjs/check.d.ts +23 -11
- package/dist/cjs/check.js +41 -32
- package/dist/cjs/index.d.ts +0 -14
- package/dist/cjs/index.js +0 -98
- package/dist/esm/check.d.ts +23 -11
- package/dist/esm/check.js +35 -17
- package/dist/esm/index.d.ts +0 -14
- package/dist/esm/index.js +0 -75
- package/package.json +2 -5
package/dist/cjs/check.d.ts
CHANGED
|
@@ -12,9 +12,14 @@ export type RedactOptions = {
|
|
|
12
12
|
redactKeys?: RegExp;
|
|
13
13
|
removeKeys?: RegExp;
|
|
14
14
|
};
|
|
15
|
+
export type ExpectFn = (value: any) => {
|
|
16
|
+
toMatchSnapshot: (msg?: string) => void;
|
|
17
|
+
toMatch(value: any, msg?: string): void;
|
|
18
|
+
toMatchObject(value: any, msg?: string): void;
|
|
19
|
+
};
|
|
15
20
|
export declare class Checker {
|
|
16
21
|
#private;
|
|
17
|
-
constructor(value: any, message?: string);
|
|
22
|
+
constructor(expectFn: ExpectFn, value: any, message?: string);
|
|
18
23
|
toHuman(): this;
|
|
19
24
|
toHex(): this;
|
|
20
25
|
toJson(): this;
|
|
@@ -25,15 +30,22 @@ export declare class Checker {
|
|
|
25
30
|
pipe(fn?: (value: Checker) => Checker): Checker;
|
|
26
31
|
value(): Promise<any>;
|
|
27
32
|
toMatchSnapshot(msg?: string): Promise<void>;
|
|
33
|
+
toMatch(value: any, msg?: string): Promise<void>;
|
|
34
|
+
toMatchObject(value: any, msg?: string): Promise<void>;
|
|
28
35
|
}
|
|
29
|
-
export declare const
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
export declare const withExpect: (expectFn: ExpectFn) => {
|
|
37
|
+
check: (value: any, msg?: string) => Checker;
|
|
38
|
+
checkEvents: ({ events }: {
|
|
39
|
+
events: Promise<Codec[] | Codec>;
|
|
40
|
+
}, ...filters: EventFilter[]) => Checker;
|
|
41
|
+
checkSystemEvents: ({ api }: {
|
|
42
|
+
api: ApiPromise;
|
|
43
|
+
}, ...filters: EventFilter[]) => Checker;
|
|
44
|
+
checkUmp: ({ api }: {
|
|
45
|
+
api: ApiPromise;
|
|
46
|
+
}) => Checker;
|
|
47
|
+
checkHrmp: ({ api }: {
|
|
48
|
+
api: ApiPromise;
|
|
49
|
+
}) => Checker;
|
|
50
|
+
checkHex: (value: any, msg?: string) => Checker;
|
|
32
51
|
};
|
|
33
|
-
export declare const checkEvents: ({ events }: {
|
|
34
|
-
events: Promise<Codec[] | Codec>;
|
|
35
|
-
}, ...filters: EventFilter[]) => Checker;
|
|
36
|
-
export declare const checkSystemEvents: ({ api }: Api, ...filters: EventFilter[]) => Checker;
|
|
37
|
-
export declare const checkUmp: ({ api }: Api) => Checker;
|
|
38
|
-
export declare const checkHrmp: ({ api }: Api) => Checker;
|
|
39
|
-
export {};
|
package/dist/cjs/check.js
CHANGED
|
@@ -12,23 +12,10 @@ _export(exports, {
|
|
|
12
12
|
Checker: function() {
|
|
13
13
|
return Checker;
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
return
|
|
17
|
-
},
|
|
18
|
-
checkEvents: function() {
|
|
19
|
-
return checkEvents;
|
|
20
|
-
},
|
|
21
|
-
checkHrmp: function() {
|
|
22
|
-
return checkHrmp;
|
|
23
|
-
},
|
|
24
|
-
checkSystemEvents: function() {
|
|
25
|
-
return checkSystemEvents;
|
|
26
|
-
},
|
|
27
|
-
checkUmp: function() {
|
|
28
|
-
return checkUmp;
|
|
15
|
+
withExpect: function() {
|
|
16
|
+
return withExpect;
|
|
29
17
|
}
|
|
30
18
|
});
|
|
31
|
-
const _vitest = require("vitest");
|
|
32
19
|
function _check_private_redeclaration(obj, privateCollection) {
|
|
33
20
|
if (privateCollection.has(obj)) {
|
|
34
21
|
throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
@@ -83,7 +70,7 @@ const processCodecOrArray = (codec, fn)=>Array.isArray(codec) ? codec.map(fn) :
|
|
|
83
70
|
const toHuman = (codec)=>processCodecOrArray(codec, (c)=>c?.toHuman?.() ?? c);
|
|
84
71
|
const toHex = (codec)=>processCodecOrArray(codec, (c)=>c?.toHex?.() ?? c);
|
|
85
72
|
const toJson = (codec)=>processCodecOrArray(codec, (c)=>c?.toJSON?.() ?? c);
|
|
86
|
-
var _value = /*#__PURE__*/ new WeakMap(), _pipeline = /*#__PURE__*/ new WeakMap(), _format = /*#__PURE__*/ new WeakMap(), _message = /*#__PURE__*/ new WeakMap(), _redactOptions = /*#__PURE__*/ new WeakMap(), _redact = /*#__PURE__*/ new WeakSet();
|
|
73
|
+
var _expectFn = /*#__PURE__*/ new WeakMap(), _value = /*#__PURE__*/ new WeakMap(), _pipeline = /*#__PURE__*/ new WeakMap(), _format = /*#__PURE__*/ new WeakMap(), _message = /*#__PURE__*/ new WeakMap(), _redactOptions = /*#__PURE__*/ new WeakMap(), _redact = /*#__PURE__*/ new WeakSet();
|
|
87
74
|
class Checker {
|
|
88
75
|
toHuman() {
|
|
89
76
|
_class_private_field_set(this, _format, 'human');
|
|
@@ -158,10 +145,20 @@ class Checker {
|
|
|
158
145
|
return value;
|
|
159
146
|
}
|
|
160
147
|
async toMatchSnapshot(msg) {
|
|
161
|
-
return (
|
|
148
|
+
return _class_private_field_get(this, _expectFn).call(this, await this.value()).toMatchSnapshot(msg ?? _class_private_field_get(this, _message));
|
|
162
149
|
}
|
|
163
|
-
|
|
150
|
+
async toMatch(value, msg) {
|
|
151
|
+
return _class_private_field_get(this, _expectFn).call(this, await this.value()).toMatch(value, msg ?? _class_private_field_get(this, _message));
|
|
152
|
+
}
|
|
153
|
+
async toMatchObject(value, msg) {
|
|
154
|
+
return _class_private_field_get(this, _expectFn).call(this, await this.value()).toMatchObject(value, msg ?? _class_private_field_get(this, _message));
|
|
155
|
+
}
|
|
156
|
+
constructor(expectFn, value, message){
|
|
164
157
|
_class_private_method_init(this, _redact);
|
|
158
|
+
_class_private_field_init(this, _expectFn, {
|
|
159
|
+
writable: true,
|
|
160
|
+
value: void 0
|
|
161
|
+
});
|
|
165
162
|
_class_private_field_init(this, _value, {
|
|
166
163
|
writable: true,
|
|
167
164
|
value: void 0
|
|
@@ -182,6 +179,7 @@ class Checker {
|
|
|
182
179
|
writable: true,
|
|
183
180
|
value: void 0
|
|
184
181
|
});
|
|
182
|
+
_class_private_field_set(this, _expectFn, expectFn);
|
|
185
183
|
_class_private_field_set(this, _value, value);
|
|
186
184
|
_class_private_field_set(this, _message, message);
|
|
187
185
|
}
|
|
@@ -259,19 +257,30 @@ function redact(value) {
|
|
|
259
257
|
};
|
|
260
258
|
return process(value);
|
|
261
259
|
}
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
if (
|
|
265
|
-
|
|
260
|
+
const withExpect = (expectFn)=>{
|
|
261
|
+
const check = (value, msg)=>{
|
|
262
|
+
if (value instanceof Checker) {
|
|
263
|
+
if (msg) {
|
|
264
|
+
return value.message(msg);
|
|
265
|
+
}
|
|
266
|
+
return value;
|
|
266
267
|
}
|
|
267
|
-
return value;
|
|
268
|
-
}
|
|
269
|
-
|
|
268
|
+
return new Checker(expectFn, value, msg);
|
|
269
|
+
};
|
|
270
|
+
const checkEvents = ({ events }, ...filters)=>check(events, 'events').filterEvents(...filters).redact();
|
|
271
|
+
const checkSystemEvents = ({ api }, ...filters)=>check(api.query.system.events(), 'system events').filterEvents(...filters).redact();
|
|
272
|
+
const checkUmp = ({ api })=>check(api.query.parachainSystem.upwardMessages(), 'ump').map((value)=>api.createType('Vec<XcmVersionedXcm>', value).toJSON());
|
|
273
|
+
const checkHrmp = ({ api })=>check(api.query.parachainSystem.hrmpOutboundMessages(), 'hrmp').map((value)=>value.map(({ recipient, data })=>({
|
|
274
|
+
data: api.createType('(XcmpMessageFormat, XcmVersionedXcm)', data).toJSON(),
|
|
275
|
+
recipient
|
|
276
|
+
})));
|
|
277
|
+
const checkHex = (value, msg)=>check(value, msg).toHex();
|
|
278
|
+
return {
|
|
279
|
+
check,
|
|
280
|
+
checkEvents,
|
|
281
|
+
checkSystemEvents,
|
|
282
|
+
checkUmp,
|
|
283
|
+
checkHrmp,
|
|
284
|
+
checkHex
|
|
285
|
+
};
|
|
270
286
|
};
|
|
271
|
-
const checkEvents = ({ events }, ...filters)=>check(events, 'events').filterEvents(...filters).redact();
|
|
272
|
-
const checkSystemEvents = ({ api }, ...filters)=>check(api.query.system.events(), 'system events').filterEvents(...filters).redact();
|
|
273
|
-
const checkUmp = ({ api })=>check(api.query.parachainSystem.upwardMessages(), 'ump').map((value)=>api.createType('Vec<XcmVersionedXcm>', value).toJSON());
|
|
274
|
-
const checkHrmp = ({ api })=>check(api.query.parachainSystem.hrmpOutboundMessages(), 'hrmp').map((value)=>value.map(({ recipient, data })=>({
|
|
275
|
-
data: api.createType('(XcmpMessageFormat, XcmVersionedXcm)', data).toJSON(),
|
|
276
|
-
recipient
|
|
277
|
-
})));
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
import { ApiPromise } from '@polkadot/api';
|
|
2
|
-
import { Codec } from '@polkadot/types/types';
|
|
3
1
|
export * from './check.js';
|
|
4
2
|
export * from '@acala-network/chopsticks-utils';
|
|
5
|
-
type CodecOrArray = Codec | Codec[];
|
|
6
|
-
export declare const expectJson: (codec: CodecOrArray) => import("@vitest/expect").Assertion<any>;
|
|
7
|
-
export declare const expectHex: (codec: CodecOrArray) => import("@vitest/expect").Assertion<any>;
|
|
8
|
-
type EventFilter = string | {
|
|
9
|
-
method: string;
|
|
10
|
-
section: string;
|
|
11
|
-
};
|
|
12
|
-
export declare const matchEvents: (events: Promise<Codec[] | Codec>, ...filters: EventFilter[]) => Promise<void>;
|
|
13
|
-
export declare const matchSystemEvents: ({ api }: {
|
|
14
|
-
api: ApiPromise;
|
|
15
|
-
}, ...filters: EventFilter[]) => Promise<void>;
|
|
16
|
-
export declare const redact: (data: any | Promise<any>) => Promise<any>;
|
package/dist/cjs/index.js
CHANGED
|
@@ -2,30 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
expectHex: function() {
|
|
13
|
-
return expectHex;
|
|
14
|
-
},
|
|
15
|
-
expectJson: function() {
|
|
16
|
-
return expectJson;
|
|
17
|
-
},
|
|
18
|
-
matchEvents: function() {
|
|
19
|
-
return matchEvents;
|
|
20
|
-
},
|
|
21
|
-
matchSystemEvents: function() {
|
|
22
|
-
return matchSystemEvents;
|
|
23
|
-
},
|
|
24
|
-
redact: function() {
|
|
25
|
-
return redact;
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
const _vitest = require("vitest");
|
|
29
5
|
_export_star(require("./check.js"), exports);
|
|
30
6
|
_export_star(require("@acala-network/chopsticks-utils"), exports);
|
|
31
7
|
function _export_star(from, to) {
|
|
@@ -41,77 +17,3 @@ function _export_star(from, to) {
|
|
|
41
17
|
});
|
|
42
18
|
return from;
|
|
43
19
|
}
|
|
44
|
-
const processCodecOrArray = (codec, fn)=>Array.isArray(codec) ? codec.map(fn) : fn(codec);
|
|
45
|
-
const toHuman = (codec)=>processCodecOrArray(codec, (c)=>c?.toHuman?.() ?? c);
|
|
46
|
-
const toJson = (codec)=>processCodecOrArray(codec, (c)=>c?.toJSON?.() ?? c);
|
|
47
|
-
const toHex = (codec)=>processCodecOrArray(codec, (c)=>c?.toHex?.() ?? c);
|
|
48
|
-
const expectJson = (codec)=>{
|
|
49
|
-
return (0, _vitest.expect)(toJson(codec));
|
|
50
|
-
};
|
|
51
|
-
const expectHex = (codec)=>{
|
|
52
|
-
return (0, _vitest.expect)(toHex(codec));
|
|
53
|
-
};
|
|
54
|
-
const _matchEvents = async (msg, events, ...filters)=>{
|
|
55
|
-
let data = toHuman(await events).map(({ event: { index: _, ...event } })=>event);
|
|
56
|
-
if (filters.length > 0) {
|
|
57
|
-
const filtersArr = Array.isArray(filters) ? filters : [
|
|
58
|
-
filters
|
|
59
|
-
];
|
|
60
|
-
data = data.filter((evt)=>{
|
|
61
|
-
return filtersArr.some((filter)=>{
|
|
62
|
-
if (typeof filter === 'string') {
|
|
63
|
-
return evt.section === filter;
|
|
64
|
-
}
|
|
65
|
-
const { section, method } = filter;
|
|
66
|
-
return evt.section === section && evt.method === method;
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
return (0, _vitest.expect)(data).toMatchSnapshot(msg);
|
|
71
|
-
};
|
|
72
|
-
const matchEvents = async (events, ...filters)=>{
|
|
73
|
-
return _matchEvents('events', redact(events), ...filters);
|
|
74
|
-
};
|
|
75
|
-
const matchSystemEvents = async ({ api }, ...filters)=>{
|
|
76
|
-
await _matchEvents('system events', redact(api.query.system.events()), ...filters);
|
|
77
|
-
};
|
|
78
|
-
const redact = async (data)=>{
|
|
79
|
-
const json = toHuman(await data);
|
|
80
|
-
const process = (obj)=>{
|
|
81
|
-
if (obj == null) {
|
|
82
|
-
return obj;
|
|
83
|
-
}
|
|
84
|
-
if (Array.isArray(obj)) {
|
|
85
|
-
return obj.map(process);
|
|
86
|
-
}
|
|
87
|
-
if (typeof obj === 'number') {
|
|
88
|
-
const rounded = parseFloat(obj.toPrecision(2));
|
|
89
|
-
if (rounded === obj) {
|
|
90
|
-
return rounded;
|
|
91
|
-
}
|
|
92
|
-
return `(rounded ${rounded})`;
|
|
93
|
-
}
|
|
94
|
-
if (typeof obj === 'string') {
|
|
95
|
-
if (obj.match(/0x[0-9a-f]{64}/)) {
|
|
96
|
-
return '(hash)';
|
|
97
|
-
}
|
|
98
|
-
if (obj.match(/^[\d,]+$/)) {
|
|
99
|
-
const num = parseInt(obj.replace(/,/g, ''));
|
|
100
|
-
const rounded = parseFloat(num.toPrecision(2));
|
|
101
|
-
if (rounded === num) {
|
|
102
|
-
return rounded;
|
|
103
|
-
}
|
|
104
|
-
return `(rounded ${rounded})`;
|
|
105
|
-
}
|
|
106
|
-
return obj;
|
|
107
|
-
}
|
|
108
|
-
if (typeof obj === 'object') {
|
|
109
|
-
return Object.fromEntries(Object.entries(obj).map(([k, v])=>[
|
|
110
|
-
k,
|
|
111
|
-
process(v)
|
|
112
|
-
]));
|
|
113
|
-
}
|
|
114
|
-
return obj;
|
|
115
|
-
};
|
|
116
|
-
return process(json);
|
|
117
|
-
};
|
package/dist/esm/check.d.ts
CHANGED
|
@@ -12,9 +12,14 @@ export type RedactOptions = {
|
|
|
12
12
|
redactKeys?: RegExp;
|
|
13
13
|
removeKeys?: RegExp;
|
|
14
14
|
};
|
|
15
|
+
export type ExpectFn = (value: any) => {
|
|
16
|
+
toMatchSnapshot: (msg?: string) => void;
|
|
17
|
+
toMatch(value: any, msg?: string): void;
|
|
18
|
+
toMatchObject(value: any, msg?: string): void;
|
|
19
|
+
};
|
|
15
20
|
export declare class Checker {
|
|
16
21
|
#private;
|
|
17
|
-
constructor(value: any, message?: string);
|
|
22
|
+
constructor(expectFn: ExpectFn, value: any, message?: string);
|
|
18
23
|
toHuman(): this;
|
|
19
24
|
toHex(): this;
|
|
20
25
|
toJson(): this;
|
|
@@ -25,15 +30,22 @@ export declare class Checker {
|
|
|
25
30
|
pipe(fn?: (value: Checker) => Checker): Checker;
|
|
26
31
|
value(): Promise<any>;
|
|
27
32
|
toMatchSnapshot(msg?: string): Promise<void>;
|
|
33
|
+
toMatch(value: any, msg?: string): Promise<void>;
|
|
34
|
+
toMatchObject(value: any, msg?: string): Promise<void>;
|
|
28
35
|
}
|
|
29
|
-
export declare const
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
export declare const withExpect: (expectFn: ExpectFn) => {
|
|
37
|
+
check: (value: any, msg?: string) => Checker;
|
|
38
|
+
checkEvents: ({ events }: {
|
|
39
|
+
events: Promise<Codec[] | Codec>;
|
|
40
|
+
}, ...filters: EventFilter[]) => Checker;
|
|
41
|
+
checkSystemEvents: ({ api }: {
|
|
42
|
+
api: ApiPromise;
|
|
43
|
+
}, ...filters: EventFilter[]) => Checker;
|
|
44
|
+
checkUmp: ({ api }: {
|
|
45
|
+
api: ApiPromise;
|
|
46
|
+
}) => Checker;
|
|
47
|
+
checkHrmp: ({ api }: {
|
|
48
|
+
api: ApiPromise;
|
|
49
|
+
}) => Checker;
|
|
50
|
+
checkHex: (value: any, msg?: string) => Checker;
|
|
32
51
|
};
|
|
33
|
-
export declare const checkEvents: ({ events }: {
|
|
34
|
-
events: Promise<Codec[] | Codec>;
|
|
35
|
-
}, ...filters: EventFilter[]) => Checker;
|
|
36
|
-
export declare const checkSystemEvents: ({ api }: Api, ...filters: EventFilter[]) => Checker;
|
|
37
|
-
export declare const checkUmp: ({ api }: Api) => Checker;
|
|
38
|
-
export declare const checkHrmp: ({ api }: Api) => Checker;
|
|
39
|
-
export {};
|
package/dist/esm/check.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { expect } from 'vitest';
|
|
2
1
|
const processCodecOrArray = (codec, fn)=>Array.isArray(codec) ? codec.map(fn) : fn(codec);
|
|
3
2
|
const toHuman = (codec)=>processCodecOrArray(codec, (c)=>c?.toHuman?.() ?? c);
|
|
4
3
|
const toHex = (codec)=>processCodecOrArray(codec, (c)=>c?.toHex?.() ?? c);
|
|
5
4
|
const toJson = (codec)=>processCodecOrArray(codec, (c)=>c?.toJSON?.() ?? c);
|
|
6
5
|
export class Checker {
|
|
6
|
+
#expectFn;
|
|
7
7
|
#value;
|
|
8
8
|
#pipeline = [];
|
|
9
9
|
#format = 'json';
|
|
10
10
|
#message;
|
|
11
11
|
#redactOptions;
|
|
12
|
-
constructor(value, message){
|
|
12
|
+
constructor(expectFn, value, message){
|
|
13
|
+
this.#expectFn = expectFn;
|
|
13
14
|
this.#value = value;
|
|
14
15
|
this.#message = message;
|
|
15
16
|
}
|
|
@@ -159,22 +160,39 @@ export class Checker {
|
|
|
159
160
|
return value;
|
|
160
161
|
}
|
|
161
162
|
async toMatchSnapshot(msg) {
|
|
162
|
-
return
|
|
163
|
+
return this.#expectFn(await this.value()).toMatchSnapshot(msg ?? this.#message);
|
|
164
|
+
}
|
|
165
|
+
async toMatch(value, msg) {
|
|
166
|
+
return this.#expectFn(await this.value()).toMatch(value, msg ?? this.#message);
|
|
167
|
+
}
|
|
168
|
+
async toMatchObject(value, msg) {
|
|
169
|
+
return this.#expectFn(await this.value()).toMatchObject(value, msg ?? this.#message);
|
|
163
170
|
}
|
|
164
171
|
}
|
|
165
|
-
export const
|
|
166
|
-
|
|
167
|
-
if (
|
|
168
|
-
|
|
172
|
+
export const withExpect = (expectFn)=>{
|
|
173
|
+
const check = (value, msg)=>{
|
|
174
|
+
if (value instanceof Checker) {
|
|
175
|
+
if (msg) {
|
|
176
|
+
return value.message(msg);
|
|
177
|
+
}
|
|
178
|
+
return value;
|
|
169
179
|
}
|
|
170
|
-
return value;
|
|
171
|
-
}
|
|
172
|
-
|
|
180
|
+
return new Checker(expectFn, value, msg);
|
|
181
|
+
};
|
|
182
|
+
const checkEvents = ({ events }, ...filters)=>check(events, 'events').filterEvents(...filters).redact();
|
|
183
|
+
const checkSystemEvents = ({ api }, ...filters)=>check(api.query.system.events(), 'system events').filterEvents(...filters).redact();
|
|
184
|
+
const checkUmp = ({ api })=>check(api.query.parachainSystem.upwardMessages(), 'ump').map((value)=>api.createType('Vec<XcmVersionedXcm>', value).toJSON());
|
|
185
|
+
const checkHrmp = ({ api })=>check(api.query.parachainSystem.hrmpOutboundMessages(), 'hrmp').map((value)=>value.map(({ recipient, data })=>({
|
|
186
|
+
data: api.createType('(XcmpMessageFormat, XcmVersionedXcm)', data).toJSON(),
|
|
187
|
+
recipient
|
|
188
|
+
})));
|
|
189
|
+
const checkHex = (value, msg)=>check(value, msg).toHex();
|
|
190
|
+
return {
|
|
191
|
+
check,
|
|
192
|
+
checkEvents,
|
|
193
|
+
checkSystemEvents,
|
|
194
|
+
checkUmp,
|
|
195
|
+
checkHrmp,
|
|
196
|
+
checkHex
|
|
197
|
+
};
|
|
173
198
|
};
|
|
174
|
-
export const checkEvents = ({ events }, ...filters)=>check(events, 'events').filterEvents(...filters).redact();
|
|
175
|
-
export const checkSystemEvents = ({ api }, ...filters)=>check(api.query.system.events(), 'system events').filterEvents(...filters).redact();
|
|
176
|
-
export const checkUmp = ({ api })=>check(api.query.parachainSystem.upwardMessages(), 'ump').map((value)=>api.createType('Vec<XcmVersionedXcm>', value).toJSON());
|
|
177
|
-
export const checkHrmp = ({ api })=>check(api.query.parachainSystem.hrmpOutboundMessages(), 'hrmp').map((value)=>value.map(({ recipient, data })=>({
|
|
178
|
-
data: api.createType('(XcmpMessageFormat, XcmVersionedXcm)', data).toJSON(),
|
|
179
|
-
recipient
|
|
180
|
-
})));
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
import { ApiPromise } from '@polkadot/api';
|
|
2
|
-
import { Codec } from '@polkadot/types/types';
|
|
3
1
|
export * from './check.js';
|
|
4
2
|
export * from '@acala-network/chopsticks-utils';
|
|
5
|
-
type CodecOrArray = Codec | Codec[];
|
|
6
|
-
export declare const expectJson: (codec: CodecOrArray) => import("@vitest/expect").Assertion<any>;
|
|
7
|
-
export declare const expectHex: (codec: CodecOrArray) => import("@vitest/expect").Assertion<any>;
|
|
8
|
-
type EventFilter = string | {
|
|
9
|
-
method: string;
|
|
10
|
-
section: string;
|
|
11
|
-
};
|
|
12
|
-
export declare const matchEvents: (events: Promise<Codec[] | Codec>, ...filters: EventFilter[]) => Promise<void>;
|
|
13
|
-
export declare const matchSystemEvents: ({ api }: {
|
|
14
|
-
api: ApiPromise;
|
|
15
|
-
}, ...filters: EventFilter[]) => Promise<void>;
|
|
16
|
-
export declare const redact: (data: any | Promise<any>) => Promise<any>;
|
package/dist/esm/index.js
CHANGED
|
@@ -1,77 +1,2 @@
|
|
|
1
|
-
import { expect } from 'vitest';
|
|
2
1
|
export * from './check.js';
|
|
3
2
|
export * from '@acala-network/chopsticks-utils';
|
|
4
|
-
const processCodecOrArray = (codec, fn)=>Array.isArray(codec) ? codec.map(fn) : fn(codec);
|
|
5
|
-
const toHuman = (codec)=>processCodecOrArray(codec, (c)=>c?.toHuman?.() ?? c);
|
|
6
|
-
const toJson = (codec)=>processCodecOrArray(codec, (c)=>c?.toJSON?.() ?? c);
|
|
7
|
-
const toHex = (codec)=>processCodecOrArray(codec, (c)=>c?.toHex?.() ?? c);
|
|
8
|
-
export const expectJson = (codec)=>{
|
|
9
|
-
return expect(toJson(codec));
|
|
10
|
-
};
|
|
11
|
-
export const expectHex = (codec)=>{
|
|
12
|
-
return expect(toHex(codec));
|
|
13
|
-
};
|
|
14
|
-
const _matchEvents = async (msg, events, ...filters)=>{
|
|
15
|
-
let data = toHuman(await events).map(({ event: { index: _, ...event } })=>event);
|
|
16
|
-
if (filters.length > 0) {
|
|
17
|
-
const filtersArr = Array.isArray(filters) ? filters : [
|
|
18
|
-
filters
|
|
19
|
-
];
|
|
20
|
-
data = data.filter((evt)=>{
|
|
21
|
-
return filtersArr.some((filter)=>{
|
|
22
|
-
if (typeof filter === 'string') {
|
|
23
|
-
return evt.section === filter;
|
|
24
|
-
}
|
|
25
|
-
const { section, method } = filter;
|
|
26
|
-
return evt.section === section && evt.method === method;
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
return expect(data).toMatchSnapshot(msg);
|
|
31
|
-
};
|
|
32
|
-
export const matchEvents = async (events, ...filters)=>{
|
|
33
|
-
return _matchEvents('events', redact(events), ...filters);
|
|
34
|
-
};
|
|
35
|
-
export const matchSystemEvents = async ({ api }, ...filters)=>{
|
|
36
|
-
await _matchEvents('system events', redact(api.query.system.events()), ...filters);
|
|
37
|
-
};
|
|
38
|
-
export const redact = async (data)=>{
|
|
39
|
-
const json = toHuman(await data);
|
|
40
|
-
const process = (obj)=>{
|
|
41
|
-
if (obj == null) {
|
|
42
|
-
return obj;
|
|
43
|
-
}
|
|
44
|
-
if (Array.isArray(obj)) {
|
|
45
|
-
return obj.map(process);
|
|
46
|
-
}
|
|
47
|
-
if (typeof obj === 'number') {
|
|
48
|
-
const rounded = parseFloat(obj.toPrecision(2));
|
|
49
|
-
if (rounded === obj) {
|
|
50
|
-
return rounded;
|
|
51
|
-
}
|
|
52
|
-
return `(rounded ${rounded})`;
|
|
53
|
-
}
|
|
54
|
-
if (typeof obj === 'string') {
|
|
55
|
-
if (obj.match(/0x[0-9a-f]{64}/)) {
|
|
56
|
-
return '(hash)';
|
|
57
|
-
}
|
|
58
|
-
if (obj.match(/^[\d,]+$/)) {
|
|
59
|
-
const num = parseInt(obj.replace(/,/g, ''));
|
|
60
|
-
const rounded = parseFloat(num.toPrecision(2));
|
|
61
|
-
if (rounded === num) {
|
|
62
|
-
return rounded;
|
|
63
|
-
}
|
|
64
|
-
return `(rounded ${rounded})`;
|
|
65
|
-
}
|
|
66
|
-
return obj;
|
|
67
|
-
}
|
|
68
|
-
if (typeof obj === 'object') {
|
|
69
|
-
return Object.fromEntries(Object.entries(obj).map(([k, v])=>[
|
|
70
|
-
k,
|
|
71
|
-
process(v)
|
|
72
|
-
]));
|
|
73
|
-
}
|
|
74
|
-
return obj;
|
|
75
|
-
};
|
|
76
|
-
return process(json);
|
|
77
|
-
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acala-network/chopsticks-testing",
|
|
3
|
-
"version": "0.9.5-
|
|
3
|
+
"version": "0.9.5-3",
|
|
4
4
|
"author": "Acala Developers <hello@acala.network>",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -11,13 +11,10 @@
|
|
|
11
11
|
"build:esm": "swc ./src --config-file ../../.esmswcrc -d dist/esm && tsc -p tsconfig.json --declarationDir dist/esm"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@acala-network/chopsticks-utils": "0.9.5-
|
|
14
|
+
"@acala-network/chopsticks-utils": "0.9.5-3",
|
|
15
15
|
"@polkadot/api": "^10.10.1",
|
|
16
16
|
"@polkadot/types": "^10.10.1"
|
|
17
17
|
},
|
|
18
|
-
"peerDependencies": {
|
|
19
|
-
"vitest": "*"
|
|
20
|
-
},
|
|
21
18
|
"devDependencies": {
|
|
22
19
|
"@swc/cli": "0.1.63",
|
|
23
20
|
"@swc/core": "^1.3.100",
|