56 lines
2.0 KiB
TypeScript
56 lines
2.0 KiB
TypeScript
import { expect, describe, it } from "@jest/globals";
|
|
import {
|
|
Web3SolanaSlotRepository,
|
|
RateLimitedSolanaSlotRepository,
|
|
} from "../../../src/infrastructure/repositories";
|
|
|
|
const repoMock = {
|
|
getSlot: () => Promise.resolve(100),
|
|
getLatestSlot: () => Promise.resolve(100),
|
|
getBlock: () => Promise.resolve({ blockTime: 100, transactions: [] }),
|
|
getSignaturesForAddress: () => Promise.resolve([]),
|
|
getTransactions: () => Promise.resolve([]),
|
|
} as any as Web3SolanaSlotRepository;
|
|
|
|
describe("RateLimitedSolanaSlotRepository", () => {
|
|
describe("getLatestSlot", () => {
|
|
it("should fail when ratelimit is exceeded", async () => {
|
|
const repository = new RateLimitedSolanaSlotRepository(repoMock, { period: 1000, limit: 1 });
|
|
|
|
await repository.getLatestSlot("confirmed");
|
|
await expect(repository.getLatestSlot("confirmed")).rejects.toThrowError();
|
|
});
|
|
});
|
|
|
|
describe("getBlock", () => {
|
|
it("should fail when ratelimit is exceeded", async () => {
|
|
const repository = new RateLimitedSolanaSlotRepository(repoMock, { period: 1000, limit: 1 });
|
|
|
|
await repository.getBlock(1);
|
|
const failure = await repository.getBlock(1);
|
|
|
|
expect(failure.getError()).toHaveProperty("message", "Ratelimited");
|
|
});
|
|
});
|
|
|
|
describe("getSignaturesForAddress", () => {
|
|
it("should fail when ratelimit is exceeded", async () => {
|
|
const repository = new RateLimitedSolanaSlotRepository(repoMock, { period: 1000, limit: 1 });
|
|
|
|
await repository.getSignaturesForAddress("address", "before", "after", 1);
|
|
await expect(
|
|
repository.getSignaturesForAddress("address", "before", "after", 1)
|
|
).rejects.toThrowError();
|
|
});
|
|
});
|
|
|
|
describe("getTransactions", () => {
|
|
it("should fail when ratelimit is exceeded", async () => {
|
|
const repository = new RateLimitedSolanaSlotRepository(repoMock, { period: 1000, limit: 1 });
|
|
|
|
await repository.getTransactions([]);
|
|
await expect(repository.getTransactions([])).rejects.toThrowError();
|
|
});
|
|
});
|
|
});
|