Files
firecrawl/apps/api/src/lib/__tests__/deduplicate-obs-array.test.ts
T

226 lines
5.2 KiB
TypeScript
Raw Normal View History

import { deduplicateObjectsArray } from "../extract/helpers/deduplicate-objs-array";
describe("deduplicateObjectsArray", () => {
it("should deduplicate the array", async () => {
const objArray = {
"lawyers": [
{
"name": "James D. Schull",
"email": null,
"title": "Personal Injury Attorney",
"phone-number": null,
"practice-areas": [
{
"area": "Personal Injury"
}
]
},
{
"name": "James D. Schull",
"email": null,
"title": "Personal Injury Attorney",
"phone-number": null,
"practice-areas": [
{
"area": "Personal Injury"
}
]
},
{
"name": "James D. Schull",
"email": null,
"title": "Personal Injury Attorney",
"phone-number": null,
"practice-areas": [
{
"area": "Personal Injury"
}
]
}
]
}
const expected = {
"lawyers": [
{
"name": "James D. Schull",
"email": null,
"title": "Personal Injury Attorney",
"phone-number": null,
"practice-areas": [
{
"area": "Personal Injury"
}
]
}
]
}
const result = await deduplicateObjectsArray(objArray);
expect(result).toEqual(expected);
})
it("should not deduplicate if not necessary", async () => {
const objArray = {
"lawyers": [
{
"name": "James D. Schull",
"email": null,
"title": "Personal Injury Attorney",
"phone-number": null,
"practice-areas": [
{
"area": "Personal Injury"
}
]
},
{
"name": "John Doe",
"email": null,
"title": "Personal Injury Attorney",
"phone-number": null,
"practice-areas": [
{
"area": "Personal Injury"
}
]
}
]
}
const result = await deduplicateObjectsArray(objArray);
expect(result).toEqual(objArray);
})
it("should handle an empty array", async () => {
const objArray = { "lawyers": [] };
const expected = { "lawyers": [] };
const result = await deduplicateObjectsArray(objArray);
expect(result).toEqual(expected);
});
it("should handle objects with different properties", async () => {
const objArray = {
"lawyers": [
{
"name": "James D. Schull",
"email": "james@example.com",
"title": "Personal Injury Attorney"
},
{
"name": "James D. Schull",
"email": "james@example.com",
"title": "Personal Injury Attorney",
"phone-number": "123-456-7890"
}
]
};
const expected = {
"lawyers": [
{
"name": "James D. Schull",
"email": "james@example.com",
"title": "Personal Injury Attorney"
},
{
"name": "James D. Schull",
"email": "james@example.com",
"title": "Personal Injury Attorney",
"phone-number": "123-456-7890"
}
]
};
const result = await deduplicateObjectsArray(objArray);
expect(result).toEqual(expected);
});
it("should handle objects with same properties but different values", async () => {
const objArray = {
"lawyers": [
{
"name": "James D. Schull",
"email": "james1@example.com",
"title": "Personal Injury Attorney"
},
{
"name": "James D. Schull",
"email": "james2@example.com",
"title": "Personal Injury Attorney"
}
]
};
const expected = {
"lawyers": [
{
"name": "James D. Schull",
"email": "james1@example.com",
"title": "Personal Injury Attorney"
},
{
"name": "James D. Schull",
"email": "james2@example.com",
"title": "Personal Injury Attorney"
}
]
};
const result = await deduplicateObjectsArray(objArray);
expect(result).toEqual(expected);
});
it("should handle nested identical objects", async () => {
const objArray = {
"lawyers": [
{
"name": "James D. Schull",
"email": null,
"title": "Personal Injury Attorney",
"practice-areas": [
{
"area": "Personal Injury"
}
]
},
{
"name": "James D. Schull",
"email": null,
"title": "Personal Injury Attorney",
"practice-areas": [
{
"area": "Personal Injury"
}
]
}
]
};
const expected = {
"lawyers": [
{
"name": "James D. Schull",
"email": null,
"title": "Personal Injury Attorney",
"practice-areas": [
{
"area": "Personal Injury"
}
]
}
]
};
const result = await deduplicateObjectsArray(objArray);
expect(result).toEqual(expected);
});
})