Skip to content

Commit 1967e15

Browse files
OttoAllmendingerllm-git
andcommitted
feat(utxo-staking): move assertion utils to fixtures.utils.ts
Move assertion utility functions from transactions.ts to fixtures.utils.ts for better code organization and reusability. Issue: BTC-2143 Co-authored-by: llm-git <[email protected]>
1 parent 6ac3718 commit 1967e15

File tree

2 files changed

+36
-28
lines changed

2 files changed

+36
-28
lines changed

modules/utxo-staking/test/unit/babylon/transactions.ts

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
toUtxoPsbt,
1414
toWrappedPsbt,
1515
} from '@bitgo/utxo-core/descriptor';
16-
import { getFixture, toPlainObject } from '@bitgo/utxo-core/testutil';
16+
import { toPlainObject } from '@bitgo/utxo-core/testutil';
1717
import { getBabylonParamByVersion } from '@bitgo/babylonlabs-io-btc-staking-ts';
1818

1919
import {
@@ -25,7 +25,12 @@ import {
2525
forceFinalizePsbt,
2626
} from '../../../src/babylon';
2727
import { parseStakingDescriptor } from '../../../src/babylon/parseDescriptor';
28-
import { normalize } from '../fixtures.utils';
28+
import {
29+
normalize,
30+
assertEqualsFixture,
31+
assertEqualsMiniscript,
32+
assertTransactionEqualsFixture,
33+
} from '../fixtures.utils';
2934

3035
import { fromXOnlyPublicKey, getECKey, getECKeys, getXOnlyPubkey } from './key.utils';
3136
import { getBitGoUtxoStakingMsgCreateBtcDelegation, getVendorMsgCreateBtcDelegation } from './vendor.utils';
@@ -203,18 +208,6 @@ function parseScripts(scripts: unknown) {
203208
return Object.fromEntries(Object.entries(scripts).map(([key, value]) => [key, parseScript(key, value)]));
204209
}
205210

206-
type EqualsAssertion = typeof assert.deepStrictEqual;
207-
208-
async function assertEqualsFixture(
209-
fixtureName: string,
210-
value: unknown,
211-
n = normalize,
212-
eq: EqualsAssertion = assert.deepStrictEqual
213-
): Promise<void> {
214-
value = n(value);
215-
eq(await getFixture(fixtureName, value), value);
216-
}
217-
218211
async function assertScriptsEqualFixture(
219212
fixtureName: string,
220213
builder: vendor.StakingScriptData,
@@ -226,19 +219,6 @@ async function assertScriptsEqualFixture(
226219
});
227220
}
228221

229-
async function assertTransactionEqualsFixture(fixtureName: string, tx: unknown): Promise<void> {
230-
await assertEqualsFixture(fixtureName, normalize(tx));
231-
}
232-
233-
function assertEqualsMiniscript(script: Buffer, miniscript: ast.MiniscriptNode): void {
234-
const ms = Miniscript.fromBitcoinScript(script, 'tap');
235-
assert.deepStrictEqual(ast.fromMiniscript(ms), miniscript);
236-
assert.deepStrictEqual(
237-
script.toString('hex'),
238-
Buffer.from(Miniscript.fromString(ast.formatNode(miniscript), 'tap').encode()).toString('hex')
239-
);
240-
}
241-
242222
function assertEqualScripts(descriptorBuilder: BabylonDescriptorBuilder, builder: vendor.StakingScripts) {
243223
for (const [key, script] of Object.entries(builder) as [keyof vendor.StakingScripts, Buffer][]) {
244224
switch (key) {

modules/utxo-staking/test/unit/fixtures.utils.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
import { Descriptor } from '@bitgo/wasm-miniscript';
1+
import assert from 'assert';
2+
3+
import { ast, Descriptor, Miniscript } from '@bitgo/wasm-miniscript';
24
import * as utxolib from '@bitgo/utxo-lib';
35
import * as bitcoinjslib from 'bitcoinjs-lib';
6+
import { getFixture } from '@bitgo/utxo-core/testutil';
47
import { toPlainObjectFromTx, toPlainObjectFromPsbt } from '@bitgo/utxo-core/testutil/descriptor';
58

69
export function normalize(v: unknown): unknown {
@@ -33,3 +36,28 @@ export function normalize(v: unknown): unknown {
3336
}
3437
return v;
3538
}
39+
40+
type EqualsAssertion = typeof assert.deepStrictEqual;
41+
42+
export async function assertEqualsFixture(
43+
fixtureName: string,
44+
value: unknown,
45+
n = normalize,
46+
eq: EqualsAssertion = assert.deepStrictEqual
47+
): Promise<void> {
48+
value = n(value);
49+
eq(await getFixture(fixtureName, value), value);
50+
}
51+
52+
export async function assertTransactionEqualsFixture(fixtureName: string, tx: unknown): Promise<void> {
53+
await assertEqualsFixture(fixtureName, normalize(tx));
54+
}
55+
56+
export function assertEqualsMiniscript(script: Buffer, miniscript: ast.MiniscriptNode): void {
57+
const ms = Miniscript.fromBitcoinScript(script, 'tap');
58+
assert.deepStrictEqual(ast.fromMiniscript(ms), miniscript);
59+
assert.deepStrictEqual(
60+
script.toString('hex'),
61+
Buffer.from(Miniscript.fromString(ast.formatNode(miniscript), 'tap').encode()).toString('hex')
62+
);
63+
}

0 commit comments

Comments
 (0)