moy-dom
Version:
A flexiable Virtual DOM library for building modern web interface.
232 lines (218 loc) • 4.47 kB
JavaScript
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}],
})
})
})