@@ -434,7 +434,7 @@ describe('settings mode toggle', () => {
434434 const advancedDetails = placeholder . querySelector ( 'details' ) ;
435435 expect ( advancedDetails ) . not . toBeNull ( ) ;
436436 expect ( advancedDetails . hasAttribute ( 'open' ) ) . toBe ( true ) ;
437- expect ( initAdvancedSettingsSpy ) . toHaveBeenCalledTimes ( 1 ) ;
437+ expect ( initAdvancedSettingsSpy ) . toHaveBeenCalledTimes ( 2 ) ;
438438 expect ( window . wp . a11y . speak ) . toHaveBeenCalledWith ( 'Mode avancé activé. Les réglages supplémentaires sont visibles.' , 'polite' ) ;
439439 } ) ;
440440
@@ -461,4 +461,70 @@ describe('settings mode toggle', () => {
461461 expect ( window . wp . a11y . speak ) . toHaveBeenCalledWith ( 'Impossible d’enregistrer votre préférence pour le moment.' , 'assertive' ) ;
462462 expect ( toast . warning ) . toHaveBeenCalledWith ( 'Impossible d’enregistrer votre préférence pour le moment.' ) ;
463463 } ) ;
464+
465+ it ( 'insère les réglages avancés quand le gabarit utilise un élément template natif' , async ( ) => {
466+ initAdvancedSettingsSpy . mockClear ( ) ;
467+ $ . post . mockClear ( ) ;
468+ postDeferred = $ . Deferred ( ) ;
469+ $ . post . mockReturnValue ( postDeferred . promise ( ) ) ;
470+
471+ document . body . innerHTML = `
472+ <div class="blc-settings-mode" data-blc-settings-mode-toggle data-current-mode="simple">
473+ <div class="blc-settings-mode__intro">
474+ <h2 id="blc-settings-mode-title">Niveau de configuration</h2>
475+ <p id="blc-settings-mode-description">Description</p>
476+ </div>
477+ <div class="blc-settings-mode__control">
478+ <span id="blc-settings-mode-state" data-blc-settings-mode-state>Mode simple activé — seuls les réglages essentiels sont visibles.</span>
479+ <button type="button" class="button blc-settings-mode__switch" role="switch" aria-checked="false" aria-labelledby="blc-settings-mode-title blc-settings-mode-state" aria-describedby="blc-settings-mode-description" data-blc-settings-mode-control>
480+ <span data-blc-settings-mode-action>Passer en mode avancé</span>
481+ </button>
482+ </div>
483+ </div>
484+ <div class="blc-settings-groups" data-blc-settings-groups>
485+ <div class="blc-settings-groups__advanced" data-blc-settings-advanced-placeholder></div>
486+ </div>
487+ <template id="blc-settings-advanced-template">
488+ <details class="blc-settings-group blc-settings-group--collapsible" open>
489+ <summary class="blc-settings-group__summary">
490+ <span class="blc-settings-group__title">Réglages avancés</span>
491+ <span class="blc-settings-group__description">Optimisez les performances.</span>
492+ </summary>
493+ <div class="blc-settings-group__content">
494+ <div class="blc-settings-advanced">
495+ <div class="blc-settings-advanced__tabs" role="tablist">
496+ <button type="button" class="blc-settings-advanced__tab is-active" data-blc-target="demo" aria-selected="true" tabindex="0" role="tab">Démo</button>
497+ </div>
498+ <div class="blc-settings-advanced__panels">
499+ <section class="blc-settings-advanced__panel is-active" data-blc-panel="demo"></section>
500+ </div>
501+ </div>
502+ </div>
503+ </details>
504+ </template>
505+ ` ;
506+
507+ window . blcAdminSettings . mode = 'simple' ;
508+
509+ initSettingsModeToggle = createSettingsModeToggle ( $ , {
510+ toast : toast ,
511+ accessibility : { speak : window . wp . a11y . speak } ,
512+ initAdvancedSettings : initAdvancedSettingsSpy
513+ } ) ;
514+
515+ expect ( initSettingsModeToggle ( ) ) . toBe ( true ) ;
516+
517+ const button = document . querySelector ( '[data-blc-settings-mode-control]' ) ;
518+ const placeholder = document . querySelector ( '[data-blc-settings-advanced-placeholder]' ) ;
519+
520+ $ ( button ) . trigger ( 'click' ) ;
521+
522+ expect ( placeholder . querySelector ( '.blc-settings-advanced' ) ) . not . toBeNull ( ) ;
523+ expect ( initAdvancedSettingsSpy ) . toHaveBeenCalled ( ) ;
524+
525+ postDeferred . resolve ( { success : true , data : { mode : 'advanced' } } ) ;
526+ await new Promise ( ( resolve ) => setTimeout ( resolve , 0 ) ) ;
527+
528+ expect ( initAdvancedSettingsSpy ) . toHaveBeenCalledTimes ( 2 ) ;
529+ } ) ;
464530} ) ;
0 commit comments