Skip to content

Commit b29ba40

Browse files
Update flattenAttributes.test.ts
1 parent f508bf5 commit b29ba40

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

packages/core/test/flattenAttributes.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,29 @@ describe("flattenAttributes", () => {
156156

157157
expect(flattenAttributes(obj, "retry.byStatus")).toEqual(expected);
158158
});
159+
160+
it("handles circular references correctly", () => {
161+
const user = { name: "Alice" };
162+
user["blogPosts"] = [{ title: "Post 1", author: user }]; // Circular reference
163+
164+
const result = flattenAttributes(user);
165+
expect(result).toEqual({
166+
"name": "Alice",
167+
"blogPosts.[0].title": "Post 1",
168+
"blogPosts.[0].author": "$@circular((",
169+
});
170+
});
171+
172+
it("handles nested circular references correctly", () => {
173+
const user = { name: "Bob" };
174+
user["friends"] = [user]; // Circular reference
175+
176+
const result = flattenAttributes(user);
177+
expect(result).toEqual({
178+
"name": "Bob",
179+
"friends.[0]": "$@circular((",
180+
});
181+
});
159182
});
160183

161184
describe("unflattenAttributes", () => {
@@ -223,4 +246,18 @@ describe("unflattenAttributes", () => {
223246
};
224247
expect(unflattenAttributes(flattened)).toEqual(expected);
225248
});
249+
250+
it("rehydrates circular references correctly", () => {
251+
const flattened = {
252+
"name": "Alice",
253+
"blogPosts.[0].title": "Post 1",
254+
"blogPosts.[0].author": "$@circular((",
255+
};
256+
257+
const result = unflattenAttributes(flattened);
258+
expect(result).toEqual({
259+
name: "Alice",
260+
blogPosts: [{ title: "Post 1", author: "[Circular Reference]" }],
261+
});
262+
});
226263
});

0 commit comments

Comments
 (0)