import { getObjectDiff } from "../src/object-diff" ;
describe ( "getObjectDiff" , ( ) = > {
// it("returns an empty diff if no objects are provided", () => {
// expect(getObjectDiff(null, null)).toStrictEqual({
// type: "object",
// status: "equal",
// diff: [],
// });
// });
// it("consider previous object as completely deleted if no next object is provided", () => {
// expect(
// getObjectDiff(
// { name: "joe", age: 54, hobbies: ["golf", "football"] },
// null
// )
// ).toStrictEqual({
// type: "object",
// status: "deleted",
// diff: [
// {
// property: "name",
// previousValue: "joe",
// currentValue: undefined,
// status: "deleted",
// },
// {
// property: "age",
// previousValue: 54,
// currentValue: undefined,
// status: "deleted",
// },
// {
// property: "hobbies",
// previousValue: ["golf", "football"],
// currentValue: undefined,
// status: "deleted",
// },
// ],
// });
// });
// it("consider next object as completely added if no previous object is provided", () => {
// expect(
// getObjectDiff(null, {
// name: "joe",
// age: 54,
// hobbies: ["golf", "football"],
// })
// ).toStrictEqual({
// type: "object",
// status: "added",
// diff: [
// {
// property: "name",
// previousValue: undefined,
// currentValue: "joe",
// status: "added",
// },
// {
// property: "age",
// previousValue: undefined,
// currentValue: 54,
// status: "added",
// },
// {
// property: "hobbies",
// previousValue: undefined,
// currentValue: ["golf", "football"],
// status: "added",
// },
// ],
// });
// });
// it("detects changed between two objects", () => {
// expect(
// getObjectDiff(
// {
// id: 54,
// user: {
// name: "joe",
// member: true,
// hobbies: ["golf", "football"],
// age: 66,
// },
// },
// {
// id: 54,
// user: {
// name: "joe",
// member: false,
// hobbies: ["golf", "chess"],
// age: 66,
// },
// }
// )
// ).toStrictEqual({
// type: "object",
// status: "updated",
// diff: [
// {
// property: "id",
// previousValue: 54,
// currentValue: 54,
// status: "equal",
// },
// {
// property: "user",
// previousValue: {
// name: "joe",
// member: true,
// hobbies: ["golf", "football"],
// age: 66,
// },
// currentValue: {
// name: "joe",
// member: false,
// hobbies: ["golf", "chess"],
// age: 66,
// },
// status: "updated",
// subPropertiesDiff: [
// {
// name: "name",
// previousValue: "joe",
// currentValue: "joe",
// status: "equal",
// },
// {
// name: "member",
// previousValue: true,
// currentValue: false,
// status: "updated",
// },
// {
// name: "hobbies",
// previousValue: ["golf", "football"],
// currentValue: ["golf", "chess"],
// status: "updated",
// },
// {
// name: "age",
// previousValue: 66,
// currentValue: 66,
// status: "equal",
// },
// ],
// },
// ],
// });
// });
it ( "detects changed between two deep nested objects" , ( ) = > {
console . log (
"res" ,
JSON . stringify (
getObjectDiff (
{
id : 54 ,
user : {
name : "joe" ,
data : {
member : true ,
hobbies : {
football : [ "psg" ] ,
rugby : [ "france" ] ,
} ,
} ,
} ,
} ,
{
id : 54 ,
user : {
name : "joe" ,
data : {
member : true ,
hobbies : {
football : [ "psg" , "nantes" ] ,
rugby : [ "france" ] ,
} ,
} ,
} ,
}
) ,
null ,
2
)
) ;
expect (
getObjectDiff (
{
id : 54 ,
user : {
name : "joe" ,
data : {
member : true ,
hobbies : {
football : [ "psg" ] ,
rugby : [ "france" ] ,
} ,
} ,
} ,
} ,
{
id : 54 ,
user : {
name : "joe" ,
data : {
member : true ,
hobbies : {
football : [ "psg" , "nantes" ] ,
rugby : [ "france" ] ,
} ,
} ,
} ,
}
)
) . toStrictEqual ( {
type : "object" ,
status : "updated" ,
diff : [
{
property : "id" ,
previousValue : 54 ,
currentValue : 54 ,
status : "equal" ,
} ,
{
property : "user" ,
previousValue : {
name : "joe" ,
data : {
member : true ,
hobbies : {
football : [ "psg" ] ,
rugby : [ "france" ] ,
} ,
} ,
} ,
currentValue : {
name : "joe" ,
data : {
member : true ,
hobbies : {
football : [ "psg" , "nantes" ] ,
rugby : [ "france" ] ,
} ,
} ,
} ,
status : "updated" ,
subPropertiesDiff : [
{
name : "name" ,
previousValue : "joe" ,
currentValue : "joe" ,
status : "equal" ,
} ,
{
name : "data" ,
previousValue : {
member : true ,
hobbies : {
football : [ "psg" ] ,
rugby : [ "france" ] ,
} ,
} ,
currentValue : {
member : true ,
hobbies : {
football : [ "psg" , "nantes" ] ,
rugby : [ "france" ] ,
} ,
} ,
status : "updated" ,
subDiff : [
{
name : "member" ,
previousValue : true ,
currentValue : true ,
status : "equal" ,
} ,
{
name : "hobbies" ,
previousValue : {
football : [ "psg" ] ,
rugby : [ "france" ] ,
} ,
currentValue : {
football : [ "psg" , "nantes" ] ,
rugby : [ "france" ] ,
} ,
status : "updated" ,
subDiff : [
{
name : "football" ,
previousValue : [ "psg" ] ,
currentValue : [ "psg" , "nantes" ] ,
status : "updated" , // error the algo says it's equal...
} ,
{
name : "rugby" ,
previousValue : [ "france" ] ,
currentValue : [ "france" ] ,
status : "equal" ,
} ,
] ,
} ,
] ,
} ,
] ,
} ,
] ,
} ) ;
} ) ;
} ) ;