에디터 UX: Undo/Redo 및 키보드 선택 이동 추가
This commit is contained in:
@@ -282,4 +282,46 @@ describe("editorStore", () => {
|
||||
|
||||
expect(selectedBlockId).toBe(blocks[blocks.length - 1].id);
|
||||
});
|
||||
|
||||
it("undo 호출 시 마지막 변경 이전의 블록 상태로 되돌려야 한다", () => {
|
||||
const store = createEditorStore();
|
||||
|
||||
// 텍스트 블록을 두 개 추가한다.
|
||||
store.getState().addTextBlock();
|
||||
store.getState().addTextBlock();
|
||||
|
||||
let { blocks, selectedBlockId } = store.getState();
|
||||
expect(blocks).toHaveLength(2);
|
||||
|
||||
const firstId = blocks[0].id;
|
||||
|
||||
store.getState().undo();
|
||||
|
||||
({ blocks, selectedBlockId } = store.getState());
|
||||
|
||||
// 마지막 추가 이전 상태로 되돌아가야 하므로 블록은 1개만 남아야 한다.
|
||||
expect(blocks).toHaveLength(1);
|
||||
expect(blocks[0].id).toBe(firstId);
|
||||
expect(selectedBlockId).toBe(firstId);
|
||||
});
|
||||
|
||||
it("redo 호출 시 undo로 되돌린 변경을 다시 적용해야 한다", () => {
|
||||
const store = createEditorStore();
|
||||
|
||||
store.getState().addTextBlock();
|
||||
store.getState().addTextBlock();
|
||||
|
||||
let { blocks } = store.getState();
|
||||
expect(blocks).toHaveLength(2);
|
||||
|
||||
store.getState().undo();
|
||||
|
||||
({ blocks } = store.getState());
|
||||
expect(blocks).toHaveLength(1);
|
||||
|
||||
store.getState().redo();
|
||||
|
||||
({ blocks } = store.getState());
|
||||
expect(blocks).toHaveLength(2);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user