UNPKG

moy-dom

Version:

A flexiable Virtual DOM library for building modern web interface.

232 lines (218 loc) 4.47 kB
import listDiff from '../../src/listDiff' describe('test listDiff with keys', () => { test('remove', () => { expect( listDiff([ {key: 0}, {key: 2}, {key: 3}, {key: 4}, ], [ {key: 0}, {key: 1}, {key: 2}, {key: 3}, {key: 4}, ]) ).toEqual({ changes: [{ type: 0, index: 1, }], children: [{key: 0}, null, {key: 2}, {key: 3}, {key: 4}], }) }) test('move', () => { expect( listDiff([ {key: 0}, {key: 1}, {key: 2}, {key: 3}, {key: 4}, ], [ {key: 0}, {key: 2}, {key: 1}, {key: 3}, {key: 4}, ]) ).toEqual({ changes: [{ type: 1, fromIndex: 2, toIndex: 1, }], children: [{key: 0}, {key: 2}, {key: 1}, {key: 3}, {key: 4}], }) }) test('insert', () => { expect( listDiff([ {key: 0}, {key: 1}, {key: 5}, {key: 2}, {key: 3}, {key: 4}, ], [ {key: 0}, {key: 1}, {key: 2}, {key: 3}, {key: 4}, ]) ).toEqual({ changes: [{ type: 2, index: 2, item: { key: 5, }, }], children: [{key: 0}, {key: 1}, {key: 2}, {key: 3}, {key: 4}], }) }) test('append', () => { expect( listDiff([ {key: 0}, {key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}, ], [ {key: 0}, {key: 1}, {key: 2}, {key: 3}, {key: 4}, ]) ).toEqual({ changes: [{ type: 3, item: { key: 5 }, }], children: [{key: 0}, {key: 1}, {key: 2}, {key: 3}, {key: 4}], }) }) }) describe('test listDiff without keys', () => { test('remove', () => { expect( listDiff([ 0, 2, 3, 4, ], [0, 1, 2, 3, 4]) ).toEqual({ changes: [{ type: 0, index: 4, }], children: [0, 2, 3, 4, null], }) }) // without key cannot move test('expect move, but nothing happened', () => { expect( listDiff([ 0, 1, 2, 3, 4, ], [ 0, 2, 1, 3, 4 ]) ).toEqual({ changes: [], children: [0, 1, 2, 3, 4], }) }) // without key cannot insert test('expect insert, but got append', () => { expect( listDiff([ 0, 1, 5, 2, 3, 4, ], [ 0, 1, 2, 3, 4, ]) ).toEqual({ changes: [{ type: 3, item: 4, }], children: [0, 1, 5, 2, 3], }) }) test('append', () => { expect( listDiff([ 0, 1, 2, 3, 4, 5, ], [ 0, 1, 2, 3, 4, ]) ).toEqual({ changes: [{ type: 3, item: 5, }], children: [0, 1, 2, 3, 4], }) }) }) describe('text listDiff with keys and frees', () => { test('remove', () => { expect( listDiff([ 0, 2, {key: 3}, 4, ], [ 0, {key: 1}, 2, {key: 3}, 4, ]) ).toEqual({ changes: [{ type: 0, index: 1, }], children: [0, null, 2, {key: 3}, 4], }) }) test('move', () => { expect( listDiff([ 0, {key: 1}, 2, {key: 3}, 4, ], [ 0, {key: 3}, 2, {key: 1}, 4, ]) ).toEqual({ changes: [{ type: 1, fromIndex: 3, toIndex: 1, }], children: [0, {key: 3}, 2, {key: 1}, 4], }) }) test('insert', () => { expect( listDiff([ 0, {key: 1}, 2, {key: 5}, {key: 3}, 4, ], [ 0, {key: 1}, 2, {key: 3}, 4, ]) ).toEqual({ changes: [{ type: 2, index: 3, item: { key: 5, }, }], children: [0, {key: 1}, 2, {key: 3}, 4], }) }) test('append', () => { expect( listDiff([ 0, {key: 1}, 2, {key: 3}, 4, {key: 5}, ], [ 0, {key: 1}, 2, {key: 3}, 4, ]) ).toEqual({ changes: [{ type: 3, item: { key: 5, }, }], children: [0, {key: 1}, 2, {key: 3}, 4], }) }) }) describe('reset test for jest', () => { test('move two list item', () => { expect( listDiff([ {key: 0}, {key: 1}, {key: 2}, {key: 3}, {key: 4}, ], [ {key: 4}, {key: 2}, {key: 1}, {key: 3}, {key: 0}, ]) ).toEqual({ changes: [{ type: 1, fromIndex: 4, toIndex: 0, }, { type: 1, fromIndex: 2, toIndex: 1, }], children: [{key: 4}, {key: 2}, {key: 1}, {key: 3}, {key: 0}], }) }) })