fix(tests): Update tests

This commit is contained in:
Mark Tolmacs
2025-08-15 21:58:09 +02:00
parent 7f71cc1546
commit 53bb9069f5
5 changed files with 367 additions and 661 deletions

View File

@@ -8642,18 +8642,26 @@ class App extends React.Component<AppProps, AppState> {
this.setState(newState);
});
}
this.scene.mutateElement(element, {
points: [
...element.points.slice(0, -1),
pointFrom<LocalPoint>(
(this.lastPointerMoveCoords?.x ??
pointerDownState.origin.x) - element.x,
(this.lastPointerMoveCoords?.y ??
pointerDownState.origin.y) - element.y,
),
],
});
const selectedPointIndices =
this.state.selectedLinearElement?.selectedPointsIndices;
const nextPoint = pointFrom<LocalPoint>(
(this.lastPointerMoveCoords?.x ??
pointerDownState.origin.x) - element.x,
(this.lastPointerMoveCoords?.y ??
pointerDownState.origin.y) - element.y,
);
if (
selectedPointIndices?.length === 1 &&
selectedPointIndices[0] === 0
) {
this.scene.mutateElement(element, {
points: [nextPoint, ...element.points.slice(1)],
});
} else {
this.scene.mutateElement(element, {
points: [...element.points.slice(0, -1), nextPoint],
});
}
}
this.bindModeHandler = null;
@@ -9599,7 +9607,11 @@ class App extends React.Component<AppProps, AppState> {
}
if (isLinearElement(newElement)) {
if (newElement!.points.length > 1) {
if (
newElement!.points.length > 1 &&
newElement.points[1][0] !== 0 &&
newElement.points[1][1] !== 0
) {
this.store.scheduleCapture();
}
const pointerCoords = viewportCoordsToSceneCoords(

View File

@@ -7590,7 +7590,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh
"strokeWidth": 2,
"type": "arrow",
"updated": 1,
"version": 9,
"version": 7,
"width": 10,
"x": 0,
"y": 0,
@@ -7628,59 +7628,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh
"removed": {},
"updated": {},
},
"id": "id13",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id0": {
"deleted": {
"height": 10,
"lastCommittedPoint": [
10,
10,
],
"points": [
[
0,
0,
],
[
10,
10,
],
],
"version": 9,
"width": 10,
},
"inserted": {
"height": 0,
"lastCommittedPoint": null,
"points": [
[
0,
0,
],
[
0,
0,
],
],
"version": 8,
"width": 0,
},
},
},
},
"id": "id14",
"id": "id10",
},
{
"appState": AppStateDelta {
@@ -7704,7 +7652,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh
"removed": {},
"updated": {},
},
"id": "id15",
"id": "id11",
},
{
"appState": AppStateDelta {
@@ -7728,7 +7676,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh
"removed": {},
"updated": {},
},
"id": "id16",
"id": "id12",
},
]
`;
@@ -10502,11 +10450,14 @@ exports[`history > multiplayer undo/redo > should override remotely added points
"fillStyle": "solid",
"frameId": null,
"groupIds": [],
"height": 0,
"height": 30,
"id": "id0",
"index": "a0",
"isDeleted": false,
"lastCommittedPoint": null,
"lastCommittedPoint": [
30,
30,
],
"link": null,
"locked": false,
"opacity": 100,
@@ -10516,8 +10467,20 @@ exports[`history > multiplayer undo/redo > should override remotely added points
0,
],
[
0,
0,
5,
5,
],
[
10,
10,
],
[
15,
15,
],
[
20,
20,
],
],
"roughness": 1,
@@ -10531,8 +10494,8 @@ exports[`history > multiplayer undo/redo > should override remotely added points
"strokeWidth": 2,
"type": "arrow",
"updated": 1,
"version": 10,
"width": 0,
"version": 12,
"width": 30,
"x": 0,
"y": 0,
}
@@ -10540,131 +10503,9 @@ exports[`history > multiplayer undo/redo > should override remotely added points
exports[`history > multiplayer undo/redo > should override remotely added points on undo, but restore them on redo > [end of test] number of elements 1`] = `1`;
exports[`history > multiplayer undo/redo > should override remotely added points on undo, but restore them on redo > [end of test] number of renders 1`] = `10`;
exports[`history > multiplayer undo/redo > should override remotely added points on undo, but restore them on redo > [end of test] number of renders 1`] = `12`;
exports[`history > multiplayer undo/redo > should override remotely added points on undo, but restore them on redo > [end of test] redo stack 1`] = `
[
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id0": {
"deleted": {
"height": 10,
"lastCommittedPoint": [
10,
10,
],
"points": [
[
0,
0,
],
[
10,
10,
],
],
"version": 9,
"width": 10,
},
"inserted": {
"height": 30,
"lastCommittedPoint": [
30,
30,
],
"points": [
[
0,
0,
],
[
5,
5,
],
[
10,
10,
],
[
15,
15,
],
[
20,
20,
],
],
"version": 8,
"width": 30,
},
},
},
},
"id": "id7",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id0": {
"deleted": {
"height": 0,
"lastCommittedPoint": null,
"points": [
[
0,
0,
],
[
0,
0,
],
],
"version": 10,
"width": 0,
},
"inserted": {
"height": 10,
"lastCommittedPoint": [
10,
10,
],
"points": [
[
0,
0,
],
[
10,
10,
],
],
"version": 9,
"width": 10,
},
},
},
},
"id": "id8",
},
]
`;
exports[`history > multiplayer undo/redo > should override remotely added points on undo, but restore them on redo > [end of test] redo stack 1`] = `[]`;
exports[`history > multiplayer undo/redo > should override remotely added points on undo, but restore them on redo > [end of test] undo stack 1`] = `
[
@@ -10701,10 +10542,13 @@ exports[`history > multiplayer undo/redo > should override remotely added points
"fillStyle": "solid",
"frameId": null,
"groupIds": [],
"height": 0,
"height": 10,
"index": "a0",
"isDeleted": false,
"lastCommittedPoint": null,
"lastCommittedPoint": [
10,
10,
],
"link": null,
"locked": false,
"opacity": 100,
@@ -10714,8 +10558,8 @@ exports[`history > multiplayer undo/redo > should override remotely added points
0,
],
[
0,
0,
10,
10,
],
],
"roughness": 1,
@@ -10728,20 +10572,87 @@ exports[`history > multiplayer undo/redo > should override remotely added points
"strokeStyle": "solid",
"strokeWidth": 2,
"type": "arrow",
"version": 3,
"width": 0,
"version": 11,
"width": 10,
"x": 0,
"y": 0,
},
"inserted": {
"isDeleted": true,
"version": 2,
"version": 10,
},
},
},
"updated": {},
},
"id": "id2",
"id": "id7",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id0": {
"deleted": {
"height": 30,
"lastCommittedPoint": [
30,
30,
],
"points": [
[
0,
0,
],
[
5,
5,
],
[
10,
10,
],
[
15,
15,
],
[
20,
20,
],
],
"version": 12,
"width": 30,
},
"inserted": {
"height": 10,
"lastCommittedPoint": [
10,
10,
],
"points": [
[
0,
0,
],
[
10,
10,
],
],
"version": 11,
"width": 10,
},
},
},
},
"id": "id8",
},
]
`;
@@ -21112,13 +21023,13 @@ exports[`history > singleplayer undo/redo > should support linear element creati
"fillStyle": "solid",
"frameId": null,
"groupIds": [],
"height": 10,
"height": 20,
"id": "id0",
"index": "a0",
"isDeleted": false,
"lastCommittedPoint": [
10,
10,
20,
0,
],
"link": null,
"locked": false,
@@ -21132,6 +21043,10 @@ exports[`history > singleplayer undo/redo > should support linear element creati
10,
10,
],
[
20,
20,
],
],
"roughness": 1,
"roundness": {
@@ -21144,8 +21059,8 @@ exports[`history > singleplayer undo/redo > should support linear element creati
"strokeWidth": 2,
"type": "arrow",
"updated": 1,
"version": 10,
"width": 10,
"version": 14,
"width": 20,
"x": 0,
"y": 0,
}
@@ -21153,170 +21068,9 @@ exports[`history > singleplayer undo/redo > should support linear element creati
exports[`history > singleplayer undo/redo > should support linear element creation and points manipulation through the editor > [end of test] number of elements 1`] = `1`;
exports[`history > singleplayer undo/redo > should support linear element creation and points manipulation through the editor > [end of test] number of renders 1`] = `17`;
exports[`history > singleplayer undo/redo > should support linear element creation and points manipulation through the editor > [end of test] number of renders 1`] = `23`;
exports[`history > singleplayer undo/redo > should support linear element creation and points manipulation through the editor > [end of test] redo stack 1`] = `
[
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {
"selectedLinearElement": {
"elementId": "id0",
"isEditing": true,
},
},
"inserted": {
"selectedLinearElement": {
"elementId": "id0",
"isEditing": false,
},
},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {},
},
"id": "id14",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id0": {
"deleted": {
"height": 10,
"points": [
[
0,
0,
],
[
10,
10,
],
[
20,
0,
],
],
"version": 9,
},
"inserted": {
"height": 20,
"points": [
[
0,
0,
],
[
10,
10,
],
[
20,
20,
],
],
"version": 8,
},
},
},
},
"id": "id18",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {
"selectedLinearElement": {
"elementId": "id0",
"isEditing": false,
},
},
"inserted": {
"selectedLinearElement": {
"elementId": "id0",
"isEditing": true,
},
},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {},
},
"id": "id19",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id0": {
"deleted": {
"lastCommittedPoint": [
10,
10,
],
"points": [
[
0,
0,
],
[
10,
10,
],
],
"version": 10,
"width": 10,
},
"inserted": {
"lastCommittedPoint": [
20,
0,
],
"points": [
[
0,
0,
],
[
10,
10,
],
[
20,
0,
],
],
"version": 9,
"width": 20,
},
},
},
},
"id": "id20",
},
]
`;
exports[`history > singleplayer undo/redo > should support linear element creation and points manipulation through the editor > [end of test] redo stack 1`] = `[]`;
exports[`history > singleplayer undo/redo > should support linear element creation and points manipulation through the editor > [end of test] undo stack 1`] = `
[
@@ -21353,10 +21107,13 @@ exports[`history > singleplayer undo/redo > should support linear element creati
"fillStyle": "solid",
"frameId": null,
"groupIds": [],
"height": 0,
"height": 10,
"index": "a0",
"isDeleted": false,
"lastCommittedPoint": null,
"lastCommittedPoint": [
10,
10,
],
"link": null,
"locked": false,
"opacity": 100,
@@ -21366,8 +21123,8 @@ exports[`history > singleplayer undo/redo > should support linear element creati
0,
],
[
0,
0,
10,
10,
],
],
"roughness": 1,
@@ -21380,20 +21137,20 @@ exports[`history > singleplayer undo/redo > should support linear element creati
"strokeStyle": "solid",
"strokeWidth": 2,
"type": "arrow",
"version": 3,
"width": 0,
"version": 12,
"width": 10,
"x": 0,
"y": 0,
},
"inserted": {
"isDeleted": true,
"version": 2,
"version": 11,
},
},
},
"updated": {},
},
"id": "id2",
"id": "id20",
},
{
"appState": AppStateDelta {
@@ -21408,7 +21165,28 @@ exports[`history > singleplayer undo/redo > should support linear element creati
"updated": {
"id0": {
"deleted": {
"height": 10,
"lastCommittedPoint": [
20,
0,
],
"points": [
[
0,
0,
],
[
10,
10,
],
[
20,
0,
],
],
"version": 13,
"width": 20,
},
"inserted": {
"lastCommittedPoint": [
10,
10,
@@ -21423,29 +21201,114 @@ exports[`history > singleplayer undo/redo > should support linear element creati
10,
],
],
"version": 5,
"version": 12,
"width": 10,
},
"inserted": {
"height": 0,
"lastCommittedPoint": null,
},
},
},
"id": "id21",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {
"selectedLinearElement": {
"elementId": "id0",
"isEditing": true,
},
},
"inserted": {
"selectedLinearElement": {
"elementId": "id0",
"isEditing": false,
},
},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {},
},
"id": "id22",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id0": {
"deleted": {
"height": 20,
"points": [
[
0,
0,
],
[
10,
10,
],
[
20,
20,
],
],
"version": 14,
},
"inserted": {
"height": 10,
"points": [
[
0,
0,
],
[
10,
10,
],
[
20,
0,
],
],
"version": 3,
"width": 0,
"version": 13,
},
},
},
},
"id": "id4",
"id": "id23",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {
"selectedLinearElement": {
"elementId": "id0",
"isEditing": false,
},
},
"inserted": {
"selectedLinearElement": {
"elementId": "id0",
"isEditing": true,
},
},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {},
},
"id": "id24",
},
]
`;

View File

@@ -6592,10 +6592,13 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"fillStyle": "solid",
"frameId": null,
"groupIds": [],
"height": 0,
"height": 10,
"index": "a5",
"isDeleted": false,
"lastCommittedPoint": null,
"lastCommittedPoint": [
50,
10,
],
"link": null,
"locked": false,
"opacity": 100,
@@ -6605,8 +6608,8 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
0,
],
[
0,
0,
50,
10,
],
],
"roughness": 1,
@@ -6619,14 +6622,14 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"strokeStyle": "solid",
"strokeWidth": 2,
"type": "arrow",
"version": 3,
"width": 0,
"version": 5,
"width": 50,
"x": 310,
"y": -10,
},
"inserted": {
"isDeleted": true,
"version": 2,
"version": 4,
},
},
},
@@ -6634,58 +6637,6 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
},
"id": "id17",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id15": {
"deleted": {
"height": 10,
"lastCommittedPoint": [
50,
10,
],
"points": [
[
0,
0,
],
[
50,
10,
],
],
"version": 5,
"width": 50,
},
"inserted": {
"height": 0,
"lastCommittedPoint": null,
"points": [
[
0,
0,
],
[
0,
0,
],
],
"version": 3,
"width": 0,
},
},
},
},
"id": "id19",
},
{
"appState": AppStateDelta {
"delta": Delta {
@@ -6743,13 +6694,15 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
},
},
},
"id": "id21",
"id": "id19",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {
"selectedElementIds": {},
"selectedElementIds": {
"id20": true,
},
"selectedLinearElement": null,
},
"inserted": {
@@ -6766,7 +6719,7 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"elements": {
"added": {},
"removed": {
"id22": {
"id20": {
"deleted": {
"angle": 0,
"backgroundColor": "transparent",
@@ -6777,10 +6730,13 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"fillStyle": "solid",
"frameId": null,
"groupIds": [],
"height": 0,
"height": 10,
"index": "a6",
"isDeleted": false,
"lastCommittedPoint": null,
"lastCommittedPoint": [
50,
10,
],
"link": null,
"locked": false,
"opacity": 100,
@@ -6790,8 +6746,8 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
0,
],
[
0,
0,
50,
10,
],
],
"polygon": false,
@@ -6803,78 +6759,20 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"strokeStyle": "solid",
"strokeWidth": 2,
"type": "line",
"version": 3,
"width": 0,
"version": 5,
"width": 50,
"x": 430,
"y": -10,
},
"inserted": {
"isDeleted": true,
"version": 2,
"version": 4,
},
},
},
"updated": {},
},
"id": "id24",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {
"selectedElementIds": {
"id22": true,
},
},
"inserted": {
"selectedElementIds": {},
},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id22": {
"deleted": {
"height": 10,
"lastCommittedPoint": [
50,
10,
],
"points": [
[
0,
0,
],
[
50,
10,
],
],
"version": 5,
"width": 50,
},
"inserted": {
"height": 0,
"lastCommittedPoint": null,
"points": [
[
0,
0,
],
[
0,
0,
],
],
"version": 3,
"width": 0,
},
},
},
},
"id": "id26",
"id": "id22",
},
{
"appState": AppStateDelta {
@@ -6887,7 +6785,7 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"added": {},
"removed": {},
"updated": {
"id22": {
"id20": {
"deleted": {
"height": 20,
"lastCommittedPoint": [
@@ -6933,14 +6831,14 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
},
},
},
"id": "id28",
"id": "id24",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {
"selectedLinearElement": {
"elementId": "id22",
"elementId": "id20",
"isEditing": false,
},
},
@@ -6954,7 +6852,7 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"removed": {},
"updated": {},
},
"id": "id30",
"id": "id26",
},
{
"appState": AppStateDelta {
@@ -6964,7 +6862,7 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
},
"inserted": {
"selectedElementIds": {
"id22": true,
"id20": true,
},
},
},
@@ -6974,7 +6872,7 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"removed": {},
"updated": {},
},
"id": "id32",
"id": "id28",
},
{
"appState": AppStateDelta {
@@ -6984,7 +6882,7 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
},
"inserted": {
"selectedLinearElement": {
"elementId": "id22",
"elementId": "id20",
"isEditing": false,
},
},
@@ -6993,7 +6891,7 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
"elements": {
"added": {},
"removed": {
"id33": {
"id29": {
"deleted": {
"angle": 0,
"backgroundColor": "transparent",
@@ -7051,7 +6949,7 @@ exports[`regression tests > draw every type of shape > [end of test] undo stack
},
"updated": {},
},
"id": "id35",
"id": "id31",
},
]
`;
@@ -14598,7 +14496,7 @@ exports[`regression tests > undo/redo drawing an element > [end of test] appStat
exports[`regression tests > undo/redo drawing an element > [end of test] number of elements 1`] = `0`;
exports[`regression tests > undo/redo drawing an element > [end of test] number of renders 1`] = `19`;
exports[`regression tests > undo/redo drawing an element > [end of test] number of renders 1`] = `18`;
exports[`regression tests > undo/redo drawing an element > [end of test] redo stack 1`] = `
[
@@ -14659,59 +14557,7 @@ exports[`regression tests > undo/redo drawing an element > [end of test] redo st
},
},
},
"id": "id13",
},
{
"appState": AppStateDelta {
"delta": Delta {
"deleted": {},
"inserted": {},
},
},
"elements": {
"added": {},
"removed": {},
"updated": {
"id6": {
"deleted": {
"height": 0,
"lastCommittedPoint": null,
"points": [
[
0,
0,
],
[
0,
0,
],
],
"version": 9,
"width": 0,
},
"inserted": {
"height": 10,
"lastCommittedPoint": [
60,
10,
],
"points": [
[
0,
0,
],
[
60,
10,
],
],
"version": 8,
"width": 60,
},
},
},
},
"id": "id14",
"id": "id11",
},
{
"appState": AppStateDelta {
@@ -14738,7 +14584,7 @@ exports[`regression tests > undo/redo drawing an element > [end of test] redo st
"id6": {
"deleted": {
"isDeleted": true,
"version": 10,
"version": 9,
},
"inserted": {
"angle": 0,
@@ -14751,10 +14597,13 @@ exports[`regression tests > undo/redo drawing an element > [end of test] redo st
"fillStyle": "solid",
"frameId": null,
"groupIds": [],
"height": 0,
"height": 10,
"index": "a2",
"isDeleted": false,
"lastCommittedPoint": null,
"lastCommittedPoint": [
60,
10,
],
"link": null,
"locked": false,
"opacity": 100,
@@ -14764,8 +14613,8 @@ exports[`regression tests > undo/redo drawing an element > [end of test] redo st
0,
],
[
0,
0,
60,
10,
],
],
"roughness": 1,
@@ -14778,8 +14627,8 @@ exports[`regression tests > undo/redo drawing an element > [end of test] redo st
"strokeStyle": "solid",
"strokeWidth": 2,
"type": "arrow",
"version": 9,
"width": 0,
"version": 8,
"width": 60,
"x": 130,
"y": 10,
},
@@ -14788,7 +14637,7 @@ exports[`regression tests > undo/redo drawing an element > [end of test] redo st
"removed": {},
"updated": {},
},
"id": "id15",
"id": "id12",
},
]
`;
@@ -14899,7 +14748,7 @@ exports[`regression tests > undo/redo drawing an element > [end of test] undo st
},
"updated": {},
},
"id": "id17",
"id": "id14",
},
]
`;

View File

@@ -1070,7 +1070,7 @@ describe("history", () => {
// leave editor
Keyboard.keyPress(KEYS.ESCAPE);
expect(API.getUndoStack().length).toBe(6);
expect(API.getUndoStack().length).toBe(5);
expect(API.getRedoStack().length).toBe(0);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing ?? false).toBe(false);
@@ -1087,7 +1087,7 @@ describe("history", () => {
]);
Keyboard.undo();
expect(API.getUndoStack().length).toBe(5);
expect(API.getUndoStack().length).toBe(4);
expect(API.getRedoStack().length).toBe(1);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(true);
@@ -1107,11 +1107,11 @@ describe("history", () => {
mouse.clickAt(0, 0);
mouse.clickAt(10, 10);
mouse.clickAt(20, 20);
expect(API.getUndoStack().length).toBe(5);
expect(API.getUndoStack().length).toBe(4);
expect(API.getRedoStack().length).toBe(1);
Keyboard.undo();
expect(API.getUndoStack().length).toBe(4);
expect(API.getUndoStack().length).toBe(3);
expect(API.getRedoStack().length).toBe(2);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(true);
@@ -1128,7 +1128,7 @@ describe("history", () => {
]);
Keyboard.undo();
expect(API.getUndoStack().length).toBe(3);
expect(API.getUndoStack().length).toBe(2);
expect(API.getRedoStack().length).toBe(3);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(false); // undo `open editor`
@@ -1144,29 +1144,29 @@ describe("history", () => {
}),
]);
Keyboard.undo();
expect(API.getUndoStack().length).toBe(2);
expect(API.getRedoStack().length).toBe(4);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(false);
expect(h.state.selectedLinearElement).toBeNull(); // undo `actionFinalize`
expect(h.elements).toEqual([
expect.objectContaining({
isDeleted: false,
points: [
[0, 0],
[10, 10],
[20, 0],
],
}),
]);
// Keyboard.undo();
// expect(API.getUndoStack().length).toBe(2);
// expect(API.getRedoStack().length).toBe(4);
// expect(assertSelectedElements(h.elements[0]));
// expect(h.state.selectedLinearElement?.isEditing).toBe(false);
// expect(h.state.selectedLinearElement).toBeNull(); // undo `actionFinalize`
// expect(h.elements).toEqual([
// expect.objectContaining({
// isDeleted: false,
// points: [
// [0, 0],
// [10, 10],
// [20, 0],
// ],
// }),
// ]);
Keyboard.undo();
expect(API.getUndoStack().length).toBe(1);
expect(API.getRedoStack().length).toBe(5);
expect(API.getRedoStack().length).toBe(4);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(false);
expect(h.state.selectedLinearElement).toBeNull();
expect(h.state.selectedLinearElement?.elementId).toBe(h.elements[0].id);
expect(h.elements).toEqual([
expect.objectContaining({
isDeleted: false,
@@ -1179,9 +1179,8 @@ describe("history", () => {
Keyboard.undo();
expect(API.getUndoStack().length).toBe(0);
expect(API.getRedoStack().length).toBe(6);
expect(API.getRedoStack().length).toBe(5);
expect(API.getSelectedElements().length).toBe(0);
expect(h.state.selectedLinearElement?.isEditing).toBe(false);
expect(h.state.selectedLinearElement).toBeNull();
expect(h.elements).toEqual([
expect.objectContaining({
@@ -1195,39 +1194,39 @@ describe("history", () => {
Keyboard.redo();
expect(API.getUndoStack().length).toBe(1);
expect(API.getRedoStack().length).toBe(5);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(false);
expect(h.state.selectedLinearElement).toBeNull();
expect(h.elements).toEqual([
expect.objectContaining({
isDeleted: false,
points: [
[0, 0],
[10, 10],
],
}),
]);
Keyboard.redo();
expect(API.getUndoStack().length).toBe(2);
expect(API.getRedoStack().length).toBe(4);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(false);
expect(h.state.selectedLinearElement).toBeNull(); // undo `actionFinalize`
expect(h.state.selectedLinearElement?.elementId).toBe(h.elements[0].id);
expect(h.elements).toEqual([
expect.objectContaining({
isDeleted: false,
points: [
[0, 0],
[10, 10],
[20, 0],
],
}),
]);
// Keyboard.redo();
// expect(API.getUndoStack().length).toBe(2);
// expect(API.getRedoStack().length).toBe(3);
// expect(assertSelectedElements(h.elements[0]));
// expect(h.state.selectedLinearElement?.isEditing).toBe(false);
// expect(h.state.selectedLinearElement).toBeNull(); // undo `actionFinalize`
// expect(h.elements).toEqual([
// expect.objectContaining({
// isDeleted: false,
// points: [
// [0, 0],
// [10, 10],
// [20, 0],
// ],
// }),
// ]);
Keyboard.redo();
expect(API.getUndoStack().length).toBe(3);
expect(API.getUndoStack().length).toBe(2);
expect(API.getRedoStack().length).toBe(3);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing ?? false).toBe(false); // undo `open editor`
@@ -1244,7 +1243,7 @@ describe("history", () => {
]);
Keyboard.redo();
expect(API.getUndoStack().length).toBe(4);
expect(API.getUndoStack().length).toBe(3);
expect(API.getRedoStack().length).toBe(2);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(true);
@@ -1261,7 +1260,7 @@ describe("history", () => {
]);
Keyboard.redo();
expect(API.getUndoStack().length).toBe(5);
expect(API.getUndoStack().length).toBe(4);
expect(API.getRedoStack().length).toBe(1);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing).toBe(true);
@@ -1278,7 +1277,7 @@ describe("history", () => {
]);
Keyboard.redo();
expect(API.getUndoStack().length).toBe(6);
expect(API.getUndoStack().length).toBe(5);
expect(API.getRedoStack().length).toBe(0);
expect(assertSelectedElements(h.elements[0]));
expect(h.state.selectedLinearElement?.isEditing ?? false).toBe(false);
@@ -2495,10 +2494,9 @@ describe("history", () => {
captureUpdate: CaptureUpdateAction.NEVER,
});
Keyboard.undo(); // undo `actionFinalize`
Keyboard.undo();
expect(API.getUndoStack().length).toBe(1);
expect(API.getRedoStack().length).toBe(2);
expect(API.getRedoStack().length).toBe(1);
expect(h.elements).toEqual([
expect.objectContaining({
points: [
@@ -2512,7 +2510,7 @@ describe("history", () => {
Keyboard.undo();
expect(API.getUndoStack().length).toBe(0);
expect(API.getRedoStack().length).toBe(3);
expect(API.getRedoStack().length).toBe(2);
expect(h.elements).toEqual([
expect.objectContaining({
isDeleted: true,
@@ -2525,7 +2523,7 @@ describe("history", () => {
Keyboard.redo();
expect(API.getUndoStack().length).toBe(1);
expect(API.getRedoStack().length).toBe(2);
expect(API.getRedoStack().length).toBe(1);
expect(h.elements).toEqual([
expect.objectContaining({
isDeleted: false,
@@ -2538,21 +2536,6 @@ describe("history", () => {
Keyboard.redo();
expect(API.getUndoStack().length).toBe(2);
expect(API.getRedoStack().length).toBe(1);
expect(h.elements).toEqual([
expect.objectContaining({
points: [
[0, 0],
[5, 5],
[10, 10],
[15, 15],
[20, 20],
],
}),
]);
Keyboard.redo(); // redo `actionFinalize`
expect(API.getUndoStack().length).toBe(3);
expect(API.getRedoStack().length).toBe(0);
expect(h.elements).toEqual([
expect.objectContaining({
@@ -3052,7 +3035,7 @@ describe("history", () => {
// leave editor
Keyboard.keyPress(KEYS.ESCAPE);
expect(API.getUndoStack().length).toBe(4);
expect(API.getUndoStack().length).toBe(3);
expect(API.getRedoStack().length).toBe(0);
expect(h.state.selectedLinearElement).not.toBeNull();
expect(h.state.selectedLinearElement?.isEditing).toBe(false);
@@ -3069,11 +3052,11 @@ describe("history", () => {
Keyboard.undo();
expect(API.getUndoStack().length).toBe(0);
expect(API.getRedoStack().length).toBe(4);
expect(API.getRedoStack().length).toBe(3);
expect(h.state.selectedLinearElement).toBeNull();
Keyboard.redo();
expect(API.getUndoStack().length).toBe(4);
expect(API.getUndoStack().length).toBe(3);
expect(API.getRedoStack().length).toBe(0);
expect(h.state.selectedLinearElement).toBeNull();
expect(h.state.selectedLinearElement?.isEditing ?? false).toBe(false);

View File

@@ -363,7 +363,6 @@ describe("regression tests", () => {
Keyboard.withModifierKeys({ ctrl: true }, () => {
Keyboard.keyPress(KEYS.Z);
Keyboard.keyPress(KEYS.Z);
Keyboard.keyPress(KEYS.Z);
});
expect(h.elements.filter((element) => !element.isDeleted).length).toBe(2);
Keyboard.withModifierKeys({ ctrl: true }, () => {