Skip to content

Commit

Permalink
Feat/add test cases (#4)
Browse files Browse the repository at this point in the history
* test: add test cases

* fix: property does not exist on type object

* ci: rewrite github action
  • Loading branch information
RainBoltz authored Dec 2, 2024
1 parent 946d852 commit e62f32d
Show file tree
Hide file tree
Showing 12 changed files with 5,088 additions and 1,412 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Node.js CI
on:
pull_request:
types:
- opened
- synchronize
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: ["20.x", "22.x"]
steps:
- name: checkout repo
uses: actions/checkout@v3
- name: use node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run build --if-present
- run: npm test
91 changes: 43 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,60 +23,61 @@ npm install ton-multisig-ts-sdk
The following examples assume the following ambient declarations:

```typescript
declare const connector: import('@tonconnect/sdk').ITonConnect
declare const UserRejectsError: typeof import('@tonconnect/sdk').UserRejectsError
declare const connector: import("@tonconnect/sdk").ITonConnect;
declare const UserRejectsError: typeof import("@tonconnect/sdk").UserRejectsError;
```

### Deploy Multisig V2

```typescript
import { deployMultisig, type MultisigConfig } from 'ton-multisig-ts-sdk';
import { deployMultisig, type MultisigConfig } from "ton-multisig-ts-sdk";
import { Address, toNano } from "@ton/ton";

// step 1: create multisig config
const multisigConfig: MultisigConfig = {
threshold: 2,
signers: [
Address.parse("EQBAJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aA"),
Address.parse("EQBBJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aB"),
Address.parse("EQBCJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aC")
],
proposers: [],
allowArbitrarySeqno: false,
}
threshold: 2,
signers: [
Address.parse("EQBAJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aA"),
Address.parse("EQBBJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aB"),
Address.parse("EQBCJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aC"),
],
proposers: [],
allowArbitrarySeqno: false,
};

// step 2: create multisig contract deploy payloads
const multisigContractPayload = deployMultisig(multisigConfig);


// step 3: deploy multisig contract
if (!connector.connected) {
alert('Please connect wallet to send the transaction!');
alert("Please connect wallet to send the transaction!");
}

const transaction = {
validUntil: Math.floor(Date.now() / 1000) + 60, // 60 sec
messages: [
{
address: multisigContractPayload.sendToAddress.toString(),
amount: toNano("0.002").toString(),
stateInit: multisigContractPayload.stateInit.toBoc().toString('base64'),
payload: multisigContractPayload.payload.toBoc().toString('base64')
},
]
}
validUntil: Math.floor(Date.now() / 1000) + 60, // 60 sec
messages: [
{
address: multisigContractPayload.sendToAddress.toString(),
amount: toNano("0.002").toString(),
stateInit: multisigContractPayload.stateInit.toBoc().toString("base64"),
payload: multisigContractPayload.payload.toBoc().toString("base64"),
},
],
};

try {
const result = await connector.sendTransaction(transaction);
const result = await connector.sendTransaction(transaction);

// TODO: verify the result here
void result
// TODO: verify the result here
void result;
} catch (e) {
if (e instanceof UserRejectsError) {
alert('You rejected the transaction. Please confirm it to send to the blockchain');
} else {
alert('Unknown error happened: ' + e.toString());
}
if (e instanceof UserRejectsError) {
alert(
"You rejected the transaction. Please confirm it to send to the blockchain",
);
} else {
alert("Unknown error happened: " + e.toString());
}
}
```

Expand Down Expand Up @@ -105,10 +106,8 @@ const client = new TonClient({
const multisigAddress = Address.parse(
"EQBAJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aA",
);
const { nextOrderSeqno, threshold, signers, proposers } = await getMultisigConfig(
client,
multisigAddress,
);
const { nextOrderSeqno, threshold, signers, proposers } =
await getMultisigConfig(client, multisigAddress);
const multisigConfig: MultisigConfig = {
threshold: Number(threshold),
signers,
Expand Down Expand Up @@ -158,7 +157,7 @@ try {
const result = await connector.sendTransaction(transaction);

// TODO: verify the result here
void result
void result;
} catch (e) {
if (e instanceof UserRejectsError) {
alert(
Expand Down Expand Up @@ -193,10 +192,8 @@ const client = new TonClient({
const multisigAddress = Address.parse(
"EQBAJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aA",
);
const { nextOrderSeqno, threshold, signers, proposers } = await getMultisigConfig(
client,
multisigAddress,
);
const { nextOrderSeqno, threshold, signers, proposers } =
await getMultisigConfig(client, multisigAddress);
const multisigConfig: MultisigConfig = {
threshold: Number(threshold),
signers,
Expand Down Expand Up @@ -256,7 +253,7 @@ try {
const result = await connector.sendTransaction(transaction);

// TODO: verify the result here
void result
void result;
} catch (e) {
if (e instanceof UserRejectsError) {
alert(
Expand Down Expand Up @@ -291,10 +288,8 @@ const client = new TonClient({
const multisigAddress = Address.parse(
"EQBAJBB3HagsujBqVfqeDUPJ0kXjgTPLWPFFffuNXNiJL0aA",
);
const { nextOrderSeqno, threshold, signers, proposers } = await getMultisigConfig(
client,
multisigAddress,
);
const { nextOrderSeqno, threshold, signers, proposers } =
await getMultisigConfig(client, multisigAddress);
const multisigConfig: MultisigConfig = {
threshold: Number(threshold),
signers,
Expand Down Expand Up @@ -348,7 +343,7 @@ try {
const result = await connector.sendTransaction(transaction);

// TODO: verify the result here
void result
void result;
} catch (e) {
if (e instanceof UserRejectsError) {
alert(
Expand Down Expand Up @@ -402,7 +397,7 @@ try {
const result = await connector.sendTransaction(transaction);

// TODO: verify the result here
void result
void result;
} catch (e) {
if (e instanceof UserRejectsError) {
alert(
Expand Down
7 changes: 7 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/** @type {import('ts-jest').JestConfigWithTsJest} **/
export default {
testEnvironment: "node",
transform: {
"^.+.tsx?$": ["ts-jest", {}],
},
};
Loading

0 comments on commit e62f32d

Please sign in to comment.