Skip to content

Commit 597b801

Browse files
committed
test(aria/accordion): generate additional tests for Accordion directives and patterns
1 parent c4ee339 commit 597b801

2 files changed

Lines changed: 55 additions & 11 deletions

File tree

src/aria/accordion/accordion.spec.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -293,23 +293,23 @@ describe('AccordionGroup', () => {
293293
});
294294

295295
it('should update collection order when items are shuffled', async () => {
296-
const groupDebugElement = fixture.debugElement.query(By.directive(AccordionGroup));
297-
const groupDirective = groupDebugElement.injector.get(AccordionGroup);
298-
299-
let orderedItems = groupDirective._collection.orderedItems();
300-
expect(orderedItems.length).toBe(3);
301-
expect(orderedItems[0].element.textContent?.trim()).toBe('Item 1 Header');
302-
expect(orderedItems[2].element.textContent?.trim()).toBe('Item 3 Header');
296+
// Verify initial DOM order
297+
expect(triggerElements.length).toBe(3);
298+
expect(triggerElements[0].textContent?.trim()).toBe('Item 1 Header');
299+
expect(triggerElements[2].textContent?.trim()).toBe('Item 3 Header');
303300

301+
// Shuffle (reverse) data
304302
const items = testComponent.items().reverse();
305303
testComponent.items.set([...items]);
306304
fixture.detectChanges();
307305
await waitForMicrotasks();
308306

309-
orderedItems = groupDirective._collection.orderedItems();
310-
expect(orderedItems.length).toBe(3);
311-
expect(orderedItems[0].element.textContent?.trim()).toBe('Item 3 Header');
312-
expect(orderedItems[2].element.textContent?.trim()).toBe('Item 1 Header');
307+
// Re-query elements to check new DOM order
308+
setupTriggerAndPanels();
309+
310+
expect(triggerElements.length).toBe(3);
311+
expect(triggerElements[0].textContent?.trim()).toBe('Item 3 Header');
312+
expect(triggerElements[2].textContent?.trim()).toBe('Item 1 Header');
313313
});
314314

315315
describe('wrap behavior', () => {

src/aria/private/accordion/accordion.spec.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,5 +322,49 @@ describe('Accordion Pattern', () => {
322322
expect(triggerPatterns[1].expanded()).toBeTrue();
323323
});
324324
});
325+
326+
describe('AccordionTriggerPattern methods', () => {
327+
it('should expand via open()', () => {
328+
expect(triggerPatterns[0].expanded()).toBeFalse();
329+
triggerPatterns[0].open();
330+
expect(triggerPatterns[0].expanded()).toBeTrue();
331+
});
332+
333+
it('should collapse via close()', () => {
334+
triggerPatterns[0].expanded.set(true);
335+
expect(triggerPatterns[0].expanded()).toBeTrue();
336+
triggerPatterns[0].close();
337+
expect(triggerPatterns[0].expanded()).toBeFalse();
338+
});
339+
340+
it('should toggle via toggle()', () => {
341+
expect(triggerPatterns[0].expanded()).toBeFalse();
342+
triggerPatterns[0].toggle();
343+
expect(triggerPatterns[0].expanded()).toBeTrue();
344+
345+
triggerPatterns[0].toggle();
346+
expect(triggerPatterns[0].expanded()).toBeFalse();
347+
});
348+
});
349+
350+
describe('softDisabled behavior', () => {
351+
it('should compute hardDisabled as true when disabled=true and softDisabled=false', () => {
352+
triggerInputs[0].disabled.set(true);
353+
groupInputs.softDisabled.set(false);
354+
expect(triggerPatterns[0].hardDisabled()).toBeTrue();
355+
});
356+
357+
it('should compute hardDisabled as false when disabled=true and softDisabled=true', () => {
358+
triggerInputs[0].disabled.set(true);
359+
groupInputs.softDisabled.set(true);
360+
expect(triggerPatterns[0].hardDisabled()).toBeFalse();
361+
});
362+
363+
it('should compute hardDisabled as false when disabled=false', () => {
364+
triggerInputs[0].disabled.set(false);
365+
groupInputs.softDisabled.set(false);
366+
expect(triggerPatterns[0].hardDisabled()).toBeFalse();
367+
});
368+
});
325369
});
326370
});

0 commit comments

Comments
 (0)