jsonUtils.test.ts•1.53 kB
import { isJSONObjectString, jsonStringToFlatObject } from "../jsonUtils";
describe("isJSONObjectString", () => {
it("detects invalid JSON and JSON that's not objects", () => {
expect(isJSONObjectString("")).toEqual(false);
expect(isJSONObjectString("123")).toEqual(false);
expect(isJSONObjectString("[]")).toEqual(false);
expect(isJSONObjectString("[1, 2, 3]")).toEqual(false);
expect(isJSONObjectString("{")).toEqual(false);
expect(isJSONObjectString("{]")).toEqual(false);
expect(isJSONObjectString("{1: 2}")).toEqual(false);
expect(isJSONObjectString("{1, 2}")).toEqual(false);
expect(isJSONObjectString("{1: 2, 3}")).toEqual(false);
});
it("detects valid JSON objects", () => {
expect(isJSONObjectString("{}")).toEqual(true);
expect(isJSONObjectString('{"a": 1}')).toEqual(true);
expect(isJSONObjectString('{"a": "b"}')).toEqual(true);
expect(isJSONObjectString('{"a": {"b": 1}}')).toEqual(true);
expect(isJSONObjectString('{"a": [1, 2, 3]}')).toEqual(true);
});
});
describe("jsonStringToFlatObject", () => {
it("flattens objects", () => {
expect(jsonStringToFlatObject("{}")).toEqual({});
expect(jsonStringToFlatObject('{"a": 1}')).toEqual({ a: 1 });
expect(jsonStringToFlatObject('{"a": {"b": 1}}')).toEqual({ "a.b": 1 });
expect(jsonStringToFlatObject('{"a": {"b": {"c": 1}}}')).toEqual({
"a.b.c": 1,
});
expect(jsonStringToFlatObject('{"a": {"b": 1}, "c": 2}')).toEqual({
"a.b": 1,
c: 2,
});
});
});