Skip to content

Commit 1f68108

Browse files
authored
feat(material-experimental/mdc-list): add support for activated state in harness (#24934)
1 parent df9303e commit 1f68108

File tree

3 files changed

+30
-6
lines changed

3 files changed

+30
-6
lines changed

src/material-experimental/mdc-list/testing/list-harness-filters.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export interface ActionListItemHarnessFilters extends BaseListItemHarnessFilters
3434

3535
export interface NavListItemHarnessFilters extends BaseListItemHarnessFilters {
3636
href?: string | RegExp | null;
37+
activated?: boolean;
3738
}
3839

3940
export interface ListOptionHarnessFilters extends BaseListItemHarnessFilters {

src/material-experimental/mdc-list/testing/list-harness.spec.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,20 @@ describe('MatNavListHarness', () => {
394394
expect(items.length).toBe(1);
395395
expect(await items[0].getHref()).toBe('/somestuff');
396396
});
397+
398+
it('should get activated state', async () => {
399+
const items = await harness.getItems();
400+
const activated = await parallel(() => items.map(item => item.isActivated()));
401+
expect(activated).toEqual([false, true, false, false, false]);
402+
});
403+
404+
it('should get item harness by activated state', async () => {
405+
const activatedItems = await harness.getItems({activated: true});
406+
const activatedItemsText = await parallel(() =>
407+
activatedItems.map(item => item.getFullText()),
408+
);
409+
expect(activatedItemsText).toEqual(['Item 2']);
410+
});
397411
});
398412
});
399413

@@ -587,7 +601,7 @@ class ActionListHarnessTest {
587601
</a>
588602
<div matSubheader>Section 1</div>
589603
<mat-divider></mat-divider>
590-
<a mat-list-item href (click)="onClick($event, 'Item 2')">
604+
<a mat-list-item activated href (click)="onClick($event, 'Item 2')">
591605
<span class="test-item-content">Item 2</span>
592606
</a>
593607
<a

src/material-experimental/mdc-list/testing/nav-list-harness.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,15 @@ export class MatNavListItemHarness extends MatListItemHarnessBase {
5151
this: ComponentHarnessConstructor<T>,
5252
options: NavListItemHarnessFilters = {},
5353
): HarnessPredicate<T> {
54-
return getListItemPredicate(this, options).addOption(
55-
'href',
56-
options.href,
57-
async (harness, href) => HarnessPredicate.stringMatches(harness.getHref(), href),
58-
);
54+
return getListItemPredicate(this, options)
55+
.addOption('href', options.href, async (harness, href) =>
56+
HarnessPredicate.stringMatches(harness.getHref(), href),
57+
)
58+
.addOption(
59+
'activated',
60+
options.activated,
61+
async (harness, activated) => (await harness.isActivated()) === activated,
62+
);
5963
}
6064

6165
/** Gets the href for this nav list item. */
@@ -82,4 +86,9 @@ export class MatNavListItemHarness extends MatListItemHarnessBase {
8286
async isFocused(): Promise<boolean> {
8387
return (await this.host()).isFocused();
8488
}
89+
90+
/** Whether the list item is activated. Should only be used for nav list items. */
91+
async isActivated(): Promise<boolean> {
92+
return (await this.host()).hasClass('mdc-list-item--activated');
93+
}
8594
}

0 commit comments

Comments
 (0)