@@ -352,3 +352,104 @@ describe("Navigation pattern tests - Mark items based on URL", () => {
352352        expect ( document . querySelector ( ".current a" ) ) . toBe ( it4 ) ; 
353353    } ) ; 
354354} ) ; 
355+ 
356+ describe ( "Navigation pattern tests - Mark items based based clicking without pat-inject." ,  ( )  =>  { 
357+     beforeEach ( ( )  =>  { 
358+         document . body . innerHTML  =  "" ; 
359+     } ) ; 
360+ 
361+     afterEach ( ( )  =>  { 
362+         document . body . innerHTML  =  "" ; 
363+     } ) ; 
364+ 
365+     it ( "navigation roundtrip" ,  ( )  =>  { 
366+         document . body . innerHTML  =  ` 
367+           <nav class="pat-navigation" 
368+                data-pat-navigation="in-path-class: inPath"> 
369+             <ul> 
370+               <li class="current"> 
371+                 <a class="current" href="/home">Home</a> 
372+               </li> 
373+               <li> 
374+                 <a href="/path1">p1</a> 
375+               </li> 
376+               <li> 
377+                 <a href="/path2">p2</a> 
378+                 <ul> 
379+                   <li> 
380+                     <a href="/path2/path2.1">p2.1</a> 
381+                   </li> 
382+                   <li> 
383+                     <a href="/path2/path2.2">p2.2</a> 
384+                     <ul> 
385+                       <li> 
386+                         <a href="/path2/path2.2/path2.2.1">p2.2.1</a> 
387+                       </li> 
388+                       <li> 
389+                         <a href="/path2/path2.2/path2.2.2">p2.2.2</a> 
390+                       </li> 
391+                     </ul> 
392+                   </li> 
393+                 </ul> 
394+               </li> 
395+             </ul> 
396+           </nav> 
397+         ` ; 
398+ 
399+         const  instance  =  new  Pattern ( document . querySelector ( ".pat-navigation" ) ) ; 
400+ 
401+         const  it0  =  document . querySelector ( "a[href='/home']" ) ; 
402+         const  it1  =  document . querySelector ( "a[href='/path1']" ) ; 
403+         const  it2  =  document . querySelector ( "a[href='/path2']" ) ; 
404+         const  it21  =  document . querySelector ( "a[href='/path2/path2.1']" ) ; 
405+         const  it22  =  document . querySelector ( "a[href='/path2/path2.2']" ) ; 
406+         const  it221  =  document . querySelector ( "a[href='/path2/path2.2/path2.2.1']" ) ; 
407+         const  it222  =  document . querySelector ( "a[href='/path2/path2.2/path2.2.2']" ) ; 
408+ 
409+         expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ; 
410+         expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 0 ) ; 
411+         expect ( document . querySelector ( ".current a" ) ) . toBe ( it0 ) ; 
412+ 
413+         instance . clear_items ( ) ; 
414+         it1 . click ( ) ; 
415+ 
416+         expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ; 
417+         expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 0 ) ; 
418+         expect ( document . querySelector ( ".current a" ) ) . toBe ( it1 ) ; 
419+ 
420+         instance . clear_items ( ) ; 
421+         it2 . click ( ) ; 
422+ 
423+         expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ; 
424+         expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 0 ) ; 
425+         expect ( document . querySelector ( ".current a" ) ) . toBe ( it2 ) ; 
426+ 
427+         instance . clear_items ( ) ; 
428+         it21 . click ( ) ; 
429+ 
430+         expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ; 
431+         expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 2 ) ; 
432+         expect ( document . querySelector ( ".current a" ) ) . toBe ( it21 ) ; 
433+ 
434+         instance . clear_items ( ) ; 
435+         it22 . click ( ) ; 
436+ 
437+         expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ; 
438+         expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 2 ) ; 
439+         expect ( document . querySelector ( ".current a" ) ) . toBe ( it22 ) ; 
440+ 
441+         instance . clear_items ( ) ; 
442+         it221 . click ( ) ; 
443+ 
444+         expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ; 
445+         expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 4 ) ; 
446+         expect ( document . querySelector ( ".current a" ) ) . toBe ( it221 ) ; 
447+ 
448+         instance . clear_items ( ) ; 
449+         it222 . click ( ) ; 
450+ 
451+         expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ; 
452+         expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 4 ) ; 
453+         expect ( document . querySelector ( ".current a" ) ) . toBe ( it222 ) ; 
454+     } ) ; 
455+ } ) ; 
0 commit comments