Skip to content

Commit 460c99e

Browse files
authored
Subscriber Later Binding (GOOSE): Disconnect FCDA from ExtRef (openscd#1002)
* refactor: getExtrefLaterBindingList and getFCDALaterBindingList for reusability * test: disconnect FCDA from ExtRef * chore: renaming ext-ref list file * fix: moving test helper methods to test-support.ts * fix: typo in tests descriptions
1 parent 629cbcc commit 460c99e

File tree

7 files changed

+98
-24
lines changed

7 files changed

+98
-24
lines changed

src/editors/GooseSubscriberLaterBinding.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { LitElement, property, html, TemplateResult, css } from 'lit-element';
22

33
import './subscription/later-binding/fcda-later-binding-list.js';
4-
import './subscription/later-binding/ext-ref-laterbinding-list.js';
4+
import './subscription/later-binding/ext-ref-later-binding-list.js';
55

66
export default class GooseSubscribeLaterBindingPlugin extends LitElement {
77
@property({ attribute: false })

src/editors/SMVSubscriberLaterBinding.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { css, html, LitElement, property, TemplateResult } from 'lit-element';
22

33
import './subscription/later-binding/fcda-later-binding-list.js';
4-
import './subscription/later-binding/ext-ref-laterbinding-list.js';
4+
import './subscription/later-binding/ext-ref-later-binding-list.js';
55

66
/** An editor [[`plugin`]] for Subscribe Later Binding (SMV). */
77
export default class SMVSubscribeLaterBindingPlugin extends LitElement {
File renamed without changes.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { expect, fixture, html } from '@open-wc/testing';
2+
import { Wizarding } from '../../../src/Wizarding.js';
3+
import { Editing } from '../../../src/Editing.js';
4+
5+
import GooseSubscriberLaterBinding from '../../../src/editors/GooseSubscriberLaterBinding.js';
6+
import {
7+
getExtrefLaterBindingList,
8+
getFCDALaterBindingList,
9+
} from './test-support.js';
10+
11+
describe('GOOSE Subscribe Later Binding Plugin', () => {
12+
customElements.define(
13+
'goose-subscriber-later-binding-plugin',
14+
Wizarding(Editing(GooseSubscriberLaterBinding))
15+
);
16+
17+
let element: GooseSubscriberLaterBinding;
18+
let doc: XMLDocument;
19+
20+
beforeEach(async () => {
21+
doc = await fetch('/test/testfiles/editors/LaterBindingGOOSE2007B4.scd')
22+
.then(response => response.text())
23+
.then(str => new DOMParser().parseFromString(str, 'application/xml'));
24+
25+
element = await fixture(
26+
html`<goose-subscriber-later-binding-plugin
27+
.doc="${doc}"
28+
></goose-subscriber-later-binding-plugin>`
29+
);
30+
});
31+
32+
it('when unsubscribing a subscribed ExtRef then the lists are changed', async () => {
33+
const gooseListElement = getFCDALaterBindingList(element);
34+
const extRefListElement = getExtrefLaterBindingList(element);
35+
36+
(<HTMLElement>(
37+
gooseListElement.shadowRoot!.querySelector(
38+
'mwc-list-item[value="GOOSE_Publisher>>QB2_Disconnector>GOOSE2 GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos q (ST)"]'
39+
)
40+
)).click();
41+
await element.requestUpdate();
42+
await extRefListElement.requestUpdate();
43+
44+
expect(
45+
extRefListElement['getSubscribedExtRefElements']().length
46+
).to.be.equal(2);
47+
expect(
48+
extRefListElement['getAvailableExtRefElements']().length
49+
).to.be.equal(2);
50+
(<HTMLElement>(
51+
extRefListElement.shadowRoot!.querySelector(
52+
'mwc-list-item[value="GOOSE_Subscriber>>Earth_Switch> CSWI 1>GOOSE:GOOSE2 QB2_Disconnector/ LLN0 GOOSE_Publisher QB2_Disconnector/ CSWI 1 Pos q@Pos;CSWI1/Pos/q"]'
53+
)
54+
)).click();
55+
await element.requestUpdate();
56+
57+
expect(
58+
extRefListElement['getSubscribedExtRefElements']().length
59+
).to.be.equal(1);
60+
expect(
61+
extRefListElement['getAvailableExtRefElements']().length
62+
).to.be.equal(3);
63+
});
64+
});

test/integration/editors/SMVSubscriberLaterBinding.test.ts

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import { Wizarding } from '../../../src/Wizarding.js';
44
import { Editing } from '../../../src/Editing.js';
55

66
import SMVSubscribeLaterBindingPlugin from '../../../src/editors/SMVSubscriberLaterBinding.js';
7-
import { ExtRefLaterBindingList } from '../../../src/editors/subscription/later-binding/ext-ref-laterbinding-list.js';
8-
import { FCDALaterBindingList } from '../../../src/editors/subscription/later-binding/fcda-later-binding-list.js';
7+
import {
8+
getExtrefLaterBindingList,
9+
getFCDALaterBindingList,
10+
} from './test-support.js';
911

1012
describe('SMV Subscribe Later Binding plugin', () => {
1113
customElements.define(
@@ -28,9 +30,9 @@ describe('SMV Subscribe Later Binding plugin', () => {
2830
await element.requestUpdate();
2931
});
3032

31-
it('when subscribing an available ExtRef then the list are changed', async () => {
32-
const svcListElement = getFCDALaterBindingList();
33-
const extRefListElement = getExtrefLaterBindingList();
33+
it('when subscribing an available ExtRef then the lists are changed', async () => {
34+
const svcListElement = getFCDALaterBindingList(element);
35+
const extRefListElement = getExtrefLaterBindingList(element);
3436

3537
(<HTMLElement>(
3638
svcListElement.shadowRoot!.querySelector(
@@ -61,9 +63,9 @@ describe('SMV Subscribe Later Binding plugin', () => {
6163
).to.be.equal(7);
6264
});
6365

64-
it('when unsubscribing a subscribed ExtRef then the list are changed', async () => {
65-
const svcListElement = getFCDALaterBindingList();
66-
const extRefListElement = getExtrefLaterBindingList();
66+
it('when unsubscribing a subscribed ExtRef then the lists are changed', async () => {
67+
const svcListElement = getFCDALaterBindingList(element);
68+
const extRefListElement = getExtrefLaterBindingList(element);
6769

6870
(<HTMLElement>(
6971
svcListElement.shadowRoot!.querySelector(
@@ -93,16 +95,4 @@ describe('SMV Subscribe Later Binding plugin', () => {
9395
extRefListElement['getAvailableExtRefElements']().length
9496
).to.be.equal(9);
9597
});
96-
97-
function getFCDALaterBindingList(): FCDALaterBindingList {
98-
return <FCDALaterBindingList>(
99-
element.shadowRoot?.querySelector('fcda-later-binding-list')
100-
);
101-
}
102-
103-
function getExtrefLaterBindingList(): ExtRefLaterBindingList {
104-
return <ExtRefLaterBindingList>(
105-
element.shadowRoot?.querySelector('extref-later-binding-list')
106-
);
107-
}
10898
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { ExtRefLaterBindingList } from '../../../src/editors/subscription/later-binding/ext-ref-later-binding-list.js';
2+
import { FCDALaterBindingList } from '../../../src/editors/subscription/later-binding/fcda-later-binding-list.js';
3+
import GooseSubscribeLaterBindingPlugin from '../../../src/editors/GooseSubscriberLaterBinding.js';
4+
import SMVSubscriberLaterBindingPlugin from '../../../src/editors/SMVSubscriberLaterBinding.js';
5+
6+
export function getFCDALaterBindingList(
7+
element: SMVSubscriberLaterBindingPlugin | GooseSubscribeLaterBindingPlugin
8+
): FCDALaterBindingList {
9+
return <FCDALaterBindingList>(
10+
element.shadowRoot?.querySelector('fcda-later-binding-list')
11+
);
12+
}
13+
14+
export function getExtrefLaterBindingList(
15+
element: SMVSubscriberLaterBindingPlugin | GooseSubscribeLaterBindingPlugin
16+
): ExtRefLaterBindingList {
17+
return <ExtRefLaterBindingList>(
18+
element.shadowRoot?.querySelector('extref-later-binding-list')
19+
);
20+
}

test/unit/editors/subscription/later-binding/ext-ref-laterbinding-list.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { expect, fixture, html } from '@open-wc/testing';
22

3-
import '../../../../../src/editors/subscription/later-binding/ext-ref-laterbinding-list.js';
3+
import '../../../../../src/editors/subscription/later-binding/ext-ref-later-binding-list.js';
44

55
import { newFcdaSelectEvent } from '../../../../../src/editors/subscription/later-binding/foundation.js';
6-
import { ExtRefLaterBindingList } from '../../../../../src/editors/subscription/later-binding/ext-ref-laterbinding-list.js';
6+
import { ExtRefLaterBindingList } from '../../../../../src/editors/subscription/later-binding/ext-ref-later-binding-list.js';
77

88
describe('smv-list', () => {
99
let parent: Element;

0 commit comments

Comments
 (0)