@@ -8,8 +8,15 @@ import {
88 resolveAccordionExpanded ,
99 toggleAccordionExpanded ,
1010} from "../accordion.js" ;
11+ import type { VNode } from "../types.js" ;
1112import { ui } from "../ui.js" ;
1213
14+ function childSummary ( child : VNode ) : string {
15+ if ( child . kind === "text" ) return child . text ;
16+ if ( child . kind === "button" ) return child . props . label ;
17+ return child . kind ;
18+ }
19+
1320const baseProps = {
1421 id : "acc-main" ,
1522 items : [
@@ -105,18 +112,24 @@ describe("accordion vnode construction", () => {
105112 const children = buildAccordionChildren ( baseProps ) ;
106113 assert . equal ( children [ 0 ] ?. kind , "focusZone" ) ;
107114 if ( children [ 0 ] ?. kind !== "focusZone" ) return ;
108- assert . equal ( children [ 0 ] . props . id , getAccordionHeadersZoneId ( baseProps . id ) ) ;
109- assert . equal ( children [ 0 ] . children . length , 3 ) ;
115+ const zone = children [ 0 ] ;
116+ assert . equal ( zone . props . id , getAccordionHeadersZoneId ( baseProps . id ) ) ;
117+ assert . equal ( zone . children . length , 4 ) ;
118+ assert . deepEqual ( zone . children . map ( childSummary ) , [
119+ "> Intro" ,
120+ "v API" ,
121+ "api-content" ,
122+ "> FAQ" ,
123+ ] ) ;
110124 } ) ;
111125
112- test ( "buildAccordionChildren appends expanded panel content " , ( ) => {
126+ test ( "buildAccordionChildren renders expanded panel directly after its header " , ( ) => {
113127 const children = buildAccordionChildren ( { ...baseProps , expanded : [ "faq" ] } ) ;
114- assert . equal ( children . length , 2 ) ;
115- const content = children [ 1 ] ;
116- assert . equal ( content ?. kind , "text" ) ;
117- if ( content ?. kind === "text" ) {
118- assert . equal ( content . text , "faq-content" ) ;
119- }
128+ assert . equal ( children . length , 1 ) ;
129+ const zone = children [ 0 ] ;
130+ assert . equal ( zone ?. kind , "focusZone" ) ;
131+ if ( zone ?. kind !== "focusZone" ) return ;
132+ assert . deepEqual ( zone . children . map ( childSummary ) , [ "> Intro" , "> API" , "v FAQ" , "faq-content" ] ) ;
120133 } ) ;
121134
122135 test ( "buildAccordionChildren in single mode keeps first expanded panel" , ( ) => {
@@ -125,18 +138,17 @@ describe("accordion vnode construction", () => {
125138 expanded : [ "faq" , "intro" ] ,
126139 allowMultiple : false ,
127140 } ) ;
128- assert . equal ( children . length , 2 ) ;
129- const content = children [ 1 ] ;
130- assert . equal ( content ?. kind , "text" ) ;
131- if ( content ?. kind === "text" ) {
132- assert . equal ( content . text , "faq-content" ) ;
133- }
141+ assert . equal ( children . length , 1 ) ;
142+ const zone = children [ 0 ] ;
143+ assert . equal ( zone ?. kind , "focusZone" ) ;
144+ if ( zone ?. kind !== "focusZone" ) return ;
145+ assert . deepEqual ( zone . children . map ( childSummary ) , [ "> Intro" , "> API" , "v FAQ" , "faq-content" ] ) ;
134146 } ) ;
135147
136148 test ( "createAccordionVNode emits accordion kind" , ( ) => {
137149 const vnode = createAccordionVNode ( baseProps ) ;
138150 assert . equal ( vnode . kind , "accordion" ) ;
139- assert . equal ( vnode . children . length , 2 ) ;
151+ assert . equal ( vnode . children . length , 1 ) ;
140152 } ) ;
141153
142154 test ( "ui.accordion returns a layout-transparent composite wrapper vnode" , ( ) => {
0 commit comments