fix(medusa-js): Fix stringifyNullProperties util (#1766)

**What**
Changes the order of object type evaluation to properly handle null properties.

Previously, `stringifyNullProperties({ test: null })` would fail in the 2nd iteration due to an attempt to iterate `null` in `Object.keys(obj)`.
This commit is contained in:
Oliver Windall Juhl
2022-07-02 17:29:27 +02:00
committed by GitHub
parent e53c06eab8
commit 7bee57f7c5
2 changed files with 33 additions and 4 deletions

View File

@@ -3,12 +3,10 @@ export function stringifyNullProperties<T extends object>(input: T): T {
const res = {} as T
Object.keys(obj).reduce((acc: T, key: string) => {
if (typeof obj[key] === "object") {
acc[key] = convertProperties(obj[key])
}
if (obj[key] === null) {
acc[key] = "null"
} else if (typeof obj[key] === "object") {
acc[key] = convertProperties(obj[key])
} else {
acc[key] = obj[key]
}

View File

@@ -0,0 +1,31 @@
import { stringifyNullProperties } from "../../src/utils"
describe("stringifyNullProperties", () => {
test("returns empty object on no props", () => {
const result = stringifyNullProperties({})
expect(result).toEqual({})
})
test("successfully stringifies null property", () => {
const result = stringifyNullProperties({ test: null })
expect(result).toEqual({ test: "null" })
})
test("successfully stringifies nested null property", () => {
const result = stringifyNullProperties({
test: { test_2: { test_3: null } },
another_test: "test",
})
expect(result).toEqual({
test: { test_2: { test_3: "null" } },
another_test: "test",
})
})
test("successfully stringifies string property", () => {
const result = stringifyNullProperties({
test: "test",
})
expect(result).toEqual({ test: "test" })
})
})