postchain-client
Version:
Client library for accessing a Postchain node through REST.
91 lines • 3.32 kB
JavaScript
import { validateTransactionStatusReponse } from "../../../src/blockchainClient/validation/transactionStatusReponse";
import { ResponseStatus, AnchoringStatus } from "../../../src/blockchainClient/enums";
describe("validateTransactionStatusReponse", () => {
it("validates a valid transaction status response", () => {
const validInput = {
statusCode: 200,
result: {
status: ResponseStatus.Confirmed,
},
};
const result = validateTransactionStatusReponse(validInput);
expect(result).toEqual({
statusCode: 200,
status: ResponseStatus.Confirmed,
});
});
it("validates a valid anchoring status object", () => {
const validInput = {
statusCode: 200,
result: {
status: AnchoringStatus.ClusterAnchored,
},
};
const result = validateTransactionStatusReponse(validInput);
expect(result).toEqual({
statusCode: 200,
status: AnchoringStatus.ClusterAnchored,
});
});
it("validates an object with rejectReason", () => {
const validInput = {
statusCode: 400,
result: {
status: ResponseStatus.Confirmed,
rejectReason: "Invalid input",
},
};
const result = validateTransactionStatusReponse(validInput);
expect(result).toEqual({
statusCode: 400,
status: ResponseStatus.Confirmed,
rejectReason: "Invalid input",
});
});
it("validates an object with null statusCode", () => {
const validInput = {
statusCode: null,
result: {
status: ResponseStatus.Confirmed,
},
};
const result = validateTransactionStatusReponse(validInput);
expect(result).toEqual({
statusCode: null,
status: ResponseStatus.Confirmed,
});
});
it("throws error for invalid status", () => {
const invalidInput = {
statusCode: 200,
result: {
status: "INVALID_STATUS",
},
};
expect(() => validateTransactionStatusReponse(invalidInput)).toThrow("Model does not match TransactionStatusReponse");
});
it("throws error for missing result", () => {
const invalidInput = {
statusCode: 200,
};
expect(() => validateTransactionStatusReponse(invalidInput)).toThrow("Model does not match TransactionStatusReponse");
});
it("throws error for missing status", () => {
const invalidInput = {
statusCode: 200,
result: {},
};
expect(() => validateTransactionStatusReponse(invalidInput)).toThrow("Model does not match TransactionStatusReponse");
});
it("throws error for invalid rejectReason type", () => {
const invalidInput = {
statusCode: 200,
result: {
status: ResponseStatus.Confirmed,
rejectReason: 123,
},
};
expect(() => validateTransactionStatusReponse(invalidInput)).toThrow("Model does not match TransactionStatusReponse");
});
});
//# sourceMappingURL=statusObject.test.js.map