Skip to content

Commit 287d0f0

Browse files
authored
fix(Settings): Allow missmatched nsdoc import (openscd#1690)
1 parent bfd43ba commit 287d0f0

File tree

5 files changed

+417
-2
lines changed

5 files changed

+417
-2
lines changed

packages/openscd/src/addons/Settings.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ export class OscdSettings extends LitElement {
253253
if (!this.isEqual(nsdVersion, nsdocVersion)) {
254254
this.dispatchEvent(
255255
newLogEvent({
256-
kind: 'error',
256+
kind: 'warning',
257257
title: get('settings.invalidNsdocVersion', {
258258
id: id,
259259
filename: event.detail.filename,
@@ -262,7 +262,6 @@ export class OscdSettings extends LitElement {
262262
}),
263263
})
264264
);
265-
return;
266265
}
267266

268267
this.setSetting(id as keyof Settings, event.detail.nsdoc);

packages/openscd/test/integration/Setting.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,25 @@ describe('Oscd-Settings', () => {
6363
);
6464
});
6565

66+
it('upload .nsdoc file with missmatched nsd version using event and log event fired', async () => {
67+
settings.settingsUI.show();
68+
await settings.settingsUI.updateComplete;
69+
70+
const nsdocFile = await fetch('/test/testfiles/nsdoc/IEC_61850-7-2-B-5.nsdoc').then(
71+
response => response.text()
72+
);
73+
74+
logger.dispatchEvent(newLoadNsdocEvent(nsdocFile, 'IEC_61850-7-2-B-5.nsdoc'));
75+
76+
await logger.requestUpdate();
77+
await logger.updateComplete;
78+
79+
expect(logger.log.length).to.be.equal(1);
80+
expect(logger.log[0].title).to.be.equal(
81+
"The version of IEC 61850-7-2 NSD (2007B3) does not correlate with the version of the corresponding NSDoc (IEC_61850-7-2-B-5.nsdoc, 2007B5)"
82+
);
83+
});
84+
6685
it('upload .nsdoc file with wrong version using event and log event fired', async () => {
6786
settings.settingsUI.show();
6887
await settings.settingsUI.updateComplete;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<NSDoc id="IEC 61850-7-2"
3+
version="2007"
4+
revision="B"
5+
release="5"
6+
lang="en">
7+
</NSDoc>

packages/openscd/test/unit/Setting.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import '../../src/addons/Settings.js';
66
import { OscdSettings, defaults } from '../../src/addons/Settings.js';
77

88
import { Button } from '@material/mwc-button';
9+
import { LogEvent } from '@openscd/core/foundation/deprecated/history.js';
910

1011
describe('OSCD-Settings', () => {
1112
let element: OscdSettings;
@@ -69,6 +70,23 @@ describe('OSCD-Settings', () => {
6970
await expect(element).shadowDom.to.equalSnapshot();
7071
});
7172

73+
it('loads .nsdoc file with missmatched nsd version', async () => {
74+
element.settingsUI.show();
75+
await element.settingsUI.updateComplete;
76+
77+
const nsdocFile = await fetch(
78+
'/test/testfiles/nsdoc/IEC_61850-7-2-B-5.nsdoc'
79+
).then(response => response.text());
80+
81+
element.setSetting('IEC 61850-7-2', nsdocFile);
82+
83+
await element.requestUpdate();
84+
await element.updateComplete
85+
86+
expect(localStorage.getItem('IEC 61850-7-2')).to.eql(nsdocFile);
87+
await expect(element).shadowDom.to.equalSnapshot();
88+
});
89+
7290
it('saves chosen .nsdoc file and looks like latest snapshot', async () => {
7391
element.settingsUI.show();
7492
await element.settingsUI.updateComplete;

0 commit comments

Comments
 (0)