Skip to content
This repository was archived by the owner on Jan 12, 2026. It is now read-only.

Commit 0bf76e1

Browse files
committed
test: Add history tests
1 parent d5fb427 commit 0bf76e1

1 file changed

Lines changed: 62 additions & 8 deletions

File tree

packages/openscd/test/unit/Historing.test.ts

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,27 @@ import {
1010
newLogEvent,
1111
} from '@openscd/core/foundation/deprecated/history.js';
1212
import { OscdHistory } from '../../src/addons/History.js';
13+
import { InsertV2 } from '@openscd/core';
14+
import { createElement } from '@openscd/xml';
1315

1416
describe('HistoringElement', () => {
1517
let mock: MockOpenSCD;
1618
let element: OscdHistory;
19+
let scd: XMLDocument;
20+
1721
beforeEach(async () => {
18-
mock = <MockOpenSCD>await fixture(html`<mock-open-scd></mock-open-scd>`);
22+
scd = new DOMParser().parseFromString(
23+
`<Substation name="s1">
24+
<VoltageLevel name="v1">
25+
<Bay name="b1" kind="bay">
26+
<LNode name="l1" />
27+
</Bay>
28+
</VoltageLevel>
29+
</Substation>`,
30+
'application/xml',
31+
);
32+
33+
mock = <MockOpenSCD>await fixture(html`<mock-open-scd .doc=${scd}></mock-open-scd>`);
1934
element = mock.historyAddon;
2035
});
2136

@@ -70,21 +85,60 @@ describe('HistoringElement', () => {
7085
expect(element.diagnosticUI).to.have.property('open', true);
7186
});
7287

73-
// TODO: Replace wiht editor -> history tests
7488
describe('with an action logged', () => {
89+
const insertTitle = 'Insert bay 2';
90+
let voltageLevel: Element;
91+
7592
beforeEach(async () => {
76-
element.dispatchEvent(
77-
newLogEvent({
78-
kind: 'action',
79-
title: 'test MockAction'
80-
})
81-
);
93+
voltageLevel = scd.querySelector('VoltageLevel')!;
94+
const bay2 = createElement(scd, 'Bay', { name: 'b2' });
95+
const insert: InsertV2 = {
96+
parent: voltageLevel,
97+
node: bay2,
98+
reference: null
99+
};
100+
element.editor.commit(insert, { title: insertTitle });
101+
82102
element.requestUpdate();
83103
await element.updateComplete;
84104
mock.requestUpdate();
85105
await mock.updateComplete;
86106
});
87107

108+
it('should have a history', () => {
109+
expect(element.history.length).to.equal(1);
110+
const insertEntry = element.history[0];
111+
expect(insertEntry.title).to.equal(insertTitle);
112+
expect(insertEntry.isActive).to.true;
113+
});
114+
115+
it('should keep undone entries in history and set is active accordingly', () => {
116+
const bay3 = createElement(scd, 'Bay', { name: 'b3' });
117+
const insert: InsertV2 = {
118+
parent: voltageLevel,
119+
node: bay3,
120+
reference: null
121+
};
122+
123+
element.editor.commit(insert);
124+
125+
let [ bay2Insert, bay3Insert ] = element.history;
126+
expect(bay2Insert.isActive).to.be.false;
127+
expect(bay3Insert.isActive).to.be.true;
128+
129+
element.editor.undo();
130+
131+
[ bay2Insert, bay3Insert ] = element.history;
132+
expect(bay2Insert.isActive).to.be.true;
133+
expect(bay3Insert.isActive).to.be.false;
134+
135+
element.editor.redo();
136+
137+
[ bay2Insert, bay3Insert ] = element.history;
138+
expect(bay2Insert.isActive).to.be.false;
139+
expect(bay3Insert.isActive).to.be.true;
140+
});
141+
88142
it('can reset its log', () => {
89143
element.dispatchEvent(newLogEvent({ kind: 'reset' }));
90144
expect(element).property('log').to.be.empty;

0 commit comments

Comments
 (0)