Unit test: UndoManager
This commit is contained in:
parent
44e5b625a9
commit
82a398487b
2 changed files with 77 additions and 2 deletions
33
.vscode/launch.json
vendored
33
.vscode/launch.json
vendored
|
@ -20,6 +20,35 @@
|
||||||
"<node_internals>/**"
|
"<node_internals>/**"
|
||||||
],
|
],
|
||||||
"type": "pwa-node"
|
"type": "pwa-node"
|
||||||
}
|
},
|
||||||
]
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Jest: run all tests",
|
||||||
|
"program": "${workspaceRoot}/webapp/node_modules/jest/bin/jest.js",
|
||||||
|
"cwd": "${workspaceRoot}/webapp",
|
||||||
|
"args": [
|
||||||
|
"--verbose",
|
||||||
|
"-i",
|
||||||
|
"--no-cache"
|
||||||
|
],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Jest: run current file",
|
||||||
|
"program": "${workspaceRoot}/webapp/node_modules/jest/bin/jest.js",
|
||||||
|
"cwd": "${workspaceRoot}/webapp",
|
||||||
|
"args": [
|
||||||
|
"${fileBasename}",
|
||||||
|
"--verbose",
|
||||||
|
"-i",
|
||||||
|
"--no-cache",
|
||||||
|
],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen"
|
||||||
|
},
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
46
webapp/src/undoManager.test.ts
Normal file
46
webapp/src/undoManager.test.ts
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See LICENSE.txt for license information.
|
||||||
|
|
||||||
|
import undoManager from './undomanager'
|
||||||
|
import {Utils} from './utils'
|
||||||
|
|
||||||
|
test('Basic undo/redo', async () => {
|
||||||
|
expect(!undoManager.canUndo).toBe(true)
|
||||||
|
expect(!undoManager.canRedo).toBe(true)
|
||||||
|
|
||||||
|
const values: string[] = []
|
||||||
|
|
||||||
|
await undoManager.perform(
|
||||||
|
async () => {
|
||||||
|
values.push('a')
|
||||||
|
},
|
||||||
|
async () => {
|
||||||
|
values.pop()
|
||||||
|
},
|
||||||
|
'test',
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(undoManager.canUndo).toBe(true)
|
||||||
|
expect(undoManager.canRedo).toBe(false)
|
||||||
|
expect(Utils.arraysEqual(values, ['a'])).toBe(true)
|
||||||
|
expect(undoManager.undoDescription).toBe('test')
|
||||||
|
expect(undoManager.redoDescription).toBe(undefined)
|
||||||
|
|
||||||
|
await undoManager.undo()
|
||||||
|
expect(undoManager.canUndo).toBe(false)
|
||||||
|
expect(undoManager.canRedo).toBe(true)
|
||||||
|
expect(Utils.arraysEqual(values, [])).toBe(true)
|
||||||
|
expect(undoManager.undoDescription).toBe(undefined)
|
||||||
|
expect(undoManager.redoDescription).toBe('test')
|
||||||
|
|
||||||
|
await undoManager.redo()
|
||||||
|
expect(undoManager.canUndo).toBe(true)
|
||||||
|
expect(undoManager.canRedo).toBe(false)
|
||||||
|
expect(Utils.arraysEqual(values, ['a'])).toBe(true)
|
||||||
|
|
||||||
|
await undoManager.clear()
|
||||||
|
expect(undoManager.canUndo).toBe(false)
|
||||||
|
expect(undoManager.canRedo).toBe(false)
|
||||||
|
expect(undoManager.undoDescription).toBe(undefined)
|
||||||
|
expect(undoManager.redoDescription).toBe(undefined)
|
||||||
|
})
|
Loading…
Reference in a new issue