Skip to content

Commit 20d0907

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

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
@@ -676,4 +676,180 @@ describe("IndexerStorage", () => {
676676
expect(tokens[2]).toBeGreaterThan(now);
677677
});
678678
});
679+
680+
it("getMultipleSuiGqlCursors should return cursors for multiple setups", async () => {
681+
await db
682+
.prepare(
683+
"INSERT INTO indexer_state (setup_id, nbtc_cursor, updated_at) VALUES (?, ?, ?)",
684+
)
685+
.bind(1, "cursor1", Date.now())
686+
.run();
687+
const cursors = await storage.getMultipleSuiGqlCursors([1]);
688+
expect(cursors[1]).toBe("cursor1");
689+
});
690+
691+
it("saveMultipleSuiGqlCursors should save cursors", async () => {
692+
await storage.saveMultipleSuiGqlCursors([{ setupId: 1, cursor: "newCursor" }]);
693+
const cursor = await storage.getSuiGqlCursor(1);
694+
expect(cursor).toBe("newCursor");
695+
});
696+
697+
it("hasRedeemRequest should check if redeem exists", async () => {
698+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
699+
const exists = await storage.hasRedeemRequest(1);
700+
const notExists = await storage.hasRedeemRequest(999);
701+
expect(exists).toBe(true);
702+
expect(notExists).toBe(false);
703+
});
704+
705+
it("getRedeemUtxosWithDetails should return utxos with input_index", async () => {
706+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
707+
await insertUtxo(
708+
storage,
709+
1,
710+
scriptPubkey1,
711+
"dwallet1",
712+
"tx1",
713+
0,
714+
2000,
715+
UtxoStatus.Available,
716+
null,
717+
);
718+
await storage.saveRedeemInputs([
719+
{
720+
redeem_id: 1,
721+
utxo_id: 1,
722+
input_index: 0,
723+
dwallet_id: "dwallet1",
724+
created_at: Date.now(),
725+
},
726+
]);
727+
const utxos = await storage.getRedeemUtxosWithDetails(1);
728+
expect(utxos.length).toBe(1);
729+
expect(utxos[0]!.input_index).toBe(0);
730+
});
731+
732+
it("getRedeemRequestData should return recipient_script and amount", async () => {
733+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
734+
const data = await storage.getRedeemRequestData(1);
735+
expect(data).not.toBeNull();
736+
expect(data!.amount).toBe(3000);
737+
});
738+
739+
it("getSignedRedeems should return signed redeems", async () => {
740+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
741+
await storage.updateRedeemStatus(1, RedeemRequestStatus.Signed);
742+
const redeems = await storage.getSignedRedeems();
743+
expect(redeems.length).toBe(1);
744+
expect(redeems[0]!.status).toBe(RedeemRequestStatus.Signed);
745+
});
746+
747+
it("getRedeemWithSetup should return redeem with setup info", async () => {
748+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
749+
const redeem = await storage.getRedeemWithSetup(1);
750+
expect(redeem).not.toBeNull();
751+
expect(redeem!.nbtc_pkg).toBe("0xPkg1");
752+
});
753+
754+
it("clearRedeemInputSignId should clear sign_id", async () => {
755+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
756+
await insertUtxo(
757+
storage,
758+
1,
759+
scriptPubkey1,
760+
"dwallet1",
761+
"tx1",
762+
0,
763+
2000,
764+
UtxoStatus.Available,
765+
null,
766+
);
767+
await storage.saveRedeemInputs([
768+
{
769+
redeem_id: 1,
770+
utxo_id: 1,
771+
input_index: 0,
772+
dwallet_id: "dwallet1",
773+
created_at: Date.now(),
774+
},
775+
]);
776+
await storage.updateRedeemInputSig(1, 1, "signId123");
777+
await storage.clearRedeemInputSignId(1, 1);
778+
const inputs = await storage.getRedeemInputs(1);
779+
expect(inputs[0]!.sign_id).toBeNull();
780+
});
781+
782+
it("getRedeemInfoBySignId should return redeem info", async () => {
783+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
784+
await insertUtxo(
785+
storage,
786+
1,
787+
scriptPubkey1,
788+
"dwallet1",
789+
"tx1",
790+
0,
791+
2000,
792+
UtxoStatus.Available,
793+
null,
794+
);
795+
await storage.saveRedeemInputs([
796+
{
797+
redeem_id: 1,
798+
utxo_id: 1,
799+
input_index: 0,
800+
dwallet_id: "dwallet1",
801+
created_at: Date.now(),
802+
},
803+
]);
804+
await storage.updateRedeemInputSig(1, 1, "signId123");
805+
const info = await storage.getRedeemInfoBySignId("signId123");
806+
expect(info).not.toBeNull();
807+
expect(info!.redeem_id).toBe(1);
808+
});
809+
810+
it("markRedeemBroadcasted should update status and btc_tx", async () => {
811+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
812+
await storage.markRedeemBroadcasted(1, "btcTxId123");
813+
const redeem = await db
814+
.prepare("SELECT status, btc_tx FROM nbtc_redeem_requests WHERE redeem_id = ?")
815+
.bind(1)
816+
.first<{ status: string; btc_tx: string }>();
817+
expect(redeem!.status).toBe(RedeemRequestStatus.Broadcasting);
818+
expect(redeem!.btc_tx).toBe("btcTxId123");
819+
});
820+
821+
it("setRedeemFinalized should update status and mark utxos as spent", async () => {
822+
await insertRedeemRequest(storage, 1, "redeemer1", recipientScript, 3000, 1000, "0xSuiTx1");
823+
await insertUtxo(
824+
storage,
825+
1,
826+
scriptPubkey1,
827+
"dwallet1",
828+
"tx1",
829+
0,
830+
2000,
831+
UtxoStatus.Available,
832+
null,
833+
);
834+
await storage.saveRedeemInputs([
835+
{
836+
redeem_id: 1,
837+
utxo_id: 1,
838+
input_index: 0,
839+
dwallet_id: "dwallet1",
840+
created_at: Date.now(),
841+
},
842+
]);
843+
await storage.setRedeemFinalized(1);
844+
const redeem = await db
845+
.prepare("SELECT status FROM nbtc_redeem_requests WHERE redeem_id = ?")
846+
.bind(1)
847+
.first<{ status: string }>();
848+
const utxo = await db
849+
.prepare("SELECT status FROM nbtc_utxos WHERE nbtc_utxo_id = ?")
850+
.bind(1)
851+
.first<{ status: string }>();
852+
expect(redeem!.status).toBe(RedeemRequestStatus.Finalized);
853+
expect(utxo!.status).toBe(UtxoStatus.Spent);
854+
});
679855
});

0 commit comments

Comments
 (0)