Skip to content

Commit cdf6a91

Browse files
committed
feat: missing tests to sui indexer
Signed-off-by: rmeena840 <rmeena840@gmail.com>
1 parent a6b1abb commit cdf6a91

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

packages/sui-indexer/src/storage.test.ts

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -676,4 +676,98 @@ describe("IndexerStorage", () => {
676676
expect(tokens[2]).toBeGreaterThan(now);
677677
});
678678
});
679+
680+
it("getMultipleSuiGqlCursors should return cursors for multiple setups", async () => {
681+
await storage.saveMultipleSuiGqlCursors([{ cursor: "cursor1", setupId: 1 }]);
682+
const cursors = await storage.getMultipleSuiGqlCursors([1, 2]);
683+
expect(cursors[1]).toBe("cursor1");
684+
expect(cursors[2]).toBeNull();
685+
});
686+
687+
it("hasRedeemRequest should check if redeem exists", async () => {
688+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
689+
const exists = await storage.hasRedeemRequest(1);
690+
const notExists = await storage.hasRedeemRequest(999);
691+
expect(exists).toBe(true);
692+
expect(notExists).toBe(false);
693+
});
694+
695+
it("getRedeemUtxosWithDetails should return utxos with input_index", async () => {
696+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
697+
await insertUtxo(
698+
storage,
699+
1,
700+
scriptPubkey1,
701+
"dwallet1",
702+
"tx1",
703+
0,
704+
2000,
705+
UtxoStatus.Available,
706+
null,
707+
);
708+
await storage.saveRedeemInputs([
709+
{
710+
redeem_id: 1,
711+
utxo_id: 1,
712+
input_index: 0,
713+
dwallet_id: "dwallet1",
714+
created_at: Date.now(),
715+
},
716+
]);
717+
const utxos = await storage.getRedeemUtxosWithDetails(1);
718+
expect(utxos.length).toBe(1);
719+
expect(utxos[0]!.input_index).toBe(0);
720+
});
721+
722+
it("should transition redeem request from broadcasted to finalized and update UTXO status", async () => {
723+
const redeemId = 1;
724+
const btcTxId = "btcTxId123";
725+
await insertRedeemRequest(
726+
storage,
727+
redeemId,
728+
"redeemer1",
729+
recipientScript,
730+
3000,
731+
1000,
732+
"0xSuiTx1",
733+
);
734+
await insertUtxo(
735+
storage,
736+
1,
737+
scriptPubkey1,
738+
"dwallet1",
739+
"tx1",
740+
0,
741+
2000,
742+
UtxoStatus.Available,
743+
null,
744+
);
745+
await storage.saveRedeemInputs([
746+
{
747+
redeem_id: redeemId,
748+
utxo_id: 1,
749+
input_index: 0,
750+
dwallet_id: "dwallet1",
751+
created_at: Date.now(),
752+
},
753+
]);
754+
await storage.markRedeemBroadcasted(redeemId, btcTxId);
755+
const broadcastedRedeem = await db
756+
.prepare("SELECT status, btc_tx FROM nbtc_redeem_requests WHERE redeem_id = ?")
757+
.bind(redeemId)
758+
.first<{ status: string; btc_tx: string }>();
759+
expect(broadcastedRedeem!.status).toBe(RedeemRequestStatus.Broadcasting);
760+
expect(broadcastedRedeem!.btc_tx).toBe(btcTxId);
761+
await storage.setRedeemFinalized(redeemId);
762+
const finalizedRedeem = await db
763+
.prepare("SELECT status FROM nbtc_redeem_requests WHERE redeem_id = ?")
764+
.bind(redeemId)
765+
.first<{ status: string }>();
766+
const utxo = await db
767+
.prepare("SELECT status FROM nbtc_utxos WHERE nbtc_utxo_id = ?")
768+
.bind(1)
769+
.first<{ status: string }>();
770+
expect(finalizedRedeem!.status).toBe(RedeemRequestStatus.Finalized);
771+
expect(utxo!.status).toBe(UtxoStatus.Spent);
772+
});
679773
});

0 commit comments

Comments
 (0)