@@ -10,12 +10,27 @@ import {
1010 newLogEvent ,
1111} from '@openscd/core/foundation/deprecated/history.js' ;
1212import { OscdHistory } from '../../src/addons/History.js' ;
13+ import { InsertV2 } from '@openscd/core' ;
14+ import { createElement } from '@openscd/xml' ;
1315
1416describe ( '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