refactor: create normalizeSDKResponse helper and replace scattered patterns across 37 files
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
import { describe, expect, it } from "bun:test"
|
||||
import { normalizeSDKResponse } from "./normalize-sdk-response"
|
||||
|
||||
describe("normalizeSDKResponse", () => {
|
||||
it("returns data array when response includes data", () => {
|
||||
//#given
|
||||
const response = { data: [{ id: "1" }] }
|
||||
|
||||
//#when
|
||||
const result = normalizeSDKResponse(response, [] as Array<{ id: string }>)
|
||||
|
||||
//#then
|
||||
expect(result).toEqual([{ id: "1" }])
|
||||
})
|
||||
|
||||
it("returns fallback array when data is missing", () => {
|
||||
//#given
|
||||
const response = {}
|
||||
const fallback = [{ id: "fallback" }]
|
||||
|
||||
//#when
|
||||
const result = normalizeSDKResponse(response, fallback)
|
||||
|
||||
//#then
|
||||
expect(result).toEqual(fallback)
|
||||
})
|
||||
|
||||
it("returns response array directly when SDK returns plain array", () => {
|
||||
//#given
|
||||
const response = [{ id: "2" }]
|
||||
|
||||
//#when
|
||||
const result = normalizeSDKResponse(response, [] as Array<{ id: string }>)
|
||||
|
||||
//#then
|
||||
expect(result).toEqual([{ id: "2" }])
|
||||
})
|
||||
|
||||
it("returns response when data missing and preferResponseOnMissingData is true", () => {
|
||||
//#given
|
||||
const response = { value: "legacy" }
|
||||
|
||||
//#when
|
||||
const result = normalizeSDKResponse(response, { value: "fallback" }, { preferResponseOnMissingData: true })
|
||||
|
||||
//#then
|
||||
expect(result).toEqual({ value: "legacy" })
|
||||
})
|
||||
|
||||
it("returns fallback for null response", () => {
|
||||
//#given
|
||||
const response = null
|
||||
|
||||
//#when
|
||||
const result = normalizeSDKResponse(response, [] as string[])
|
||||
|
||||
//#then
|
||||
expect(result).toEqual([])
|
||||
})
|
||||
|
||||
it("returns object fallback for direct data nullish pattern", () => {
|
||||
//#given
|
||||
const response = { data: undefined as { connected: string[] } | undefined }
|
||||
const fallback = { connected: [] }
|
||||
|
||||
//#when
|
||||
const result = normalizeSDKResponse(response, fallback)
|
||||
|
||||
//#then
|
||||
expect(result).toEqual(fallback)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user