Skip to content

Commit

Permalink
add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mike-marcacci committed Jan 30, 2018
1 parent 7233e6f commit 6acdeaf
Showing 1 changed file with 38 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,37 @@ describe('recycleNodesInto', () => {
expect(recycled).toBe(prevData);
});

it('recycles equal parent objects with equal leaf objects', () => {
const prevData = {foo: {bar: 1}};
const nextData = {foo: {bar: 1}};
const recycled = recycleNodesInto(prevData, nextData);

expect(recycled).toBe(prevData);
expect(recycled.bar).toBe(prevData.bar);
});

it('does not mutate frozen equal parent objects with equal leaf objects', () => {
const prevData = {foo: {bar: 1}};
const nextData = {foo: {bar: 1}};
Object.freeze(nextData);
Object.freeze(nextData.foo);
const recycled = recycleNodesInto(prevData, nextData);

expect(recycled).toBe(prevData);
expect(recycled.bar).toBe(prevData.bar);
});

it('does not mutate frozen unequal parent objects with equal leaf objects', () => {
const prevData = {foo: {bar: 1}, baz: 2};
const nextData = {foo: {bar: 1}, baz: 200};
Object.freeze(nextData);
Object.freeze(nextData.foo);
const recycled = recycleNodesInto(prevData, nextData);

expect(recycled).not.toBe(prevData);
expect(recycled.bar).toBe(prevData.bar);
});

it('does not recycle arrays as objects', () => {
const prevData = [1, 2];
const nextData = {0: 1, 1: 2};
Expand Down Expand Up @@ -142,6 +173,13 @@ describe('recycleNodesInto', () => {
expect(recycleNodesInto(prevData, nextData)).toBe(prevData);
});

it('recycles arrays with equal objects without mutating frozen `nextData`', () => {
const prevData = [{foo: 1}, {bar: 2}];
const nextData = [{foo: 1}, {bar: 2}];
Object.freeze(nextData);
expect(recycleNodesInto(prevData, nextData)).toBe(prevData);
});

it('recycles arrays without mutating `prevData`', () => {
const prevItem = {foo: 1};
const prevData = [prevItem];
Expand Down

0 comments on commit 6acdeaf

Please sign in to comment.