source: node_modules/@reduxjs/toolkit/src/query/tests/copyWithStructuralSharing.test.ts

Last change on this file was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 2.3 KB
Line 
1import { copyWithStructuralSharing } from '@reduxjs/toolkit/query'
2
3test('equal object from JSON Object', () => {
4 const json = JSON.stringify({
5 a: { b: { c: { d: 1, e: '2', f: true }, g: false }, h: null },
6 i: null,
7 })
8 const objA = JSON.parse(json)
9 const objB = JSON.parse(json)
10 expect(objA).toStrictEqual(objB)
11 expect(objA).not.toBe(objB)
12 const newCopy = copyWithStructuralSharing(objA, objB)
13 expect(newCopy).toBe(objA)
14 expect(newCopy).not.toBe(objB)
15 expect(newCopy).toStrictEqual(objB)
16})
17
18test('equal object from JSON Object', () => {
19 const json = JSON.stringify({
20 a: { b: { c: { d: 1, e: '2', f: true }, g: false }, h: null },
21 i: null,
22 })
23 const objA = JSON.parse(json)
24 const objB = JSON.parse(json)
25 objB.a.h = 4
26 expect(objA).not.toStrictEqual(objB)
27 expect(objA).not.toBe(objB)
28 expect(objA.a.b).toStrictEqual(objB.a.b)
29 expect(objA.a.b).not.toBe(objB.a.b)
30
31 const newCopy = copyWithStructuralSharing(objA, objB)
32 expect(newCopy).not.toBe(objA)
33 expect(newCopy).not.toStrictEqual(objA)
34 expect(newCopy).toStrictEqual(objB)
35
36 expect(newCopy.a.b).toBe(objA.a.b)
37 expect(newCopy.a.b).not.toBe(objB.a.b)
38 expect(newCopy.a.b).toStrictEqual(objB.a.b)
39})
40
41test('equal object from JSON Array', () => {
42 const json = JSON.stringify([
43 1,
44 'a',
45 { 2: 'b' },
46 { 3: { 4: 'c' }, d: null },
47 null,
48 5,
49 ])
50 const objA = JSON.parse(json)
51 const objB = JSON.parse(json)
52
53 expect(objA).toStrictEqual(objB)
54 expect(objA).not.toBe(objB)
55 const newCopy = copyWithStructuralSharing(objA, objB)
56 expect(newCopy).toBe(objA)
57 expect(newCopy).not.toBe(objB)
58 expect(newCopy).toStrictEqual(objB)
59})
60
61test('equal object from JSON Array', () => {
62 const json = JSON.stringify([
63 1,
64 'a',
65 { 2: 'b' },
66 { 3: { 4: 'c' }, d: null },
67 null,
68 5,
69 ])
70 const objA = JSON.parse(json)
71 const objB = JSON.parse(json)
72 objB[2][2] = 'x'
73
74 expect(objA).not.toStrictEqual(objB)
75 expect(objA).not.toBe(objB)
76 const newCopy = copyWithStructuralSharing(objA, objB)
77 expect(newCopy).not.toBe(objA)
78 expect(newCopy).not.toBe(objB)
79 expect(newCopy).toStrictEqual(objB)
80
81 expect(newCopy[3]).toBe(objA[3])
82 expect(newCopy[3]).not.toBe(objB[3])
83 expect(newCopy[3]).toStrictEqual(objB[3])
84
85 expect(newCopy[2]).not.toBe(objA[2])
86 expect(newCopy[2]).not.toBe(objB[2])
87 expect(newCopy[2]).toStrictEqual(objB[2])
88})
Note: See TracBrowser for help on using the repository browser.