Merge pull request #619 from cosmos/617-assert-defined
Separate assertDefined and assertDefinedAndNotNull
This commit is contained in:
commit
a956d79591
@ -53,10 +53,6 @@
|
||||
|
||||
- @cosmjs/utils: Added `assertDefinedAndNotNull`.
|
||||
|
||||
### Removed
|
||||
|
||||
- @cosmjs/utils: `assertDefined` removed in favour of `assertDefinedAndNotNull`.
|
||||
|
||||
## 0.23.2 (2021-01-06)
|
||||
|
||||
### Security
|
||||
|
||||
@ -9,7 +9,7 @@ import {
|
||||
parseRawLog,
|
||||
SigningStargateClient,
|
||||
} from "@cosmjs/stargate";
|
||||
import { assert, assertDefinedAndNotNull } from "@cosmjs/utils";
|
||||
import { assert, assertDefined } from "@cosmjs/utils";
|
||||
import Long from "long";
|
||||
|
||||
import { cosmwasm } from "../codec";
|
||||
@ -395,7 +395,7 @@ describe("WasmExtension", () => {
|
||||
expect(codeId).toBeGreaterThanOrEqual(1);
|
||||
expect(codeId).toBeLessThanOrEqual(200);
|
||||
|
||||
assertDefinedAndNotNull(result.data);
|
||||
assertDefined(result.data);
|
||||
const msgData = fromOneElementArray(result.data);
|
||||
expect(msgData.msgType).toEqual("store-code");
|
||||
expect(MsgStoreCodeResponse.decode(msgData.data!)).toEqual(
|
||||
@ -415,7 +415,7 @@ describe("WasmExtension", () => {
|
||||
const amountAttr = logs.findAttribute(parsedLogs, "transfer", "amount");
|
||||
expect(amountAttr.value).toEqual("1234ucosm,321ustake");
|
||||
|
||||
assertDefinedAndNotNull(result.data);
|
||||
assertDefined(result.data);
|
||||
const msgData = fromOneElementArray(result.data);
|
||||
expect(msgData.msgType).toEqual("instantiate");
|
||||
expect(MsgInstantiateContractResponse.decode(msgData.data!)).toEqual(
|
||||
@ -441,7 +441,7 @@ describe("WasmExtension", () => {
|
||||
value: beneficiaryAddress,
|
||||
});
|
||||
|
||||
assertDefinedAndNotNull(result.data);
|
||||
assertDefined(result.data);
|
||||
const msgData = fromOneElementArray(result.data);
|
||||
expect(msgData.msgType).toEqual("execute");
|
||||
expect(MsgExecuteContractResponse.decode(msgData.data!)).toEqual(
|
||||
|
||||
@ -3,7 +3,7 @@ import { iavlSpec, ics23, tendermintSpec, verifyExistence, verifyNonExistence }
|
||||
import { toAscii, toHex } from "@cosmjs/encoding";
|
||||
import { firstEvent } from "@cosmjs/stream";
|
||||
import { Client as TendermintClient, Header, NewBlockHeaderEvent, ProofOp } from "@cosmjs/tendermint-rpc";
|
||||
import { arrayContentEquals, assert, assertDefinedAndNotNull, isNonNullObject, sleep } from "@cosmjs/utils";
|
||||
import { arrayContentEquals, assert, assertDefined, isNonNullObject, sleep } from "@cosmjs/utils";
|
||||
import { Stream } from "xstream";
|
||||
|
||||
type QueryExtensionSetup<P> = (base: QueryClient) => P;
|
||||
@ -233,7 +233,7 @@ export class QueryClient {
|
||||
// this must return the header for height+1
|
||||
// throws an error if height is 0 or undefined
|
||||
private async getNextHeader(height?: number): Promise<Header> {
|
||||
assertDefinedAndNotNull(height);
|
||||
assertDefined(height);
|
||||
if (height === 0) {
|
||||
throw new Error("Query returned height 0, cannot prove it");
|
||||
}
|
||||
|
||||
@ -1,6 +1,55 @@
|
||||
import { assertDefinedAndNotNull } from "./assert";
|
||||
import { assertDefined, assertDefinedAndNotNull } from "./assert";
|
||||
|
||||
describe("assert", () => {
|
||||
describe("assertDefined", () => {
|
||||
it("passes for simple values", () => {
|
||||
{
|
||||
const value: number | undefined = 123;
|
||||
assertDefined(value);
|
||||
expect(value).toEqual(123);
|
||||
}
|
||||
{
|
||||
const value: string | undefined = "abc";
|
||||
assertDefined(value);
|
||||
expect(value).toEqual("abc");
|
||||
}
|
||||
});
|
||||
|
||||
it("passes for falsy values", () => {
|
||||
{
|
||||
const value: number | undefined = 0;
|
||||
assertDefined(value);
|
||||
expect(value).toEqual(0);
|
||||
}
|
||||
{
|
||||
const value: string | undefined = "";
|
||||
assertDefined(value);
|
||||
expect(value).toEqual("");
|
||||
}
|
||||
{
|
||||
const value: null | undefined = null;
|
||||
assertDefined(value);
|
||||
expect(value).toBeNull();
|
||||
}
|
||||
});
|
||||
|
||||
it("throws for undefined values", () => {
|
||||
{
|
||||
const value: number | undefined = undefined;
|
||||
expect(() => assertDefined(value)).toThrowError("value is undefined");
|
||||
}
|
||||
{
|
||||
let value: string | undefined;
|
||||
expect(() => assertDefined(value)).toThrowError("value is undefined");
|
||||
}
|
||||
});
|
||||
|
||||
it("throws with custom message", () => {
|
||||
const value: number | undefined = undefined;
|
||||
expect(() => assertDefined(value, "Bug in the data source")).toThrowError("Bug in the data source");
|
||||
});
|
||||
});
|
||||
|
||||
describe("assertDefinedAndNotNull", () => {
|
||||
it("passes for simple values", () => {
|
||||
{
|
||||
|
||||
@ -5,6 +5,12 @@ export function assert(condition: any, msg?: string): asserts condition {
|
||||
}
|
||||
}
|
||||
|
||||
export function assertDefined<T>(value: T | undefined, msg?: string): asserts value is T {
|
||||
if (value === undefined) {
|
||||
throw new Error(msg ?? "value is undefined");
|
||||
}
|
||||
}
|
||||
|
||||
export function assertDefinedAndNotNull<T>(value: T | undefined | null, msg?: string): asserts value is T {
|
||||
if (value === undefined || value === null) {
|
||||
throw new Error(msg ?? "value is undefined or null");
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
export { arrayContentEquals } from "./arrays";
|
||||
export { assert, assertDefinedAndNotNull } from "./assert";
|
||||
export { assert, assertDefined, assertDefinedAndNotNull } from "./assert";
|
||||
export { sleep } from "./sleep";
|
||||
export { isNonNullObject, isUint8Array } from "./typechecks";
|
||||
|
||||
1
packages/utils/types/assert.d.ts
vendored
1
packages/utils/types/assert.d.ts
vendored
@ -1,4 +1,5 @@
|
||||
export declare function assert(condition: any, msg?: string): asserts condition;
|
||||
export declare function assertDefined<T>(value: T | undefined, msg?: string): asserts value is T;
|
||||
export declare function assertDefinedAndNotNull<T>(
|
||||
value: T | undefined | null,
|
||||
msg?: string,
|
||||
|
||||
2
packages/utils/types/index.d.ts
vendored
2
packages/utils/types/index.d.ts
vendored
@ -1,4 +1,4 @@
|
||||
export { arrayContentEquals } from "./arrays";
|
||||
export { assert, assertDefinedAndNotNull } from "./assert";
|
||||
export { assert, assertDefined, assertDefinedAndNotNull } from "./assert";
|
||||
export { sleep } from "./sleep";
|
||||
export { isNonNullObject, isUint8Array } from "./typechecks";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user