Skip to content

Commit 321b1a9

Browse files
committed
tests
1 parent aaa113f commit 321b1a9

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

packages/uui-menu-item/lib/uui-menu-item.element.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,11 @@ export class UUIMenuItemElement extends SelectOnlyMixin(
250250
@state()
251251
private iconSlotHasContent = false;
252252

253+
connectedCallback() {
254+
super.connectedCallback();
255+
if (!this.hasAttribute('role')) this.setAttribute('role', 'menu');
256+
}
257+
253258
private iconSlotChanged(e: any): void {
254259
this.iconSlotHasContent =
255260
(e.target as HTMLSlotElement).assignedNodes({ flatten: true }).length > 0;

packages/uui-menu-item/lib/uui-menu-item.test.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,14 @@ describe('UUIMenuItemElement', () => {
1313

1414
beforeEach(async () => {
1515
element = await fixture(
16-
html`<uui-menu-item role="menu" label="menuitem"></uui-menu-item>`
16+
html`<uui-menu-item label="menuitem"></uui-menu-item>`
1717
);
1818
});
1919

20+
it('is defined', () => {
21+
expect(element).to.be.instanceOf(UUIMenuItemElement);
22+
});
23+
2024
it('passes the a11y audit', async () => {
2125
await expect(element).shadowDom.to.be.accessible();
2226
});
@@ -133,4 +137,42 @@ describe('UUIMenuItemElement', () => {
133137
expect(element.selected).to.be.false;
134138
});
135139
});
140+
141+
describe('HREF', () => {
142+
let labelElement: HTMLElement;
143+
let element: UUIMenuItemElement;
144+
145+
beforeEach(async () => {
146+
element = await fixture(
147+
html`<uui-menu-item
148+
label="menuitem"
149+
href="https://www.umbraco.com"></uui-menu-item>`
150+
);
151+
labelElement = element.shadowRoot!.querySelector(
152+
'#label-button'
153+
) as HTMLElement;
154+
});
155+
156+
it('label element is defined', () => {
157+
expect(labelElement).to.be.instanceOf(HTMLElement);
158+
});
159+
160+
it('label is rendered as an anchor tag', async () => {
161+
await elementUpdated(element);
162+
expect(labelElement.nodeName).to.be.equal('A');
163+
});
164+
165+
it('target is applied to anchor tag', async () => {
166+
element.target = '_self';
167+
await elementUpdated(element);
168+
expect(labelElement.getAttribute('target')).to.be.equal('_self');
169+
});
170+
171+
it('when target is _blank rel=noopener is set.', async () => {
172+
element.target = '_blank';
173+
await elementUpdated(element);
174+
expect(labelElement.getAttribute('target')).to.be.equal('_blank');
175+
expect(labelElement.getAttribute('rel')).to.be.equal('noopener');
176+
});
177+
});
136178
});

0 commit comments

Comments
 (0)