Skip to content

Commit ebe72cf

Browse files
committed
feat: dd missing tests to sui indexer
Signed-off-by: Ravindra Meena <rmeena840@gmail.com>
1 parent 555319d commit ebe72cf

File tree

1 file changed

+176
-0
lines changed

1 file changed

+176
-0
lines changed

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

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -597,4 +597,180 @@ describe("IndexerStorage", () => {
597597
expect(inputs[0]!.input_index).toBe(0);
598598
expect(inputs[1]!.input_index).toBe(1);
599599
});
600+
601+
it("getMultipleSuiGqlCursors should return cursors for multiple setups", async () => {
602+
await db
603+
.prepare(
604+
"INSERT INTO indexer_state (setup_id, nbtc_cursor, updated_at) VALUES (?, ?, ?)",
605+
)
606+
.bind(1, "cursor1", Date.now())
607+
.run();
608+
const cursors = await storage.getMultipleSuiGqlCursors([1]);
609+
expect(cursors[1]).toBe("cursor1");
610+
});
611+
612+
it("saveMultipleSuiGqlCursors should save cursors", async () => {
613+
await storage.saveMultipleSuiGqlCursors([{ setupId: 1, cursor: "newCursor" }]);
614+
const cursor = await storage.getSuiGqlCursor(1);
615+
expect(cursor).toBe("newCursor");
616+
});
617+
618+
it("hasRedeemRequest should check if redeem exists", async () => {
619+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
620+
const exists = await storage.hasRedeemRequest(1);
621+
const notExists = await storage.hasRedeemRequest(999);
622+
expect(exists).toBe(true);
623+
expect(notExists).toBe(false);
624+
});
625+
626+
it("getRedeemUtxosWithDetails should return utxos with input_index", async () => {
627+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
628+
await insertUtxo(
629+
storage,
630+
1,
631+
scriptPubkey1,
632+
"dwallet1",
633+
"tx1",
634+
0,
635+
2000,
636+
UtxoStatus.Available,
637+
null,
638+
);
639+
await storage.saveRedeemInputs([
640+
{
641+
redeem_id: 1,
642+
utxo_id: 1,
643+
input_index: 0,
644+
dwallet_id: "dwallet1",
645+
created_at: Date.now(),
646+
},
647+
]);
648+
const utxos = await storage.getRedeemUtxosWithDetails(1);
649+
expect(utxos.length).toBe(1);
650+
expect(utxos[0]!.input_index).toBe(0);
651+
});
652+
653+
it("getRedeemRequestData should return recipient_script and amount", async () => {
654+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
655+
const data = await storage.getRedeemRequestData(1);
656+
expect(data).not.toBeNull();
657+
expect(data!.amount).toBe(3000);
658+
});
659+
660+
it("getSignedRedeems should return signed redeems", async () => {
661+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
662+
await storage.updateRedeemStatus(1, RedeemRequestStatus.Signed);
663+
const redeems = await storage.getSignedRedeems();
664+
expect(redeems.length).toBe(1);
665+
expect(redeems[0]!.status).toBe(RedeemRequestStatus.Signed);
666+
});
667+
668+
it("getRedeemWithSetup should return redeem with setup info", async () => {
669+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
670+
const redeem = await storage.getRedeemWithSetup(1);
671+
expect(redeem).not.toBeNull();
672+
expect(redeem!.nbtc_pkg).toBe("0xPkg1");
673+
});
674+
675+
it("clearRedeemInputSignId should clear sign_id", async () => {
676+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
677+
await insertUtxo(
678+
storage,
679+
1,
680+
scriptPubkey1,
681+
"dwallet1",
682+
"tx1",
683+
0,
684+
2000,
685+
UtxoStatus.Available,
686+
null,
687+
);
688+
await storage.saveRedeemInputs([
689+
{
690+
redeem_id: 1,
691+
utxo_id: 1,
692+
input_index: 0,
693+
dwallet_id: "dwallet1",
694+
created_at: Date.now(),
695+
},
696+
]);
697+
await storage.updateRedeemInputSig(1, 1, "signId123");
698+
await storage.clearRedeemInputSignId(1, 1);
699+
const inputs = await storage.getRedeemInputs(1);
700+
expect(inputs[0]!.sign_id).toBeNull();
701+
});
702+
703+
it("getRedeemInfoBySignId should return redeem info", async () => {
704+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
705+
await insertUtxo(
706+
storage,
707+
1,
708+
scriptPubkey1,
709+
"dwallet1",
710+
"tx1",
711+
0,
712+
2000,
713+
UtxoStatus.Available,
714+
null,
715+
);
716+
await storage.saveRedeemInputs([
717+
{
718+
redeem_id: 1,
719+
utxo_id: 1,
720+
input_index: 0,
721+
dwallet_id: "dwallet1",
722+
created_at: Date.now(),
723+
},
724+
]);
725+
await storage.updateRedeemInputSig(1, 1, "signId123");
726+
const info = await storage.getRedeemInfoBySignId("signId123");
727+
expect(info).not.toBeNull();
728+
expect(info!.redeem_id).toBe(1);
729+
});
730+
731+
it("markRedeemBroadcasted should update status and btc_tx", async () => {
732+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
733+
await storage.markRedeemBroadcasted(1, "btcTxId123");
734+
const redeem = await db
735+
.prepare("SELECT status, btc_tx FROM nbtc_redeem_requests WHERE redeem_id = ?")
736+
.bind(1)
737+
.first<{ status: string; btc_tx: string }>();
738+
expect(redeem!.status).toBe(RedeemRequestStatus.Broadcasting);
739+
expect(redeem!.btc_tx).toBe("btcTxId123");
740+
});
741+
742+
it("setRedeemFinalized should update status and mark utxos as spent", async () => {
743+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
744+
await insertUtxo(
745+
storage,
746+
1,
747+
scriptPubkey1,
748+
"dwallet1",
749+
"tx1",
750+
0,
751+
2000,
752+
UtxoStatus.Available,
753+
null,
754+
);
755+
await storage.saveRedeemInputs([
756+
{
757+
redeem_id: 1,
758+
utxo_id: 1,
759+
input_index: 0,
760+
dwallet_id: "dwallet1",
761+
created_at: Date.now(),
762+
},
763+
]);
764+
await storage.setRedeemFinalized(1);
765+
const redeem = await db
766+
.prepare("SELECT status FROM nbtc_redeem_requests WHERE redeem_id = ?")
767+
.bind(1)
768+
.first<{ status: string }>();
769+
const utxo = await db
770+
.prepare("SELECT status FROM nbtc_utxos WHERE nbtc_utxo_id = ?")
771+
.bind(1)
772+
.first<{ status: string }>();
773+
expect(redeem!.status).toBe(RedeemRequestStatus.Finalized);
774+
expect(utxo!.status).toBe(UtxoStatus.Spent);
775+
});
600776
});

0 commit comments

Comments
 (0)